javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ProcessPageTest.java
changeset 813 2fa85847ccf7
parent 711 333326d65bf9
child 834 b0b23e5ebf9d
     1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ProcessPageTest.java	Mon Feb 11 19:55:00 2013 +0100
     1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ProcessPageTest.java	Tue Mar 05 19:00:36 2013 +0100
     1.3 @@ -36,11 +36,12 @@
     1.4          assertNotNull(is, "Sample HTML page found");
     1.5          ProcessPage res = ProcessPage.readPage(is);
     1.6          final Set<String> ids = res.ids();
     1.7 -        assertEquals(ids.size(), 3, "Three ids found: " + ids);
     1.8 +        assertEquals(ids.size(), 4, "Four ids found: " + ids);
     1.9          
    1.10          assertEquals(res.tagNameForId("pg.title"), "title");
    1.11          assertEquals(res.tagNameForId("pg.button"), "button");
    1.12          assertEquals(res.tagNameForId("pg.text"), "input");
    1.13 +        assertEquals(res.tagNameForId("pg.canvas"), "canvas");
    1.14      }
    1.15      
    1.16      @Test public void testCompileAndRunPageController() throws Exception {
    1.17 @@ -53,11 +54,13 @@
    1.18              + "doc.title.innerHTML = 'nothing';\n"
    1.19              + "doc.text = new Object();\n"
    1.20              + "doc.text.value = 'something';\n"
    1.21 +            + "doc.canvas = new Object();\n"
    1.22              + "doc.getElementById = function(id) {\n"
    1.23              + "    switch(id) {\n"
    1.24              + "      case 'pg.button': return doc.button;\n"
    1.25              + "      case 'pg.title': return doc.title;\n"
    1.26              + "      case 'pg.text': return doc.text;\n"
    1.27 +            + "      case 'pg.canvas': return doc.canvas;\n"
    1.28              + "    }\n"
    1.29              + "    throw id;\n"
    1.30              + "  }\n"
    1.31 @@ -92,11 +95,13 @@
    1.32              + "doc.title.innerHTML = 'nothing';\n"
    1.33              + "doc.text = new Object();\n"
    1.34              + "doc.text.value = 'something';\n"
    1.35 +            + "doc.canvas = new Object();\n"
    1.36              + "doc.getElementById = function(id) {\n"
    1.37              + "    switch(id) {\n"
    1.38              + "      case 'pg.button': return doc.button;\n"
    1.39              + "      case 'pg.title': return doc.title;\n"
    1.40              + "      case 'pg.text': return doc.text;\n"
    1.41 +            + "      case 'pg.canvas': return doc.canvas;\n"
    1.42              + "    }\n"
    1.43              + "    throw id;\n"
    1.44              + "  }\n"
    1.45 @@ -123,6 +128,52 @@
    1.46          assertEquals(ret, "pg.title", "Title has been passed to the method argument");
    1.47      }
    1.48  
    1.49 +    @Test public void clickWithArgumentAndParameterCalled() throws Exception {
    1.50 +        StringBuilder sb = new StringBuilder();
    1.51 +        sb.append(
    1.52 +              "var window = new Object();\n"
    1.53 +            + "var doc = new Object();\n"
    1.54 +            + "var eventObject = new Object();\n"
    1.55 +            + "eventObject.layerX = 100;\n"
    1.56 +            + "doc.button = new Object();\n"
    1.57 +            + "doc.title = new Object();\n"
    1.58 +            + "doc.title.innerHTML = 'nothing';\n"
    1.59 +            + "doc.text = new Object();\n"
    1.60 +            + "doc.text.value = 'something';\n"
    1.61 +            + "doc.canvas = new Object();\n"
    1.62 +            + "doc.canvas.width = 200;\n"                
    1.63 +            + "doc.getElementById = function(id) {\n"
    1.64 +            + "    switch(id) {\n"
    1.65 +            + "      case 'pg.button': return doc.button;\n"
    1.66 +            + "      case 'pg.title': return doc.title;\n"
    1.67 +            + "      case 'pg.text': return doc.text;\n"
    1.68 +            + "      case 'pg.canvas': return doc.canvas;\n"
    1.69 +            + "    }\n"
    1.70 +            + "    throw id;\n"
    1.71 +            + "  }\n"
    1.72 +            + "\n"
    1.73 +            + "function clickAndCheck() {\n"
    1.74 +            + "  doc.canvas.onclick(eventObject);\n"
    1.75 +            + "  return doc.canvas.width.toString();\n"
    1.76 +            + "};\n"
    1.77 +            + "\n"
    1.78 +            + "window.document = doc;\n"
    1.79 +        );
    1.80 +        Invocable i = compileClass(sb, 
    1.81 +            "org/apidesign/bck2brwsr/htmlpage/PageController"
    1.82 +        );
    1.83 +
    1.84 +        Object ret = null;
    1.85 +        try {
    1.86 +            ret = i.invokeFunction("clickAndCheck");
    1.87 +        } catch (ScriptException ex) {
    1.88 +            fail("Execution failed in " + sb, ex);
    1.89 +        } catch (NoSuchMethodException ex) {
    1.90 +            fail("Cannot find method in " + sb, ex);
    1.91 +        }
    1.92 +       assertEquals(ret, "100", "layerX has been passed to the method argument");
    1.93 +    }
    1.94 +    
    1.95      static Invocable compileClass(StringBuilder sb, String... names) throws ScriptException, IOException {
    1.96          if (sb == null) {
    1.97              sb = new StringBuilder();