summaryrefslogtreecommitdiffstats
path: root/Tests/FindJNI/Minimal/minimal.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/FindJNI/Minimal/minimal.cxx')
-rw-r--r--Tests/FindJNI/Minimal/minimal.cxx38
1 files changed, 38 insertions, 0 deletions
diff --git a/Tests/FindJNI/Minimal/minimal.cxx b/Tests/FindJNI/Minimal/minimal.cxx
new file mode 100644
index 0000000..4423613
--- /dev/null
+++ b/Tests/FindJNI/Minimal/minimal.cxx
@@ -0,0 +1,38 @@
+#include <cassert>
+
+#include <jni.h>
+
+extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved)
+{
+ void* tmp;
+ if (vm->GetEnv(&tmp, JNI_VERSION_1_2) != JNI_OK) {
+ return -1;
+ }
+
+ // The following lines do:
+ //
+ // System.out.println("FindJNI");
+ //
+ JNIEnv* env = static_cast<JNIEnv*>(tmp);
+
+ jclass clzS = env->FindClass("java/lang/System");
+ jclass clzP = env->FindClass("java/io/PrintStream");
+
+ jfieldID outF = env->GetStaticFieldID(clzS, "out", "Ljava/io/PrintStream;");
+ jobject out = env->GetStaticObjectField(clzS, outF);
+ jmethodID println =
+ env->GetMethodID(clzP, "println", "(Ljava/lang/String;)V");
+
+ env->CallVoidMethod(out, println, env->NewStringUTF("FindJNI"));
+
+ return JNI_VERSION_1_2;
+}
+
+extern "C" JNIEXPORT void JNICALL JNI_OnUnload(JavaVM* vm, void* reserved)
+{
+ void* env;
+ jint result = vm->GetEnv(&env, JNI_VERSION_1_2);
+ assert(result == JNI_OK);
+
+ assert(static_cast<JNIEnv*>(env)->GetVersion() == JNI_VERSION_1_2);
+}