Update the JNI bindings unit test in light of b/2540502
Change-Id: I166331ce198fba188df5365695a20588870374c4
diff --git a/tests/assets/bindings_test.html b/tests/assets/bindings_test.html
index 93dbff1..c20ccec 100755
--- a/tests/assets/bindings_test.html
+++ b/tests/assets/bindings_test.html
@@ -163,6 +163,10 @@
return true;
}
+function testParameterTypeMismatch() {
+ return JNIBindingsTest.testParameterTypeMismatch("dog");
+}
+
function appendLog(msg) {
var log = document.getElementById("status");
log.innerHTML += "<br/>" + msg;
@@ -221,6 +225,12 @@
appendLog("getIfaceProperties failed!");
}
+ if (testParameterTypeMismatch()) {
+ appendLog("testParameterTypeMismatch passed!");
+ } else {
+ appendLog("testParameterTypeMismatch failed!");
+ }
+
JNIBindingsTest.testComplete();
}
</script>
diff --git a/tests/src/com/android/browser/JNIBindingsTest.java b/tests/src/com/android/browser/JNIBindingsTest.java
index d2220f6..bfa3ac1 100644
--- a/tests/src/com/android/browser/JNIBindingsTest.java
+++ b/tests/src/com/android/browser/JNIBindingsTest.java
@@ -139,6 +139,7 @@
public boolean testObjectArray(String[] stringArray, Object[] emptyArray,
Object[] objectArray) {
String[] expectedStringArray = {"Hello", "World", "!"};
+ String expectedStringArrayClassName = "[Ljava.lang.String;";
Object[] expectedObjectArray = {};
try {
@@ -150,10 +151,13 @@
assertNull(objectArray);
assertEquals(Arrays.toString(expectedStringArray), Arrays.toString(stringArray));
+ assertEquals(expectedStringArrayClassName, stringArray.getClass().getName());
// EMULATE_JSC_BINDINGS
// assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(emptyArray));
+ // assertEquals(expectedObjectArrayClassName, emptyArray.getClass().getName());
// assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(objectArray));
+ // assertEquals(expectedStringObjectClassName, objectArray.getClass().getName());
} catch (AssertionFailedError e) {
printAssertionFailed(e);
@@ -177,6 +181,7 @@
String expectedStringParam = "Hello World";
int[] expectedIntArray = {1,2,3};
String[] expectedStringArrayParam = {"foo", "bar", "baz"};
+ String expectedStringArrayClassName = "[Ljava.lang.String;";
try {
assertEquals(expectedBoolParam, boolParam);
@@ -194,6 +199,7 @@
assertEquals(Arrays.toString(expectedIntArray), Arrays.toString(intArrayParam));
assertEquals(Arrays.toString(expectedStringArrayParam),
Arrays.toString(stringArrayParam));
+ assertEquals(expectedStringArrayClassName, stringArrayParam.getClass().getName());
assertNull(objectParam);
} catch (AssertionFailedError e) {
printAssertionFailed(e);
@@ -238,6 +244,18 @@
return true;
}
+ public boolean testParameterTypeMismatch(String[] stringArrayParam) {
+ // The JS test will pass a string, not an array to this test.
+ try {
+ assertNull(stringArrayParam);
+ } catch (AssertionFailedError e) {
+ printAssertionFailed(e);
+ return false;
+ }
+
+ return true;
+ }
+
public boolean returnBool() { return true; }
public byte returnByte() { return 1; }
public char returnChar() { return 'b'; }
diff --git a/tests/src/com/android/browser/JNIBindingsTestApp.java b/tests/src/com/android/browser/JNIBindingsTestApp.java
index cb38cbc..e01aca2 100644
--- a/tests/src/com/android/browser/JNIBindingsTestApp.java
+++ b/tests/src/com/android/browser/JNIBindingsTestApp.java
@@ -53,7 +53,8 @@
"testObjectMembers passed!\n" +
"testJSPrimitivesToStringsInJava passed!\n" +
"testJavaReturnTypes passed!\n" +
- "getIfaceProperties passed!\n";
+ "getIfaceProperties passed!\n" +
+ "testParameterTypeMismatch passed!\n";
private class GetWebKitDataThread extends Thread {