Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 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() { |
Steve Block | a25c7dd | 2011-09-02 13:03:15 +0100 | [diff] [blame] | 10 | return JNIBindingsTest.testObjectTypes("Foo", "", null, {"foo":"bar"}, {}); |
Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 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 | |
Steve Block | a25c7dd | 2011-09-02 13:03:15 +0100 | [diff] [blame] | 107 | returned = JNIBindingsTest.returnNullString(); |
| 108 | if (returned !== undefined) { |
| 109 | appendLog("returnNullString() failed: expected undefined, got " + returned); |
| 110 | return false; |
| 111 | } |
| 112 | |
Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 113 | returned = JNIBindingsTest.returnObject(); |
| 114 | if (returned == null) { |
| 115 | appendLog("returnObject() failed: expected non-null, got " + returned); |
| 116 | return false; |
Steve Block | 6d3975f | 2011-09-02 13:16:42 +0100 | [diff] [blame] | 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) |
Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 120 | return false; |
| 121 | } else if (returned.s != undefined) { |
Steve Block | 6d3975f | 2011-09-02 13:16:42 +0100 | [diff] [blame] | 122 | // We do not support getting object properties. |
Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 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() { |
Steve Block | 6d3975f | 2011-09-02 13:16:42 +0100 | [diff] [blame] | 149 | if (JNIBindingsTest.mInt != undefined) { |
| 150 | // We do not support getting object properties. |
| 151 | appendLog("getIfaceProperties() failed: expected mInt = undefined, got " + JNIBindingsTest.mInt); |
Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 152 | return false; |
| 153 | } |
| 154 | |
| 155 | if (JNIBindingsTest.mString != undefined) { |
Steve Block | 6d3975f | 2011-09-02 13:16:42 +0100 | [diff] [blame] | 156 | // We do not support getting object properties. |
| 157 | appendLog("getIfaceProperties() failed: expected mString = undefined, got " + JNIBindingsTest.mString); |
Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 158 | return false; |
| 159 | } |
| 160 | |
| 161 | return true; |
| 162 | } |
| 163 | |
Ben Murdoch | 940e57f | 2010-04-01 15:07:41 +0100 | [diff] [blame] | 164 | function testParameterTypeMismatch() { |
| 165 | return JNIBindingsTest.testParameterTypeMismatch("dog"); |
| 166 | } |
| 167 | |
Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 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. |
Guang Zhu | 0622f96 | 2010-05-04 15:46:17 -0700 | [diff] [blame] | 176 | window.setTimeout(function() { JNIBindingsTest.notifyComplete(); }, 10000); |
Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 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 | |
Ben Murdoch | 940e57f | 2010-04-01 15:07:41 +0100 | [diff] [blame] | 226 | if (testParameterTypeMismatch()) { |
| 227 | appendLog("testParameterTypeMismatch passed!"); |
| 228 | } else { |
| 229 | appendLog("testParameterTypeMismatch failed!"); |
| 230 | } |
| 231 | |
Guang Zhu | 0622f96 | 2010-05-04 15:46:17 -0700 | [diff] [blame] | 232 | JNIBindingsTest.notifyComplete(); |
Ben Murdoch | e902e1a | 2010-03-29 11:55:47 +0100 | [diff] [blame] | 233 | } |
| 234 | </script> |
| 235 | |
| 236 | <body onload="runTests();"> |
| 237 | <p id="status">Running JNI Bindings test...</p> |
| 238 | </body> |
| 239 | </html> |