blob: 7218f58045e084b4bb7c1dd7085c9b3b49ed5ff4 [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() {
Steve Blocka25c7dd2011-09-02 13:03:15 +010010 return JNIBindingsTest.testObjectTypes("Foo", "", null, {"foo":"bar"}, {});
Ben Murdoche902e1a2010-03-29 11:55:47 +010011}
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
Steve Blocka25c7dd2011-09-02 13:03:15 +0100107 returned = JNIBindingsTest.returnNullString();
108 if (returned !== undefined) {
109 appendLog("returnNullString() failed: expected undefined, got " + returned);
110 return false;
111 }
112
Ben Murdoche902e1a2010-03-29 11:55:47 +0100113 returned = JNIBindingsTest.returnObject();
114 if (returned == null) {
115 appendLog("returnObject() failed: expected non-null, got " + returned);
116 return false;
Steve Block6d3975f2011-09-02 13:16:42 +0100117 } else if (returned.x != undefined) {
118 // We do not support getting object properties.
119 appendLog("returnObject() failed: expected 'x' property undefined, got " + returned.x)
Ben Murdoche902e1a2010-03-29 11:55:47 +0100120 return false;
121 } else if (returned.s != undefined) {
Steve Block6d3975f2011-09-02 13:16:42 +0100122 // We do not support getting object properties.
Ben Murdoche902e1a2010-03-29 11:55:47 +0100123 appendLog("returnObject() failed: expected 's' property undefined, got " + returned.s);
124 return false;
125 } else if (!returned.aMethod()) {
126 appendLog("returnObject() failed: expected 'aMethod' method to return true, got " + returned.aMethod());
127 return false;
128 } else if (returned.anotherMethod() != "Hello World") {
129 appendLog("returnObject() failed: expected 'anotherMethod' to return 'Hello World' got "+ returned.anotherMethod());
130 return false;
131 }
132
133 returned = JNIBindingsTest.returnArray();
134 if (returned != null) {
135 appendLog("returnArray() failed: expected null, got " + returned);
136 return false;
137 }
138
139 returned = JNIBindingsTest.returnVoid();
140 if (returned != null) {
141 appendLog("returnVoid() failed: expected null, got " + returned);
142 return false;
143 }
144
145 return true;
146}
147
148function getIfaceProperties() {
Steve Block6d3975f2011-09-02 13:16:42 +0100149 if (JNIBindingsTest.mInt != undefined) {
150 // We do not support getting object properties.
151 appendLog("getIfaceProperties() failed: expected mInt = undefined, got " + JNIBindingsTest.mInt);
Ben Murdoche902e1a2010-03-29 11:55:47 +0100152 return false;
153 }
154
155 if (JNIBindingsTest.mString != undefined) {
Steve Block6d3975f2011-09-02 13:16:42 +0100156 // We do not support getting object properties.
157 appendLog("getIfaceProperties() failed: expected mString = undefined, got " + JNIBindingsTest.mString);
Ben Murdoche902e1a2010-03-29 11:55:47 +0100158 return false;
159 }
160
161 return true;
162}
163
Ben Murdoch940e57f2010-04-01 15:07:41 +0100164function testParameterTypeMismatch() {
165 return JNIBindingsTest.testParameterTypeMismatch("dog");
166}
167
Ben Murdoche902e1a2010-03-29 11:55:47 +0100168function appendLog(msg) {
169 var log = document.getElementById("status");
170 log.innerHTML += "<br/>" + msg;
171}
172
173function runTests() {
174
175 // Assume that if the test isn't done after 10s that we failed.
Guang Zhu0622f962010-05-04 15:46:17 -0700176 window.setTimeout(function() { JNIBindingsTest.notifyComplete(); }, 10000);
Ben Murdoche902e1a2010-03-29 11:55:47 +0100177
178 if (testPrimitiveTypes()) {
179 appendLog("testPrimitiveTypes passed!");
180 } else {
181 appendLog("testPrimtiveTypes failed!");
182 }
183
184 if (testObjectTypes()) {
185 appendLog("testObjectTypes passed!");
186 } else {
187 appendLog("testObjectTypes failed!");
188 }
189
190 if (testArray()) {
191 appendLog("testArray passed!");
192 } else {
193 appendLog("testArray failed!");
194 }
195
196 if (testObjectArray()) {
197 appendLog("testObjectArray passed!");
198 } else {
199 appendLog("testObjectArray failed!");
200 }
201
202 if (testObjectMembers()) {
203 appendLog("testObjectMembers passed!");
204 } else {
205 appendLog("<br/>testObjectMembers failed!");
206 }
207
208 if (testJSPrimitivesToStringsInJava()) {
209 appendLog("testJSPrimitivesToStringsInJava passed!");
210 } else {
211 appendLog("testJSPrimitivesToStringsInJava failed!");
212 }
213
214 if (testJavaReturnTypes()) {
215 appendLog("testJavaReturnTypes passed!");
216 } else {
217 appendLog("testJavaReturnTypes failed!");
218 }
219
220 if (getIfaceProperties()) {
221 appendLog("getIfaceProperties passed!");
222 } else {
223 appendLog("getIfaceProperties failed!");
224 }
225
Ben Murdoch940e57f2010-04-01 15:07:41 +0100226 if (testParameterTypeMismatch()) {
227 appendLog("testParameterTypeMismatch passed!");
228 } else {
229 appendLog("testParameterTypeMismatch failed!");
230 }
231
Guang Zhu0622f962010-05-04 15:46:17 -0700232 JNIBindingsTest.notifyComplete();
Ben Murdoche902e1a2010-03-29 11:55:47 +0100233}
234</script>
235
236<body onload="runTests();">
237<p id="status">Running JNI Bindings test...</p>
238</body>
239</html>