<html> <head> <script type="text/javascript"> function testPrimitiveTypes() { return JNIBindingsTest.testPrimitiveTypes(100, 'c', 123.34567890, 456.789, 1234567, 1234567890, 6000, true); } function testObjectTypes() { return JNIBindingsTest.testObjectTypes("Foo", "", {"foo":"bar"}, {}); } function testArray() { 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]); } function testObjectArray() { return JNIBindingsTest.testObjectArray(['Hello', 'World', '!'], [], [{"foo":"bar"}]); } function testObjectMembers() { var foo = {"bool":true, "byte":101, "char":'d', "double":123.456, "float":456.789, "int":102, "long":103, "short":104, "string":"Hello World", "array": [1,2,3], "objArray":["foo", "bar", "baz"], "object": {"foo":1} }; 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); } function testJSPrimitivesToStringsInJava() { return JNIBindingsTest.testJSPrimitivesToStringsInJava(123, null, 456.789, true, 'd', undefined); } function testJavaReturnTypes() { var expectedBoolReturn = true; var expectedByteReturn = 1; var expectedCharReturn = 98; // 'b'; Currently bindings in JSC and V8 return chars as their ASCII equivalent. var expectedDoubleReturn = 123.456; var expectedFloatReturn = 456.789; var expectedIntReturn = 123; var expectedLongReturn = 1234; var expectedShortReturn = 12345; var expectedStringReturn = "Hello World!"; var returned = JNIBindingsTest.returnBool(); if (returned != expectedBoolReturn) { appendLog("returnBool() failed: expected "+ expectedBoolReturn +", got " + returned); return false; } returned = JNIBindingsTest.returnByte(); if (returned != expectedByteReturn) { appendLog("returnByte() failed: expected "+ expectedByteReturn +", got " + returned); return false; } returned = JNIBindingsTest.returnChar(); if (returned != expectedCharReturn) { appendLog("returnChar() failed: expected "+ expectedCharReturn +", got " + returned); return false; } returned = JNIBindingsTest.returnDouble(); if (returned != expectedDoubleReturn) { appendLog("returnDouble() failed: expected "+ expectedDoubleReturn +", got " + returned); return false; } returned = JNIBindingsTest.returnFloat(); if (Math.abs(returned - expectedFloatReturn) > 0.001) { appendLog("returnFloat() failed: expected "+ expectedFloatReturn +", got " + returned); return false; } returned = JNIBindingsTest.returnInt(); if (returned != expectedIntReturn) { appendLog("returnInt() failed: expected "+ expectedIntReturn +", got " + returned); return false; } returned = JNIBindingsTest.returnLong(); if (returned != expectedLongReturn) { appendLog("returnLong() failed: expected "+ expectedLongReturn +", got " + returned); return false; } returned = JNIBindingsTest.returnShort(); if (returned != expectedShortReturn) { appendLog("returnShort() failed: expected "+ expectedShortReturn +", got " + returned); return false; } returned = JNIBindingsTest.returnString(); if (returned != expectedStringReturn) { appendLog("returnString() failed: expected "+ expectedStringReturn +", got " + returned); return false; } returned = JNIBindingsTest.returnObject(); if (returned == null) { appendLog("returnObject() failed: expected non-null, got " + returned); return false; } else if (returned.x != 0) { // EMULATE_JSC_BINDINGS // Note: the Java sets the x property to 123. JSC and V8 do not support object // members in the bindings though. appendLog("returnObject() failed: expected 'x' property 0, got " + returned.x) return false; } else if (returned.s != undefined) { // EMULATE_JSC_BINDINGS // Note that the java class returned has s set to Hello World. JSC and V8 do not support // getting properties. appendLog("returnObject() failed: expected 's' property undefined, got " + returned.s); return false; } else if (!returned.aMethod()) { appendLog("returnObject() failed: expected 'aMethod' method to return true, got " + returned.aMethod()); return false; } else if (returned.anotherMethod() != "Hello World") { appendLog("returnObject() failed: expected 'anotherMethod' to return 'Hello World' got "+ returned.anotherMethod()); return false; } returned = JNIBindingsTest.returnArray(); if (returned != null) { appendLog("returnArray() failed: expected null, got " + returned); return false; } returned = JNIBindingsTest.returnVoid(); if (returned != null) { appendLog("returnVoid() failed: expected null, got " + returned); return false; } return true; } function getIfaceProperties() { if (JNIBindingsTest.mInt != 0) { // EMULATE_JSC_BINDINGS // Note: the Java sets the mInt property to 123. JSC and V8 do not support object // members in the bindings though. appendLog("getIfaceProperties() failed: expected mInt = 0, got " + JNIBindingsTest.mInt); return false; } if (JNIBindingsTest.mString != undefined) { // EMULATE_JSC_BINDINGS // Note that the java class returned has s set to Hello World. JSC and V8 do not support // getting properties. appendLog("getIfaceProperties() failed: expected mString = 'Hello World', got " + JNIBindingsTest.mString); return false; } return true; } function testParameterTypeMismatch() { return JNIBindingsTest.testParameterTypeMismatch("dog"); } function appendLog(msg) { var log = document.getElementById("status"); log.innerHTML += "<br/>" + msg; } function runTests() { // Assume that if the test isn't done after 10s that we failed. window.setTimeout(function() { JNIBindingsTest.notifyComplete(); }, 10000); if (testPrimitiveTypes()) { appendLog("testPrimitiveTypes passed!"); } else { appendLog("testPrimtiveTypes failed!"); } if (testObjectTypes()) { appendLog("testObjectTypes passed!"); } else { appendLog("testObjectTypes failed!"); } if (testArray()) { appendLog("testArray passed!"); } else { appendLog("testArray failed!"); } if (testObjectArray()) { appendLog("testObjectArray passed!"); } else { appendLog("testObjectArray failed!"); } if (testObjectMembers()) { appendLog("testObjectMembers passed!"); } else { appendLog("<br/>testObjectMembers failed!"); } if (testJSPrimitivesToStringsInJava()) { appendLog("testJSPrimitivesToStringsInJava passed!"); } else { appendLog("testJSPrimitivesToStringsInJava failed!"); } if (testJavaReturnTypes()) { appendLog("testJavaReturnTypes passed!"); } else { appendLog("testJavaReturnTypes failed!"); } if (getIfaceProperties()) { appendLog("getIfaceProperties passed!"); } else { appendLog("getIfaceProperties failed!"); } if (testParameterTypeMismatch()) { appendLog("testParameterTypeMismatch passed!"); } else { appendLog("testParameterTypeMismatch failed!"); } JNIBindingsTest.notifyComplete(); } </script> <body onload="runTests();"> <p id="status">Running JNI Bindings test...</p> </body> </html>