javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ProcessPageTest.java
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();