1.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/TestVM.java Thu Apr 24 18:05:21 2014 +0200
1.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/TestVM.java Fri Apr 25 09:59:48 2014 +0200
1.3 @@ -125,6 +125,34 @@
1.4 return null;
1.5 }
1.6 }
1.7 +
1.8 + static TestVM compileClassAsExtension(StringBuilder sb, ScriptEngine[] eng, String... names) throws ScriptException, IOException {
1.9 + if (sb == null) {
1.10 + sb = new StringBuilder();
1.11 + }
1.12 + Bck2Brwsr.generate(sb, new EmulationResources());
1.13 + Bck2Brwsr b2b = Bck2Brwsr.newCompiler().
1.14 + resources(new EmulationResources()).
1.15 + addRootClasses(names).
1.16 + extension(true);
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());