blob: c20ccecd7765e0de0887a8d80616c09a238dcbb3 [file] [log] [blame]
Ben Murdoche902e1a2010-03-29 11:55:47 +01001<html>
2<head>
3<script type="text/javascript">
4
5function testPrimitiveTypes() {
6 return JNIBindingsTest.testPrimitiveTypes(100, 'c', 123.34567890, 456.789, 1234567, 1234567890, 6000, true);
7}
8
9function testObjectTypes() {
10 return JNIBindingsTest.testObjectTypes("Foo", "", {"foo":"bar"}, {});
11}
12
13function testArray() {
14 return JNIBindingsTest.testArray([1,2,3], ['d', 'o', 'g'], [1.2, 2.3, 3.4], [4.5,5.6,6.7], [1,2,3], [4,5,6], [7,8,9], [true, false]);
15}
16
17function testObjectArray() {
18 return JNIBindingsTest.testObjectArray(['Hello', 'World', '!'], [], [{"foo":"bar"}]);
19}
20
21function testObjectMembers() {
22 var foo = {"bool":true,
23 "byte":101,
24 "char":'d',
25 "double":123.456,
26 "float":456.789,
27 "int":102,
28 "long":103,
29 "short":104,
30 "string":"Hello World",
31 "array": [1,2,3],
32 "objArray":["foo", "bar", "baz"],
33 "object": {"foo":1}
34 };
35 return JNIBindingsTest.testObjectMembers(foo.bool, foo.byte, foo.char, foo.double, foo.float, foo.int, foo.long, foo.short, foo.string, foo.array, foo.objArray, foo.object);
36}
37
38function testJSPrimitivesToStringsInJava() {
39 return JNIBindingsTest.testJSPrimitivesToStringsInJava(123, null, 456.789, true, 'd', undefined);
40}
41
42function testJavaReturnTypes() {
43 var expectedBoolReturn = true;
44 var expectedByteReturn = 1;
45 var expectedCharReturn = 98; // 'b'; Currently bindings in JSC and V8 return chars as their ASCII equivalent.
46 var expectedDoubleReturn = 123.456;
47 var expectedFloatReturn = 456.789;
48 var expectedIntReturn = 123;
49 var expectedLongReturn = 1234;
50 var expectedShortReturn = 12345;
51 var expectedStringReturn = "Hello World!";
52
53 var returned = JNIBindingsTest.returnBool();
54 if (returned != expectedBoolReturn) {
55 appendLog("returnBool() failed: expected "+ expectedBoolReturn +", got " + returned);
56 return false;
57 }
58
59 returned = JNIBindingsTest.returnByte();
60 if (returned != expectedByteReturn) {
61 appendLog("returnByte() failed: expected "+ expectedByteReturn +", got " + returned);
62 return false;
63 }
64
65 returned = JNIBindingsTest.returnChar();
66 if (returned != expectedCharReturn) {
67 appendLog("returnChar() failed: expected "+ expectedCharReturn +", got " + returned);
68 return false;
69 }
70
71 returned = JNIBindingsTest.returnDouble();
72 if (returned != expectedDoubleReturn) {
73 appendLog("returnDouble() failed: expected "+ expectedDoubleReturn +", got " + returned);
74 return false;
75 }
76
77 returned = JNIBindingsTest.returnFloat();
78 if (Math.abs(returned - expectedFloatReturn) > 0.001) {
79 appendLog("returnFloat() failed: expected "+ expectedFloatReturn +", got " + returned);
80 return false;
81 }
82
83 returned = JNIBindingsTest.returnInt();
84 if (returned != expectedIntReturn) {
85 appendLog("returnInt() failed: expected "+ expectedIntReturn +", got " + returned);
86 return false;
87 }
88
89 returned = JNIBindingsTest.returnLong();
90 if (returned != expectedLongReturn) {
91 appendLog("returnLong() failed: expected "+ expectedLongReturn +", got " + returned);
92 return false;
93 }
94
95 returned = JNIBindingsTest.returnShort();
96 if (returned != expectedShortReturn) {
97 appendLog("returnShort() failed: expected "+ expectedShortReturn +", got " + returned);
98 return false;
99 }
100
101 returned = JNIBindingsTest.returnString();
102 if (returned != expectedStringReturn) {
103 appendLog("returnString() failed: expected "+ expectedStringReturn +", got " + returned);
104 return false;
105 }
106
107 returned = JNIBindingsTest.returnObject();
108 if (returned == null) {
109 appendLog("returnObject() failed: expected non-null, got " + returned);
110 return false;
111 } else if (returned.x != 0) {
112 // EMULATE_JSC_BINDINGS
113 // Note: the Java sets the x property to 123. JSC and V8 do not support object
114 // members in the bindings though.
115 appendLog("returnObject() failed: expected 'x' property 0, got " + returned.x)
116 return false;
117 } else if (returned.s != undefined) {
118 // EMULATE_JSC_BINDINGS
119 // Note that the java class returned has s set to Hello World. JSC and V8 do not support
120 // getting properties.
121 appendLog("returnObject() failed: expected 's' property undefined, got " + returned.s);
122 return false;
123 } else if (!returned.aMethod()) {
124 appendLog("returnObject() failed: expected 'aMethod' method to return true, got " + returned.aMethod());
125 return false;
126 } else if (returned.anotherMethod() != "Hello World") {
127 appendLog("returnObject() failed: expected 'anotherMethod' to return 'Hello World' got "+ returned.anotherMethod());
128 return false;
129 }
130
131 returned = JNIBindingsTest.returnArray();
132 if (returned != null) {
133 appendLog("returnArray() failed: expected null, got " + returned);
134 return false;
135 }
136
137 returned = JNIBindingsTest.returnVoid();
138 if (returned != null) {
139 appendLog("returnVoid() failed: expected null, got " + returned);
140 return false;
141 }
142
143 return true;
144}
145
146function getIfaceProperties() {
147 if (JNIBindingsTest.mInt != 0) {
148 // EMULATE_JSC_BINDINGS
149 // Note: the Java sets the mInt property to 123. JSC and V8 do not support object
150 // members in the bindings though.
151 appendLog("getIfaceProperties() failed: expected mInt = 0, got " + JNIBindingsTest.mInt);
152 return false;
153 }
154
155 if (JNIBindingsTest.mString != undefined) {
156 // EMULATE_JSC_BINDINGS
157 // Note that the java class returned has s set to Hello World. JSC and V8 do not support
158 // getting properties.
159 appendLog("getIfaceProperties() failed: expected mString = 'Hello World', got " + JNIBindingsTest.mString);
160 return false;
161 }
162
163 return true;
164}
165
Ben Murdoch940e57f2010-04-01 15:07:41 +0100166function testParameterTypeMismatch() {
167 return JNIBindingsTest.testParameterTypeMismatch("dog");
168}
169
Ben Murdoche902e1a2010-03-29 11:55:47 +0100170function appendLog(msg) {
171 var log = document.getElementById("status");
172 log.innerHTML += "<br/>" + msg;
173}
174
175function runTests() {
176
177 // Assume that if the test isn't done after 10s that we failed.
178 window.setTimeout(function() { JNIBindingsTest.testComplete(); }, 10000);
179
180 if (testPrimitiveTypes()) {
181 appendLog("testPrimitiveTypes passed!");
182 } else {
183 appendLog("testPrimtiveTypes failed!");
184 }
185
186 if (testObjectTypes()) {
187 appendLog("testObjectTypes passed!");
188 } else {
189 appendLog("testObjectTypes failed!");
190 }
191
192 if (testArray()) {
193 appendLog("testArray passed!");
194 } else {
195 appendLog("testArray failed!");
196 }
197
198 if (testObjectArray()) {
199 appendLog("testObjectArray passed!");
200 } else {
201 appendLog("testObjectArray failed!");
202 }
203
204 if (testObjectMembers()) {
205 appendLog("testObjectMembers passed!");
206 } else {
207 appendLog("<br/>testObjectMembers failed!");
208 }
209
210 if (testJSPrimitivesToStringsInJava()) {
211 appendLog("testJSPrimitivesToStringsInJava passed!");
212 } else {
213 appendLog("testJSPrimitivesToStringsInJava failed!");
214 }
215
216 if (testJavaReturnTypes()) {
217 appendLog("testJavaReturnTypes passed!");
218 } else {
219 appendLog("testJavaReturnTypes failed!");
220 }
221
222 if (getIfaceProperties()) {
223 appendLog("getIfaceProperties passed!");
224 } else {
225 appendLog("getIfaceProperties failed!");
226 }
227
Ben Murdoch940e57f2010-04-01 15:07:41 +0100228 if (testParameterTypeMismatch()) {
229 appendLog("testParameterTypeMismatch passed!");
230 } else {
231 appendLog("testParameterTypeMismatch failed!");
232 }
233
Ben Murdoche902e1a2010-03-29 11:55:47 +0100234 JNIBindingsTest.testComplete();
235}
236</script>
237
238<body onload="runTests();">
239<p id="status">Running JNI Bindings test...</p>
240</body>
241</html>