# HG changeset patch # User Jaroslav Tulach # Date 1349977397 25200 # Node ID e8438996d406eab0054ea64af0612fa6585e989b # Parent 2354255a1844f753a276197a7419fc066dc9efea Less compilation during test execution diff -r 2354255a1844 -r e8438996d406 vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Oct 11 10:03:21 2012 -0700 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Oct 11 10:43:17 2012 -0700 @@ -886,7 +886,8 @@ return i; } - private void addReference(String cn) { + private void addReference(String cn) throws IOException { + out.append(" /* needs ").append(cn).append(" */"); if (references != null) { references.add(cn); } diff -r 2354255a1844 -r e8438996d406 vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Thu Oct 11 10:03:21 2012 -0700 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Thu Oct 11 10:43:17 2012 -0700 @@ -21,6 +21,7 @@ import javax.script.ScriptException; import org.testng.annotations.Test; import static org.testng.Assert.*; +import org.testng.annotations.BeforeClass; /** * @@ -28,7 +29,7 @@ */ public class ArrayTest { @Test public void verifySimpleIntOperation() throws Exception { - assertExec("CheckTheSum", "org_apidesign_vm4brwsr_Array_simpleI", + assertExec("CheckTheSum", "org_apidesign_vm4brwsr_Array_simpleI", Double.valueOf(15) ); } @@ -38,19 +39,25 @@ ); } - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { + private static CharSequence codeSeq; + private static Invocable code; + + @BeforeClass + public void compileTheCode() throws Exception { StringBuilder sb = new StringBuilder(); - Invocable i = StaticMethodTest.compileClass(sb, + code = StaticMethodTest.compileClass(sb, "org/apidesign/vm4brwsr/Array" ); - + codeSeq = sb; + } + private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { Object ret = null; try { - ret = i.invokeFunction(methodName, args); + ret = code.invokeFunction(methodName, args); } catch (ScriptException ex) { - fail("Execution failed in " + sb, ex); + fail("Execution failed in\n" + codeSeq, ex); } catch (NoSuchMethodException ex) { - fail("Cannot find method in " + sb, ex); + fail("Cannot find method in\n" + codeSeq, ex); } if (ret == null && expRes == null) { return; @@ -58,6 +65,6 @@ if (expRes.equals(ret)) { return; } - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + sb); + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq); } } diff -r 2354255a1844 -r e8438996d406 vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Thu Oct 11 10:03:21 2012 -0700 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/InstanceTest.java Thu Oct 11 10:43:17 2012 -0700 @@ -21,6 +21,8 @@ import javax.script.ScriptException; import org.testng.annotations.Test; import static org.testng.Assert.*; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeTest; /** * @@ -113,19 +115,29 @@ return "org/apidesign/vm4brwsr/Instance"; } + private static CharSequence codeSeq; + private static Invocable code; + + @BeforeTest + public void compileTheCode() throws Exception { + if (codeSeq == null) { + StringBuilder sb = new StringBuilder(); + code = StaticMethodTest.compileClass(sb, startCompilationWith()); + codeSeq = sb; + } + } + private void assertExec( String msg, String methodName, Object expRes, Object... args ) throws Exception { - StringBuilder sb = new StringBuilder(); - Invocable i = StaticMethodTest.compileClass(sb, startCompilationWith()); - + Object ret = null; try { - ret = i.invokeFunction(methodName, args); + ret = code.invokeFunction(methodName, args); } catch (ScriptException ex) { - fail("Execution failed in " + sb, ex); + fail("Execution failed in\n" + codeSeq, ex); } catch (NoSuchMethodException ex) { - fail("Cannot find method in " + sb, ex); + fail("Cannot find method in\n" + codeSeq, ex); } if (ret == null && expRes == null) { return; @@ -133,7 +145,7 @@ if (expRes.equals(ret)) { return; } - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + sb); + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq); } diff -r 2354255a1844 -r e8438996d406 vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Thu Oct 11 10:03:21 2012 -0700 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Thu Oct 11 10:43:17 2012 -0700 @@ -23,6 +23,7 @@ import javax.script.ScriptEngineManager; import javax.script.ScriptException; import static org.testng.Assert.*; +import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** Checks the basic behavior of the translator. @@ -193,17 +194,27 @@ ); } + private static CharSequence codeSeq; + private static Invocable code; + + @BeforeClass + public void compileTheCode() throws Exception { + StringBuilder sb = new StringBuilder(); + code = compileClass(sb, "org/apidesign/vm4brwsr/StaticMethod"); + codeSeq = sb; + } + + private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { StringBuilder sb = new StringBuilder(); - Invocable i = compileClass(sb, "org/apidesign/vm4brwsr/StaticMethod"); Object ret = null; try { - ret = i.invokeFunction(methodName, args); + ret = code.invokeFunction(methodName, args); } catch (ScriptException ex) { - fail("Execution failed in " + sb, ex); + fail("Execution failed in\n" + codeSeq, ex); } catch (NoSuchMethodException ex) { - fail("Cannot find method in " + sb, ex); + fail("Cannot find method in\n" + codeSeq, ex); } if (ret == null && expRes == null) { return; @@ -211,7 +222,7 @@ if (expRes != null && expRes.equals(ret)) { return; } - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + sb); + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq); } diff -r 2354255a1844 -r e8438996d406 vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Thu Oct 11 10:03:21 2012 -0700 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Thu Oct 11 10:43:17 2012 -0700 @@ -4,6 +4,7 @@ import javax.script.ScriptException; import org.testng.annotations.Test; import static org.testng.Assert.*; +import org.testng.annotations.BeforeClass; /** * @@ -36,21 +37,27 @@ @Test public void toStringConcatenationJava() throws Exception { assertEquals("Hello World!5", StringSample.toStringTest(5)); } + private static CharSequence codeSeq; + private static Invocable code; - private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { + @BeforeClass + public void compileTheCode() throws Exception { StringBuilder sb = new StringBuilder(); - Invocable i = StaticMethodTest.compileClass(sb, + code = StaticMethodTest.compileClass(sb, "org/apidesign/vm4brwsr/StringSample", "java/lang/String" ); - + codeSeq = sb; + } + + private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { Object ret = null; try { - ret = i.invokeFunction(methodName, args); + ret = code.invokeFunction(methodName, args); } catch (ScriptException ex) { - fail("Execution failed in " + sb, ex); + fail("Execution failed in\n" + codeSeq, ex); } catch (NoSuchMethodException ex) { - fail("Cannot find method in " + sb, ex); + fail("Cannot find method in\n" + codeSeq, ex); } if (ret == null && expRes == null) { return; @@ -58,7 +65,7 @@ if (expRes.equals(ret)) { return; } - assertEquals(ret, expRes, msg + "was: " + ret + "\n" + sb); + assertEquals(ret, expRes, msg + "was: " + ret + "\n" + codeSeq); }