diff options
author | Ben Murdoch <benm@google.com> | 2010-03-29 11:55:47 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2010-03-30 18:14:19 +0100 |
commit | e902e1a71a4bb31b9db665a7ecdb853d1538eb39 (patch) | |
tree | 3b34617500a6c026d1d58526ba6cedd4344efee4 /tests/assets/bindings_test.html | |
parent | 5149c7b1a265fe8e97fc6f2d372cdc18d7c96d42 (diff) | |
download | packages_apps_browser-e902e1a71a4bb31b9db665a7ecdb853d1538eb39.zip packages_apps_browser-e902e1a71a4bb31b9db665a7ecdb853d1538eb39.tar.gz packages_apps_browser-e902e1a71a4bb31b9db665a7ecdb853d1538eb39.tar.bz2 |
Add a test for verifying the JS -> Java bindings.
Change-Id: I7d15efd5cc1c40d9c0c5b7cf1a5a7f9775a709d7
Diffstat (limited to 'tests/assets/bindings_test.html')
-rwxr-xr-x | tests/assets/bindings_test.html | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/tests/assets/bindings_test.html b/tests/assets/bindings_test.html new file mode 100755 index 0000000..93dbff1 --- /dev/null +++ b/tests/assets/bindings_test.html @@ -0,0 +1,231 @@ +<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 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.testComplete(); }, 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!"); + } + + JNIBindingsTest.testComplete(); +} +</script> + +<body onload="runTests();"> +<p id="status">Running JNI Bindings test...</p> +</body> +</html> |