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 Thu May 23 15:33:14 2013 +0200
1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ProcessPageTest.java Fri May 24 07:37:46 2013 +0200
1.3 @@ -17,11 +17,8 @@
1.4 */
1.5 package org.apidesign.bck2brwsr.htmlpage;
1.6
1.7 -import java.io.File;
1.8 -import java.io.FileReader;
1.9 import java.io.IOException;
1.10 import java.io.InputStream;
1.11 -import java.io.PrintWriter;
1.12 import java.util.Set;
1.13 import javax.script.Invocable;
1.14 import javax.script.ScriptEngine;
1.15 @@ -34,7 +31,7 @@
1.16 public class ProcessPageTest {
1.17
1.18
1.19 - @Test public void findsThreeIds() throws IOException {
1.20 + @Test public void findsFourIds() throws IOException {
1.21 InputStream is = ProcessPageTest.class.getResourceAsStream("TestPage.html");
1.22 assertNotNull(is, "Sample HTML page found");
1.23 ProcessPage res = ProcessPage.readPage(is);
1.24 @@ -88,95 +85,95 @@
1.25 assertEquals(ret, "You want this window to be named something", "We expect that the JavaCode performs all the wiring");
1.26 }
1.27
1.28 -// @Test public void clickWithArgumentCalled() throws Exception {
1.29 -// StringBuilder sb = new StringBuilder();
1.30 -// sb.append(
1.31 -// "var window = new Object();\n"
1.32 -// + "var doc = new Object();\n"
1.33 -// + "doc.button = new Object();\n"
1.34 -// + "doc.title = new Object();\n"
1.35 -// + "doc.title.innerHTML = 'nothing';\n"
1.36 -// + "doc.text = new Object();\n"
1.37 -// + "doc.text.value = 'something';\n"
1.38 -// + "doc.canvas = new Object();\n"
1.39 -// + "doc.getElementById = function(id) {\n"
1.40 -// + " switch(id) {\n"
1.41 -// + " case 'pg.button': return doc.button;\n"
1.42 -// + " case 'pg.title': return doc.title;\n"
1.43 -// + " case 'pg.text': return doc.text;\n"
1.44 -// + " case 'pg.canvas': return doc.canvas;\n"
1.45 -// + " }\n"
1.46 -// + " throw id;\n"
1.47 -// + " }\n"
1.48 -// + "\n"
1.49 -// + "function clickAndCheck() {\n"
1.50 -// + " doc.title.onclick();\n"
1.51 -// + " return doc.title.innerHTML.toString();\n"
1.52 -// + "};\n"
1.53 -// + "\n"
1.54 -// + "window.document = doc;\n"
1.55 -// );
1.56 -// Invocable i = compileClass(sb,
1.57 -// "org/apidesign/bck2brwsr/htmlpage/PageController"
1.58 -// );
1.59 -//
1.60 -// Object ret = null;
1.61 -// try {
1.62 -// ret = i.invokeFunction("clickAndCheck");
1.63 -// } catch (ScriptException ex) {
1.64 -// fail("Execution failed in " + sb, ex);
1.65 -// } catch (NoSuchMethodException ex) {
1.66 -// fail("Cannot find method in " + sb, ex);
1.67 -// }
1.68 -// assertEquals(ret, "pg.title", "Title has been passed to the method argument");
1.69 -// }
1.70 + @Test public void clickWithArgumentCalled() throws Exception {
1.71 + StringBuilder sb = new StringBuilder();
1.72 + sb.append(
1.73 + "var window = new Object();\n"
1.74 + + "var doc = new Object();\n"
1.75 + + "doc.button = new Object();\n"
1.76 + + "doc.title = new Object();\n"
1.77 + + "doc.title.innerHTML = 'nothing';\n"
1.78 + + "doc.text = new Object();\n"
1.79 + + "doc.text.value = 'something';\n"
1.80 + + "doc.canvas = new Object();\n"
1.81 + + "doc.getElementById = function(id) {\n"
1.82 + + " switch(id) {\n"
1.83 + + " case 'pg.button': return doc.button;\n"
1.84 + + " case 'pg.title': return doc.title;\n"
1.85 + + " case 'pg.text': return doc.text;\n"
1.86 + + " case 'pg.canvas': return doc.canvas;\n"
1.87 + + " }\n"
1.88 + + " throw id;\n"
1.89 + + " }\n"
1.90 + + "\n"
1.91 + + "function clickAndCheck() {\n"
1.92 + + " doc.title.onclick();\n"
1.93 + + " return doc.title.innerHTML.toString();\n"
1.94 + + "};\n"
1.95 + + "\n"
1.96 + + "window.document = doc;\n"
1.97 + );
1.98 + Invocable i = compileClass(sb,
1.99 + "org/apidesign/bck2brwsr/htmlpage/PageController"
1.100 + );
1.101
1.102 -// @Test public void clickWithArgumentAndParameterCalled() throws Exception {
1.103 -// StringBuilder sb = new StringBuilder();
1.104 -// sb.append(
1.105 -// "var window = new Object();\n"
1.106 -// + "var doc = new Object();\n"
1.107 -// + "var eventObject = new Object();\n"
1.108 -// + "eventObject.layerX = 100;\n"
1.109 -// + "doc.button = new Object();\n"
1.110 -// + "doc.title = new Object();\n"
1.111 -// + "doc.title.innerHTML = 'nothing';\n"
1.112 -// + "doc.text = new Object();\n"
1.113 -// + "doc.text.value = 'something';\n"
1.114 -// + "doc.canvas = new Object();\n"
1.115 -// + "doc.canvas.width = 200;\n"
1.116 -// + "doc.getElementById = function(id) {\n"
1.117 -// + " switch(id) {\n"
1.118 -// + " case 'pg.button': return doc.button;\n"
1.119 -// + " case 'pg.title': return doc.title;\n"
1.120 -// + " case 'pg.text': return doc.text;\n"
1.121 -// + " case 'pg.canvas': return doc.canvas;\n"
1.122 -// + " }\n"
1.123 -// + " throw id;\n"
1.124 -// + " }\n"
1.125 -// + "\n"
1.126 -// + "function clickAndCheck() {\n"
1.127 -// + " doc.canvas.onclick(eventObject);\n"
1.128 -// + " return doc.canvas.width.toString();\n"
1.129 -// + "};\n"
1.130 -// + "\n"
1.131 -// + "window.document = doc;\n"
1.132 -// );
1.133 -// Invocable i = compileClass(sb,
1.134 -// "org/apidesign/bck2brwsr/htmlpage/PageController"
1.135 -// );
1.136 -//
1.137 -// Object ret = null;
1.138 -// try {
1.139 -// ret = i.invokeFunction("clickAndCheck");
1.140 -// } catch (ScriptException ex) {
1.141 -// fail("Execution failed in " + sb, ex);
1.142 -// } catch (NoSuchMethodException ex) {
1.143 -// fail("Cannot find method in " + sb, ex);
1.144 -// }
1.145 -// assertEquals(ret, "100", "layerX has been passed to the method argument");
1.146 -// }
1.147 -//
1.148 + Object ret = null;
1.149 + try {
1.150 + ret = i.invokeFunction("clickAndCheck");
1.151 + } catch (ScriptException ex) {
1.152 + fail("Execution failed in " + sb, ex);
1.153 + } catch (NoSuchMethodException ex) {
1.154 + fail("Cannot find method in " + sb, ex);
1.155 + }
1.156 + assertEquals(ret, "pg.title", "Title has been passed to the method argument");
1.157 + }
1.158 +
1.159 + @Test public void clickWithArgumentAndParameterCalled() throws Exception {
1.160 + StringBuilder sb = new StringBuilder();
1.161 + sb.append(
1.162 + "var window = new Object();\n"
1.163 + + "var doc = new Object();\n"
1.164 + + "var eventObject = new Object();\n"
1.165 + + "eventObject.layerX = 100;\n"
1.166 + + "doc.button = new Object();\n"
1.167 + + "doc.title = new Object();\n"
1.168 + + "doc.title.innerHTML = 'nothing';\n"
1.169 + + "doc.text = new Object();\n"
1.170 + + "doc.text.value = 'something';\n"
1.171 + + "doc.canvas = new Object();\n"
1.172 + + "doc.canvas.width = 200;\n"
1.173 + + "doc.getElementById = function(id) {\n"
1.174 + + " switch(id) {\n"
1.175 + + " case 'pg.button': return doc.button;\n"
1.176 + + " case 'pg.title': return doc.title;\n"
1.177 + + " case 'pg.text': return doc.text;\n"
1.178 + + " case 'pg.canvas': return doc.canvas;\n"
1.179 + + " }\n"
1.180 + + " throw id;\n"
1.181 + + " }\n"
1.182 + + "\n"
1.183 + + "function clickAndCheck() {\n"
1.184 + + " doc.canvas.onclick(eventObject);\n"
1.185 + + " return doc.canvas.width.toString();\n"
1.186 + + "};\n"
1.187 + + "\n"
1.188 + + "window.document = doc;\n"
1.189 + );
1.190 + Invocable i = compileClass(sb,
1.191 + "org/apidesign/bck2brwsr/htmlpage/PageController"
1.192 + );
1.193 +
1.194 + Object ret = null;
1.195 + try {
1.196 + ret = i.invokeFunction("clickAndCheck");
1.197 + } catch (ScriptException ex) {
1.198 + fail("Execution failed in " + sb, ex);
1.199 + } catch (NoSuchMethodException ex) {
1.200 + fail("Cannot find method in " + sb, ex);
1.201 + }
1.202 + assertEquals(ret, "100", "layerX has been passed to the method argument");
1.203 + }
1.204 +
1.205 static Invocable compileClass(StringBuilder sb, String... names) throws ScriptException, IOException {
1.206
1.207 if (sb == null) {
1.208 @@ -195,11 +192,6 @@
1.209 assertTrue(js instanceof Invocable, "It is invocable object: " + res);
1.210 return (Invocable) js;
1.211 } catch (ScriptException ex) {
1.212 -// System.err.println("ex "+ex+ " col "+ex.getColumnNumber());
1.213 -// PrintWriter out = new PrintWriter("filename.txt");
1.214 -// out.println(sb.toString());
1.215 -// out.flush();
1.216 -// out.close();
1.217 fail("Could not compile:\n" , ex);
1.218 return null;
1.219 }