aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoonas Reynders <joonas.reynders@iki.fi>2012-02-09 21:45:54 +0200
committerPekka Enberg <penberg@kernel.org>2012-02-09 23:16:35 +0200
commit93a545b5758ce89070006550ed294a8212b20a88 (patch)
treec77142749179de6df69cbbf56326c6b2a7d28907
parent8c6cee29f742f068d8acb3a981bf5d67bb7f5dea (diff)
downloadjato-93a545b5758ce89070006550ed294a8212b20a88.tar.gz
Add tests for function JNI_MethodID
Signed-off-by: Joonas Reynders <joonas.reynders@iki.fi> Signed-off-by: Pekka Enberg <penberg@kernel.org>
-rw-r--r--test/functional/java/lang/JNITest.java19
-rw-r--r--test/functional/jni/jnitest.c31
2 files changed, 50 insertions, 0 deletions
diff --git a/test/functional/java/lang/JNITest.java b/test/functional/java/lang/JNITest.java
index c2fff009..319fb2c4 100644
--- a/test/functional/java/lang/JNITest.java
+++ b/test/functional/java/lang/JNITest.java
@@ -100,6 +100,7 @@ public class JNITest extends TestCase {
native static public Object testNewObjectV(Class<?> clazz, String constructorSignature, Object args);
native static public Class<?> testGetObjectClass(Object obj);
native static public boolean isInstanceOf(Object obj, Class<?> clazz);
+ native static public boolean testMethodID(Class<?> clazz, String methodName, String signature);
private static JNITest jniTest = new JNITest();
@@ -371,6 +372,23 @@ public class JNITest extends TestCase {
assertTrue(isInstanceOf(jniTest, JNITest.class));
}
+ public static void testMethodID() {
+
+ assertTrue(testMethodID(JNITest.class, "testMethodID", "()V"));
+
+ assertThrows(new Block() {
+ public void run() throws Throwable {
+ testMethodID(JNITest.class, "testMethodID", "(Ljava/lang/String;)V");
+ }
+ }, NoSuchMethodError.class);
+
+ assertThrows(new Block() {
+ public void run() throws Throwable {
+ testMethodID(JNITest.class, "nosuchmethod", "()V");
+ }
+ }, NoSuchMethodError.class);
+ }
+
public static void main(String[] args) {
testReturnPassedString();
testReturnPassedInt();
@@ -400,5 +418,6 @@ public class JNITest extends TestCase {
testNewObjectV();
testGetObjectClass();
testIsInstanceOf();
+ testMethodID();
}
}
diff --git a/test/functional/jni/jnitest.c b/test/functional/jni/jnitest.c
index 4498d3c1..4f6a2833 100644
--- a/test/functional/jni/jnitest.c
+++ b/test/functional/jni/jnitest.c
@@ -760,3 +760,34 @@ JNIEXPORT jboolean JNICALL Java_java_lang_JNITest_isInstanceOf(JNIEnv *env, jcla
{
return (*env)->IsInstanceOf(env, obj, clazz);
}
+
+/*
+ * Class: java_lang_JNITest
+ * Method: testMethodID
+ * Signature: (Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Z
+ */
+JNIEXPORT jboolean JNICALL Java_java_lang_JNITest_testMethodID(JNIEnv *env, jclass clazz, jclass classForMethodID, jstring methodName, jstring signature)
+{
+ char *methodNameStr;
+ char *signatureStr;
+ jboolean iscopy;
+
+ methodNameStr = (char *) (*env)->GetStringUTFChars(env, methodName, &iscopy);
+ if (signatureStr == NULL) {
+ return false; /* OutOfMemoryError */
+ }
+
+ signatureStr = (char *) (*env)->GetStringUTFChars(env, signature, &iscopy);
+ if (signatureStr == NULL) {
+ return false; /* OutOfMemoryError */
+ }
+
+ jmethodID methodID = (*env)->GetMethodID(env, classForMethodID, methodNameStr, signatureStr);
+ if (methodID == NULL)
+ return false;
+
+ (*env)->ReleaseStringUTFChars(env, methodName, methodNameStr);
+ (*env)->ReleaseStringUTFChars(env, signature, signatureStr);
+
+ return true;
+} \ No newline at end of file