aboutsummaryrefslogtreecommitdiff
path: root/libjava/testsuite
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2001-01-26 22:41:41 +0000
committerTom Tromey <tromey@gcc.gnu.org>2001-01-26 22:41:41 +0000
commitd0815622ea10a9a0f8c8a31a72660ecd7e483527 (patch)
tree17bd19053cde7d6de4e9c446d110697f23276823 /libjava/testsuite
parent66cce54da0e53c27e2b59ebb416c95e54191e9fc (diff)
downloadgcc-d0815622ea10a9a0f8c8a31a72660ecd7e483527.zip
gcc-d0815622ea10a9a0f8c8a31a72660ecd7e483527.tar.gz
gcc-d0815622ea10a9a0f8c8a31a72660ecd7e483527.tar.bz2
martin.out: New file.
* libjava.jni/martin.out: New file. * libjava.jni/martin.c: New file. * libjava.jni/martin.java: New file. From-SVN: r39286
Diffstat (limited to 'libjava/testsuite')
-rw-r--r--libjava/testsuite/ChangeLog6
-rw-r--r--libjava/testsuite/libjava.jni/martin.c41
-rw-r--r--libjava/testsuite/libjava.jni/martin.java21
-rw-r--r--libjava/testsuite/libjava.jni/martin.out4
4 files changed, 72 insertions, 0 deletions
diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog
index ab8f5b1..59dff24 100644
--- a/libjava/testsuite/ChangeLog
+++ b/libjava/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2001-01-26 Tom Tromey <tromey@redhat.com>
+
+ * libjava.jni/martin.out: New file.
+ * libjava.jni/martin.c: New file.
+ * libjava.jni/martin.java: New file.
+
2001-01-16 Richard Henderson <rth@redhat.com>
* lib/libjava.exp (bytecompile_file): Don't unset CLASSPATH.
diff --git a/libjava/testsuite/libjava.jni/martin.c b/libjava/testsuite/libjava.jni/martin.c
new file mode 100644
index 0000000..31f53e1
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/martin.c
@@ -0,0 +1,41 @@
+#include <jni.h>
+#include "martin.h"
+#include <stdio.h>
+
+void Java_martin_myNative(JNIEnv* env, jobject this, jstring s)
+{
+ jclass cls;
+ jfieldID fid;
+ jobject obj;
+ jmethodID mid;
+
+ printf("From C\n");
+
+ cls = (*env)->FindClass(env, "java/lang/System");
+ if (cls == 0) {
+ printf("java/lang/System lookup failed\n");
+ return;
+ }
+ fid = (*env)->GetStaticFieldID(env, cls, "out", "Ljava/io/PrintStream;");
+ if (fid == 0) {
+ printf("java/lang/System::out lookup failed\n");
+ return;
+ }
+ obj = (*env)->GetStaticObjectField(env, cls, fid);
+ if (obj == 0) {
+ printf("GetStaticObjectField call failed\n");
+ return;
+ }
+ cls = (*env)->GetObjectClass(env, obj);
+ if (cls == 0) {
+ printf("GetObjectClass(out) failed\n");
+ return;
+ }
+ mid = (*env)->GetMethodID(env, cls, "println", "(Ljava/lang/String;)V");
+ if (mid == 0) {
+ printf("println method lookup failed\n");
+ return;
+ }
+ (*env)->CallVoidMethod(env, obj, mid, s);
+}
+
diff --git a/libjava/testsuite/libjava.jni/martin.java b/libjava/testsuite/libjava.jni/martin.java
new file mode 100644
index 0000000..b866a60
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/martin.java
@@ -0,0 +1,21 @@
+// Test case from Martin Kahlert <martin.kahlert@infineon.com>
+
+public class martin {
+ public native void myNative(String s);
+
+ public void myJava(String s) {
+ s = s + ", Java";
+ System.out.println(s);
+ }
+
+ public static void main(String args[]) {
+ martin x = new martin();
+ x.myJava("Hello");
+ x.myNative("Hello, Java (from C)");
+ x.myJava("Goodbye");
+ }
+
+ static {
+ System.loadLibrary("martin");
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/martin.out b/libjava/testsuite/libjava.jni/martin.out
new file mode 100644
index 0000000..a25bc6c
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/martin.out
@@ -0,0 +1,4 @@
+Hello, Java
+From C
+Hello, Java (from C)
+Goodbye, Java