vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java
branchlazy
changeset 214 a0f4460130b9
parent 213 9dc53108d3df
child 215 cdd00892d06e
     1.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java	Wed Nov 28 13:41:33 2012 +0100
     1.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazyTest.java	Wed Nov 28 14:51:52 2012 +0100
     1.3 @@ -42,16 +42,21 @@
     1.4          StringBuilder sb = new StringBuilder();
     1.5          
     1.6          sb.append("\nfunction test(clazz, as, method) {");
     1.7 -        sb.append("\n  var l = new lazyVM();");
     1.8 +        sb.append("\n  var l = new lazyVM(this);");
     1.9          sb.append("\n  var c = l.loadClass(clazz, as);");
    1.10          sb.append("\n  return c[method]();");
    1.11          sb.append("\n}");
    1.12          
    1.13          
    1.14 -        sb.append("\nfunction lazyVM() {");
    1.15 +        sb.append("\nfunction lazyVM(global) {");
    1.16          sb.append("\n  var self = this;");
    1.17 -        sb.append("\n  this.constructor.prototype.loadClass = function(res, name) {");
    1.18 -        sb.append("\n    var script = org_apidesign_vm4brwsr_VMLazy(true).toJavaScriptLjava_lang_StringAB(loader.get(res + '.class'));");
    1.19 +        sb.append("\n  var glb = global;");
    1.20 +        sb.append("\n  lazyVM.prototype.loadClass = function(res, name) {");
    1.21 +        sb.append("\n    var script = org_apidesign_vm4brwsr_VMLazy(true)."
    1.22 +            + "toJavaScriptLjava_lang_StringLjava_lang_ObjectLjava_lang_ObjectAB("
    1.23 +            + "  glb, self,"
    1.24 +            + "  loader.get(res + '.class')"
    1.25 +            + ");");
    1.26          sb.append("\n    try {");
    1.27          sb.append("\n      new Function(script)(self, name);");
    1.28          sb.append("\n    } catch (ex) {");
    1.29 @@ -75,7 +80,12 @@
    1.30              "org/apidesign/vm4brwsr/StaticMethod", "org_apidesign_vm4brwsr_StaticMethod", "minusOneI"
    1.31          );
    1.32      }
    1.33 -    
    1.34 +
    1.35 +    @Test public void loadDependantClass() throws Exception {
    1.36 +        assertExec("Trying to get zero", "test", Double.valueOf(0),
    1.37 +            "org/apidesign/vm4brwsr/InstanceSub", "org_apidesign_vm4brwsr_InstanceSub", "recallDblD"
    1.38 +        );
    1.39 +    }
    1.40  
    1.41      private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
    1.42          Object ret = null;