001: /*
002: * TestExceptionPending.java --
003: *
004: * This file tests interp APIs that deal with raising
005: * exceptions in Java APIs. These may involve pending
006: * exceptions from commands that are evaluated.
007: *
008: * Copyright (c) 2006 by Mo DeJong
009: *
010: * See the file "license.terms" for information on usage and redistribution
011: * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
012: *
013: * RCS: @(#) $Id: TestExceptionPending.java,v 1.1 2006/07/26 20:55:27 mdejong Exp $
014: */
015:
016: package tests;
017:
018: import tcl.lang.*;
019:
020: public class TestExceptionPending {
021:
022: public static boolean pending1() {
023: // Create a new Interpreter and then
024: // invoke Interp.eval(), this should
025: // raise a Java exception. This test
026: // checks that an interpreter is created
027: // with the proper flags.
028:
029: Interp interp = new Interp();
030:
031: try {
032: interp.eval("unknown_command");
033: } catch (TclException te) {
034: return true;
035: } finally {
036: interp.dispose();
037: }
038: return false;
039: }
040:
041: public static boolean pending2(Interp interp) {
042: // Invoke Interp.eval(), this should
043: // raise a Java exception because there
044: // is no command with the given name.
045: // This test checks that invoking the
046: // Interp.eval() API from Java will
047: // raise the exception as expected.
048:
049: try {
050: interp.eval("unknown_command");
051: } catch (TclException te) {
052: return true;
053: }
054:
055: return false;
056: }
057:
058: public static boolean pending3(Interp interp) {
059: // Invoke Interp.eval(), this should raise
060: // a Java exception because there is a
061: // runtime error since the variable in
062: // question is not set.
063:
064: try {
065: interp.eval("set unknown_global_variable");
066: } catch (TclException te) {
067: return true;
068: }
069:
070: return false;
071: }
072:
073: public static boolean pending4(Interp interp) {
074: // Throw a Java exception using a test
075: // command implemented in Java. This
076: // exception should be propagated
077: // up the stack to this caller.
078:
079: try {
080: interp.eval("jtest tclexception");
081: } catch (TclException te) {
082: return true;
083: }
084:
085: return false;
086: }
087:
088: public static boolean pending5(Interp interp) {
089: // Throw a Java exception using a test
090: // command implemented in Java. This
091: // exception should be propagated
092: // up the stack to this caller. This
093: // excetpion is not derived from
094: // TclException.
095:
096: try {
097: interp.eval("jtest npe");
098: } catch (TclException npe) {
099: // No-op
100: } catch (NullPointerException npe) {
101: return true;
102: }
103:
104: return false;
105: }
106:
107: }
|