summaryrefslogtreecommitdiffstats
path: root/test/004-JniTest
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2014-07-11 19:15:11 +0100
committerNarayan Kamath <narayan@google.com>2014-08-01 14:53:30 +0100
commit1268b742c8cff7318dc0b5b283cbaeabfe0725ba (patch)
tree62ccc7504d91617154c6474b933562cc70255fce /test/004-JniTest
parent89c210bf418a152ccabfbbf853ddcce33aea450d (diff)
downloadart-1268b742c8cff7318dc0b5b283cbaeabfe0725ba.tar.gz
art-1268b742c8cff7318dc0b5b283cbaeabfe0725ba.tar.bz2
art-1268b742c8cff7318dc0b5b283cbaeabfe0725ba.zip
Fix broken JNI IsAssignableFrom.
The expected argument order was the opposite of what the spec dictated. Reported-By: Mikhail Naganov <mnaganov@google.com> bug: 16531674 Change-Id: I1ebc6d5814ebb4feeb96f3ecdf1a4602da4ba7ce
Diffstat (limited to 'test/004-JniTest')
-rw-r--r--test/004-JniTest/jni_test.cc5
-rw-r--r--test/004-JniTest/src/Main.java16
2 files changed, 21 insertions, 0 deletions
diff --git a/test/004-JniTest/jni_test.cc b/test/004-JniTest/jni_test.cc
index 4909a4a77c..554712aa55 100644
--- a/test/004-JniTest/jni_test.cc
+++ b/test/004-JniTest/jni_test.cc
@@ -286,3 +286,8 @@ extern "C" jchar JNICALL Java_Main_charMethod(JNIEnv* env, jclass klacc, jchar c
return char_returns[c1];
}
+
+extern "C" JNIEXPORT jboolean JNICALL Java_Main_nativeIsAssignableFrom(JNIEnv* env, jclass,
+ jclass from, jclass to) {
+ return env->IsAssignableFrom(from, to);
+}
diff --git a/test/004-JniTest/src/Main.java b/test/004-JniTest/src/Main.java
index 11c80f5a59..ae133becbc 100644
--- a/test/004-JniTest/src/Main.java
+++ b/test/004-JniTest/src/Main.java
@@ -29,6 +29,7 @@ public class Main {
testShortMethod();
testBooleanMethod();
testCharMethod();
+ testIsAssignableFromOnPrimitiveTypes();
}
private static native void testFindClassOnAttachedNativeThread();
@@ -151,4 +152,19 @@ public class Main {
}
}
}
+
+ // http://b/16531674
+ private static void testIsAssignableFromOnPrimitiveTypes() {
+ if (!nativeIsAssignableFrom(int.class, Integer.TYPE)) {
+ System.out.println("IsAssignableFrom(int.class, Integer.TYPE) returned false, expected true");
+ throw new AssertionError();
+ }
+
+ if (!nativeIsAssignableFrom(Integer.TYPE, int.class)) {
+ System.out.println("IsAssignableFrom(Integer.TYPE, int.class) returned false, expected true");
+ throw new AssertionError();
+ }
+ }
+
+ native static boolean nativeIsAssignableFrom(Class<?> from, Class<?> to);
}