summaryrefslogtreecommitdiffstats
path: root/test/004-JniTest
diff options
context:
space:
mode:
authorJeff Hao <jeffhao@google.com>2015-05-28 14:32:07 -0700
committerJeff Hao <jeffhao@google.com>2015-05-28 15:37:34 -0700
commit7be83025b62ab499ed8b2b59521f8fbe8e2b13ab (patch)
treef2099582e1459f38a88364251c99fae8745ab1d7 /test/004-JniTest
parent1309ba27dd02e0e4dea0e45f8b5500080cbbd703 (diff)
downloadart-7be83025b62ab499ed8b2b59521f8fbe8e2b13ab.tar.gz
art-7be83025b62ab499ed8b2b59521f8fbe8e2b13ab.tar.bz2
art-7be83025b62ab499ed8b2b59521f8fbe8e2b13ab.zip
Add JNI String.<init> test for global and weak global refs.
Test for change: https://googleplex-android-review.git.corp.google.com/#/c/698642/ Change-Id: I3e1182d42f9e24448d8616000de58ebfe1e50fb8
Diffstat (limited to 'test/004-JniTest')
-rw-r--r--test/004-JniTest/jni_test.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/004-JniTest/jni_test.cc b/test/004-JniTest/jni_test.cc
index 1ec0cf2d43..71a2b2dddc 100644
--- a/test/004-JniTest/jni_test.cc
+++ b/test/004-JniTest/jni_test.cc
@@ -604,4 +604,20 @@ extern "C" JNIEXPORT void JNICALL Java_Main_testNewStringObject(JNIEnv* env, jcl
args4[0].l = string_arg;
env->CallVoidMethodA(s3, mid3, args3);
env->CallNonvirtualVoidMethodA(s4, c, mid4, args4);
+
+ // Test with global and weak global references
+ jstring s5 = reinterpret_cast<jstring>(env->AllocObject(c));
+ assert(s5 != nullptr);
+ s5 = reinterpret_cast<jstring>(env->NewGlobalRef(s5));
+ jstring s6 = reinterpret_cast<jstring>(env->AllocObject(c));
+ assert(s6 != nullptr);
+ s6 = reinterpret_cast<jstring>(env->NewWeakGlobalRef(s6));
+
+ env->CallVoidMethod(s5, mid1);
+ env->CallNonvirtualVoidMethod(s6, c, mid2, byte_array);
+ assert(env->GetStringLength(s5) == 0);
+ assert(env->GetStringLength(s6) == byte_array_length);
+ const char* chars6 = env->GetStringUTFChars(s6, nullptr);
+ assert(strcmp(test_array, chars6) == 0);
+ env->ReleaseStringUTFChars(s6, chars6);
}