package bsh; import org.junit.Test; import java.lang.ref.WeakReference; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; public class InterpreterTest { /** * <a href="http://code.google.com/p/beanshell2/issues/detail?id=50">Issue #50</a> */ @Test(timeout = 10000) public void check_for_memory_leak() throws Exception { final WeakReference<Object> reference = new WeakReference<Object>(new Interpreter().eval("x = new byte[1024 * 2024]; return x;")); while (reference.get() != null) { System.gc(); Thread.sleep(100); } } @Test public void check_system_object() throws Exception { TestUtil.eval("bsh.system.foo = \"test\";"); final Object result = TestUtil.eval("return bsh.system.foo;"); assertEquals("test", result); assertNull(TestUtil.eval("return bsh.system.shutdownOnExit;")); Interpreter.setShutdownOnExit(false); assertEquals(Boolean.FALSE, TestUtil.eval("return bsh.system.shutdownOnExit;")); } }