1 <html> 2 <head> 3 <script type="text/javascript"> 4 5 function testPrimitiveTypes() { 6 return JNIBindingsTest.testPrimitiveTypes(100, 'c', 123.34567890, 456.789, 1234567, 1234567890, 6000, true); 7 } 8 9 function testObjectTypes() { 10 return JNIBindingsTest.testObjectTypes("Foo", "", null, {"foo":"bar"}, {}); 11 } 12 13 function 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 17 function testObjectArray() { 18 return JNIBindingsTest.testObjectArray(['Hello', 'World', '!'], [], [{"foo":"bar"}]); 19 } 20 21 function 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 38 function testJSPrimitivesToStringsInJava() { 39 return JNIBindingsTest.testJSPrimitivesToStringsInJava(123, null, 456.789, true, 'd', undefined); 40 } 41 42 function 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.returnNullString(); 108 if (returned !== undefined) { 109 appendLog("returnNullString() failed: expected undefined, got " + returned); 110 return false; 111 } 112 113 returned = JNIBindingsTest.returnObject(); 114 if (returned == null) { 115 appendLog("returnObject() failed: expected non-null, got " + returned); 116 return false; 117 } else if (returned.x != undefined) { 118 // We do not support getting object properties. 119 appendLog("returnObject() failed: expected 'x' property undefined, got " + returned.x) 120 return false; 121 } else if (returned.s != undefined) { 122 // We do not support getting object properties. 123 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 148 function getIfaceProperties() { 149 if (JNIBindingsTest.mInt != undefined) { 150 // We do not support getting object properties. 151 appendLog("getIfaceProperties() failed: expected mInt = undefined, got " + JNIBindingsTest.mInt); 152 return false; 153 } 154 155 if (JNIBindingsTest.mString != undefined) { 156 // We do not support getting object properties. 157 appendLog("getIfaceProperties() failed: expected mString = undefined, got " + JNIBindingsTest.mString); 158 return false; 159 } 160 161 return true; 162 } 163 164 function testParameterTypeMismatch() { 165 return JNIBindingsTest.testParameterTypeMismatch("dog"); 166 } 167 168 function appendLog(msg) { 169 var log = document.getElementById("status"); 170 log.innerHTML += "<br/>" + msg; 171 } 172 173 function runTests() { 174 175 // Assume that if the test isn't done after 10s that we failed. 176 window.setTimeout(function() { JNIBindingsTest.notifyComplete(); }, 10000); 177 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 226 if (testParameterTypeMismatch()) { 227 appendLog("testParameterTypeMismatch passed!"); 228 } else { 229 appendLog("testParameterTypeMismatch failed!"); 230 } 231 232 JNIBindingsTest.notifyComplete(); 233 } 234 </script> 235 236 <body onload="runTests();"> 237 <p id="status">Running JNI Bindings test...</p> 238 </body> 239 </html> 240