blob: 2d20adae3289b0587df69c0c472a6d009b6bcc73 [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;
117 } else if (returned.x != 0) {
118 // EMULATE_JSC_BINDINGS
119 // Note: the Java sets the x property to 123. JSC and V8 do not support object
120 // members in the bindings though.
121 appendLog("returnObject() failed: expected 'x' property 0, got " + returned.x)
122 return false;
123 } else if (returned.s != undefined) {
124 // EMULATE_JSC_BINDINGS
125 // Note that the java class returned has s set to Hello World. JSC and V8 do not support
126 // getting properties.
127 appendLog("returnObject() failed: expected 's' property undefined, got " + returned.s);
128 return false;
129 } else if (!returned.aMethod()) {
130 appendLog("returnObject() failed: expected 'aMethod' method to return true, got " + returned.aMethod());
131 return false;
132 } else if (returned.anotherMethod() != "Hello World") {
133 appendLog("returnObject() failed: expected 'anotherMethod' to return 'Hello World' got "+ returned.anotherMethod());
134 return false;
135 }
136
137 returned = JNIBindingsTest.returnArray();
138 if (returned != null) {
139 appendLog("returnArray() failed: expected null, got " + returned);
140 return false;
141 }
142
143 returned = JNIBindingsTest.returnVoid();
144 if (returned != null) {
145 appendLog("returnVoid() failed: expected null, got " + returned);
146 return false;
147 }
148
149 return true;
150}
151
152function getIfaceProperties() {
153 if (JNIBindingsTest.mInt != 0) {
154 // EMULATE_JSC_BINDINGS
155 // Note: the Java sets the mInt property to 123. JSC and V8 do not support object
156 // members in the bindings though.
157 appendLog("getIfaceProperties() failed: expected mInt = 0, got " + JNIBindingsTest.mInt);
158 return false;
159 }
160
161 if (JNIBindingsTest.mString != undefined) {
162 // EMULATE_JSC_BINDINGS
163 // Note that the java class returned has s set to Hello World. JSC and V8 do not support
164 // getting properties.
165 appendLog("getIfaceProperties() failed: expected mString = 'Hello World', got " + JNIBindingsTest.mString);
166 return false;
167 }
168
169 return true;
170}
171
Ben Murdoch940e57f2010-04-01 15:07:41 +0100172function testParameterTypeMismatch() {
173 return JNIBindingsTest.testParameterTypeMismatch("dog");
174}
175
Ben Murdoche902e1a2010-03-29 11:55:47 +0100176function appendLog(msg) {
177 var log = document.getElementById("status");
178 log.innerHTML += "<br/>" + msg;
179}
180
181function runTests() {
182
183 // Assume that if the test isn't done after 10s that we failed.
Guang Zhu0622f962010-05-04 15:46:17 -0700184 window.setTimeout(function() { JNIBindingsTest.notifyComplete(); }, 10000);
Ben Murdoche902e1a2010-03-29 11:55:47 +0100185
186 if (testPrimitiveTypes()) {
187 appendLog("testPrimitiveTypes passed!");
188 } else {
189 appendLog("testPrimtiveTypes failed!");
190 }
191
192 if (testObjectTypes()) {
193 appendLog("testObjectTypes passed!");
194 } else {
195 appendLog("testObjectTypes failed!");
196 }
197
198 if (testArray()) {
199 appendLog("testArray passed!");
200 } else {
201 appendLog("testArray failed!");
202 }
203
204 if (testObjectArray()) {
205 appendLog("testObjectArray passed!");
206 } else {
207 appendLog("testObjectArray failed!");
208 }
209
210 if (testObjectMembers()) {
211 appendLog("testObjectMembers passed!");
212 } else {
213 appendLog("<br/>testObjectMembers failed!");
214 }
215
216 if (testJSPrimitivesToStringsInJava()) {
217 appendLog("testJSPrimitivesToStringsInJava passed!");
218 } else {
219 appendLog("testJSPrimitivesToStringsInJava failed!");
220 }
221
222 if (testJavaReturnTypes()) {
223 appendLog("testJavaReturnTypes passed!");
224 } else {
225 appendLog("testJavaReturnTypes failed!");
226 }
227
228 if (getIfaceProperties()) {
229 appendLog("getIfaceProperties passed!");
230 } else {
231 appendLog("getIfaceProperties failed!");
232 }
233
Ben Murdoch940e57f2010-04-01 15:07:41 +0100234 if (testParameterTypeMismatch()) {
235 appendLog("testParameterTypeMismatch passed!");
236 } else {
237 appendLog("testParameterTypeMismatch failed!");
238 }
239
Guang Zhu0622f962010-05-04 15:46:17 -0700240 JNIBindingsTest.notifyComplete();
Ben Murdoche902e1a2010-03-29 11:55:47 +0100241}
242</script>
243
244<body onload="runTests();">
245<p id="status">Running JNI Bindings test...</p>
246</body>
247</html>