Add JNI tests for lambdas
Bug: 27259142
Change-Id: I2a1b31db85dc487c1e6a62609d4497c3a4d4d3a6
diff --git a/test/004-JniTest/jni_test.cc b/test/004-JniTest/jni_test.cc
index f632331..2bdf8d1 100644
--- a/test/004-JniTest/jni_test.cc
+++ b/test/004-JniTest/jni_test.cc
@@ -721,3 +721,22 @@
extern "C" JNIEXPORT void JNICALL Java_Main_testCallDefaultMethods(JNIEnv* env) {
JniCallDefaultMethodsTest(env).Test();
}
+
+static void InvokeSpecificMethod(JNIEnv* env, jobject obj, const char* method) {
+ jclass lambda_class = env->FindClass("LambdaInterface");
+ assert(!env->ExceptionCheck());
+ assert(lambda_class != nullptr);
+ jmethodID method_id = env->GetMethodID(lambda_class, method, "()V");
+ assert(!env->ExceptionCheck());
+ env->CallVoidMethod(obj, method_id);
+ assert(!env->ExceptionCheck());
+}
+
+extern "C" JNIEXPORT void JNICALL Java_Main_testInvokeLambdaDefaultMethod(
+ JNIEnv* e, jclass, jobject l) {
+ InvokeSpecificMethod(e, l, "sayHiTwice");
+}
+
+extern "C" JNIEXPORT void JNICALL Java_Main_testInvokeLambdaMethod(JNIEnv* e, jclass, jobject l) {
+ InvokeSpecificMethod(e, l, "sayHi");
+}