# HG changeset patch # User Jaroslav Tulach # Date 1354885837 -3600 # Node ID 58bd38caf70dfe17bf896141386a3091f73a76d1 # Parent ee34358037b3199d8c713317e0417b9a8501ccc6# Parent 21c0cf272b0590649a5ad6f5e79d2bb59505d6ec Bringing the support for ordering to the lazyvm branch, so all existing tests pass OK diff -r ee34358037b3 -r 58bd38caf70d vm/src/test/java/org/apidesign/vm4brwsr/CompareVMs.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/CompareVMs.java Fri Dec 07 10:09:50 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/CompareVMs.java Fri Dec 07 14:10:37 2012 +0100 @@ -36,61 +36,14 @@ * @author Jaroslav Tulach */ public final class CompareVMs implements ITest { + private final Run first, second; private final Method m; - private final boolean js; - private final CompareVMs first, second; - private Object value; - private static Invocable code; - private static CharSequence codeSeq; - private CompareVMs(Method m, boolean js) { - this.m = m; - this.js = js; - this.first = null; - this.second = null; - } - - private CompareVMs(Method m, CompareVMs first, CompareVMs second) { + private CompareVMs(Method m, Run first, Run second) { this.first = first; this.second = second; this.m = m; - this.js = false; } - - private static void compileTheCode(Class clazz) throws Exception { - if (code != null) { - return; - } - StringBuilder sb = new StringBuilder(); - class SkipMe extends GenJS { - public SkipMe(Appendable out) { - super(out); - } - - @Override - protected boolean requireReference(String cn) { - if (cn.contains("CompareVMs")) { - return true; - } - return super.requireReference(cn); - } - - - } - SkipMe sm = new SkipMe(sb); - sm.doCompile(CompareVMs.class.getClassLoader(), StringArray.asList( - clazz.getName().replace('.', '/') - )); - - ScriptEngineManager sem = new ScriptEngineManager(); - ScriptEngine js = sem.getEngineByExtension("js"); - - Object res = js.eval(sb.toString()); - Assert.assertTrue(js instanceof Invocable, "It is invocable object: " + res); - code = (Invocable)js; - codeSeq = sb; - } - public static Object[] create(Class clazz) { Method[] arr = clazz.getMethods(); @@ -101,8 +54,8 @@ if (c == null) { continue; } - final CompareVMs real = new CompareVMs(m, false); - final CompareVMs js = new CompareVMs(m, true); + final Run real = new Run(m, false); + final Run js = new Run(m, true); ret[cnt++] = real; ret[cnt++] = js; ret[cnt++] = new CompareVMs(m, real, js); @@ -114,15 +67,65 @@ return r; } - @Test public void runTest() throws Throwable { - if (first != null) { - Object v1 = first.value; - Object v2 = second.value; - if (v1 instanceof Number) { - v1 = ((Number)v1).doubleValue(); + @Test(dependsOnGroups = "run") public void compareResults() throws Throwable { + Object v1 = first.value; + Object v2 = second.value; + if (v1 instanceof Number) { + v1 = ((Number)v1).doubleValue(); + } + Assert.assertEquals(v1, v2, "Comparing results"); + } + + @Override + public String getTestName() { + return m.getName() + "[Compare]"; + } + + public static final class Run implements ITest { + private final Method m; + private final boolean js; + Object value; + private static Invocable code; + private static CharSequence codeSeq; + + private Run(Method m, boolean js) { + this.m = m; + this.js = js; + } + + private static void compileTheCode(Class clazz) throws Exception { + if (code != null) { + return; } - Assert.assertEquals(v1, v2, "Comparing results"); - } else { + StringBuilder sb = new StringBuilder(); + class SkipMe extends GenJS { + + public SkipMe(Appendable out) { + super(out); + } + + @Override + protected boolean requireReference(String cn) { + if (cn.contains("CompareVMs")) { + return true; + } + return super.requireReference(cn); + } + } + SkipMe sm = new SkipMe(sb); + sm.doCompile(CompareVMs.class.getClassLoader(), StringArray.asList( + clazz.getName().replace('.', '/'))); + + ScriptEngineManager sem = new ScriptEngineManager(); + ScriptEngine js = sem.getEngineByExtension("js"); + + Object res = js.eval(sb.toString()); + Assert.assertTrue(js instanceof Invocable, "It is invocable object: " + res); + code = (Invocable) js; + codeSeq = sb; + } + + @Test(groups = "run") public void executeCode() throws Throwable { if (js) { try { compileTheCode(m.getDeclaringClass()); @@ -136,13 +139,9 @@ value = m.invoke(m.getDeclaringClass().newInstance()); } } - } - - @Override - public String getTestName() { - if (first != null) { - return m.getName() + "[Compare]"; + @Override + public String getTestName() { + return m.getName() + (js ? "[JavaScript]" : "[Java]"); } - return m.getName() + (js ? "[JavaScript]" : "[Java]"); } }