rt/vm/src/test/java/org/apidesign/vm4brwsr/TestVM.java
branchclosure
changeset 1493 234fea368401
parent 1491 4a1398eff4fb
child 1495 d5dd07b45f79
     1.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/TestVM.java	Sat Apr 26 21:30:06 2014 +0200
     1.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/TestVM.java	Sun Apr 27 22:40:17 2014 +0200
     1.3 @@ -152,6 +152,34 @@
     1.4              return null;
     1.5          }
     1.6      }
     1.7 +    
     1.8 +    static TestVM compileClassAndResources(StringBuilder sb, ScriptEngine[] eng, String name, String... resources) throws ScriptException, IOException {
     1.9 +        if (sb == null) {
    1.10 +            sb = new StringBuilder();
    1.11 +        }
    1.12 +        Bck2Brwsr b2b = Bck2Brwsr.newCompiler().
    1.13 +            resources(new EmulationResources()).
    1.14 +            addRootClasses(name).
    1.15 +            addResources(resources).
    1.16 +            library(false);
    1.17 +        b2b.generate(sb);
    1.18 +        ScriptEngineManager sem = new ScriptEngineManager();
    1.19 +        ScriptEngine js = sem.getEngineByExtension("js");
    1.20 +        if (eng != null) {
    1.21 +            eng[0] = js;
    1.22 +        }
    1.23 +        try {
    1.24 +            Object res = js.eval(sb.toString());
    1.25 +            assertTrue(js instanceof Invocable, "It is invocable object: " + res);
    1.26 +            return new TestVM((Invocable) js, sb);
    1.27 +        } catch (Exception ex) {
    1.28 +            if (sb.length() > 2000) {
    1.29 +                sb = dumpJS(sb);
    1.30 +            }
    1.31 +            fail("Could not evaluate:" + ex.getClass() + ":" + ex.getMessage() + "\n" + sb, ex);
    1.32 +            return null;
    1.33 +        }
    1.34 +    }
    1.35  
    1.36      Object loadClass(String loadClass, String name) throws ScriptException, NoSuchMethodException {
    1.37          return code.invokeMethod(bck2brwsr, "loadClass", Exceptions.class.getName());