1 33 34 package edu.rice.cs.drjava.model.repl.newjvm; 35 36 import edu.rice.cs.drjava.DrJavaTestCase; 37 import edu.rice.cs.drjava.model.repl.DynamicJavaAdapter; 38 import edu.rice.cs.drjava.model.repl.ExceptionReturnedException; 39 import edu.rice.cs.drjava.model.repl.JavaInterpreter; 40 41 import java.util.Hashtable ; 42 43 46 public final class InterpreterJVMTest extends DrJavaTestCase { 47 private InterpreterJVM jvm = InterpreterJVM.ONLY; 48 private Hashtable <String , InterpreterData> _debugInterpreters; 49 private JavaInterpreter _interpreter1; 50 private JavaInterpreter _interpreter2; 51 private JavaInterpreter _interpreter3; 52 53 private void _addInterpreter(String name, JavaInterpreter interpreter) { 54 InterpreterJVM.ONLY.addInterpreter(name, interpreter); 55 } 56 57 public void setUp() throws Exception { 58 super.setUp(); 59 _debugInterpreters = InterpreterJVM.ONLY.getInterpreters(); 60 _interpreter1 = new DynamicJavaAdapter(new ClassPathManager()); 61 _interpreter2 = new DynamicJavaAdapter(new ClassPathManager()); 62 _interpreter3 = new DynamicJavaAdapter(new ClassPathManager()); 63 } 64 67 public void testAddNamedDebugInterpreter() { 68 assertTrue(_debugInterpreters.isEmpty()); 69 _addInterpreter("interpreter1", _interpreter1); 70 assertSame(_interpreter1, _debugInterpreters.get("interpreter1").getInterpreter()); 71 assertTrue(!_debugInterpreters.containsKey("interpreter2")); 72 73 _addInterpreter("interpreter2", _interpreter2); 74 assertSame(_interpreter1, _debugInterpreters.get("interpreter1").getInterpreter()); 75 assertSame(_interpreter2, _debugInterpreters.get("interpreter2").getInterpreter()); 76 77 try { 78 _addInterpreter("interpreter1", _interpreter3); 79 fail(); 80 } 81 catch (IllegalArgumentException ex) { 82 assertSame(_interpreter1, _debugInterpreters.get("interpreter1").getInterpreter()); 83 assertSame(_interpreter2, _debugInterpreters.get("interpreter2").getInterpreter()); 84 } 85 } 86 87 90 public void testSwitchingActiveInterpreter() throws ExceptionReturnedException { 91 String var0 = "stuff"; 92 String var1 = "junk"; 93 String var2 = "raargh"; 94 Object val0 = new Byte ("5"); 95 Object val1 = new Short ("2"); 96 Object val2 = new Long (2782); 97 _addInterpreter("1",_interpreter1); 98 _addInterpreter("2",_interpreter2); 99 100 JavaInterpreter interpreter = (JavaInterpreter) jvm.getActiveInterpreter(); 101 interpreter.defineVariable(var0, val0); 102 assertEquals(val0, interpreter.interpret(var0)); 103 104 jvm.setActiveInterpreter("1"); 105 interpreter = (JavaInterpreter) jvm.getActiveInterpreter(); 106 try { 107 interpreter.interpret(var0); 108 fail(); 109 } 110 catch (ExceptionReturnedException ex) { 111 } 113 interpreter.defineVariable(var1,val1); 114 assertEquals(val1, interpreter.interpret(var1)); 115 116 jvm.setActiveInterpreter("2"); 117 interpreter = (JavaInterpreter) jvm.getActiveInterpreter(); 118 try { 119 interpreter.interpret(var0); 120 fail(); 121 } 122 catch (ExceptionReturnedException ex) { 123 } 124 try { 125 interpreter.interpret(var1); 126 fail(); 127 } 128 catch (ExceptionReturnedException ex) { 129 } 131 interpreter.defineVariable(var2,val2); 132 assertEquals(val2, interpreter.interpret(var2)); 133 134 jvm.setToDefaultInterpreter(); 135 interpreter = (JavaInterpreter) jvm.getActiveInterpreter(); 136 try { 137 interpreter.interpret(var1); 138 fail(); 139 } 140 catch (ExceptionReturnedException ex) { 141 } 142 try { 143 interpreter.interpret(var2); 144 fail(); 145 } 146 catch (ExceptionReturnedException ex) { 147 } 149 assertEquals(val0, jvm.getActiveInterpreter().interpret(var0)); 150 151 jvm.setActiveInterpreter("1"); 152 interpreter = (JavaInterpreter) jvm.getActiveInterpreter(); 153 try { 154 interpreter.interpret(var0); 155 fail(); 156 } 157 catch (ExceptionReturnedException ex) { 158 } 159 try { 160 interpreter.interpret(var2); 161 fail(); 162 } 163 catch (ExceptionReturnedException ex) { 164 } 166 assertEquals(val1, interpreter.interpret(var1)); 167 168 try { 169 jvm.setActiveInterpreter("not an interpreter"); 170 fail(); 171 } 172 catch (IllegalArgumentException ex) { 173 assertEquals("Interpreter 'not an interpreter' does not exist.", ex.getMessage()); 174 } 175 } 176 } 177 | Popular Tags |