xref: /aosp_15_r20/libnativehelper/tests/JniInvocation_test.cpp (revision 0797b24ee566c78eb48500180cb4bf71f81c8aab)
1*0797b24eSAndroid Build Coastguard Worker /*
2*0797b24eSAndroid Build Coastguard Worker  * Copyright (C) 2014 The Android Open Source Project
3*0797b24eSAndroid Build Coastguard Worker  *
4*0797b24eSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*0797b24eSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*0797b24eSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*0797b24eSAndroid Build Coastguard Worker  *
8*0797b24eSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*0797b24eSAndroid Build Coastguard Worker  *
10*0797b24eSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*0797b24eSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*0797b24eSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*0797b24eSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*0797b24eSAndroid Build Coastguard Worker  * limitations under the License.
15*0797b24eSAndroid Build Coastguard Worker  */
16*0797b24eSAndroid Build Coastguard Worker 
17*0797b24eSAndroid Build Coastguard Worker #include "../JniInvocation-priv.h"
18*0797b24eSAndroid Build Coastguard Worker 
19*0797b24eSAndroid Build Coastguard Worker #include <gtest/gtest.h>
20*0797b24eSAndroid Build Coastguard Worker #include <jni.h>
21*0797b24eSAndroid Build Coastguard Worker 
22*0797b24eSAndroid Build Coastguard Worker 
23*0797b24eSAndroid Build Coastguard Worker static const char* kDefaultJniInvocationLibrary = "libart.so";
24*0797b24eSAndroid Build Coastguard Worker static const char* kTestNonNull = "libartd.so";
25*0797b24eSAndroid Build Coastguard Worker static const char* kTestNonNull2 = "libartd2.so";
26*0797b24eSAndroid Build Coastguard Worker 
TEST(JNIInvocation,Debuggable)27*0797b24eSAndroid Build Coastguard Worker TEST(JNIInvocation, Debuggable) {
28*0797b24eSAndroid Build Coastguard Worker     const char* result = JniInvocationGetLibraryWith(nullptr, true, kTestNonNull2);
29*0797b24eSAndroid Build Coastguard Worker     EXPECT_STREQ(result, kTestNonNull2);
30*0797b24eSAndroid Build Coastguard Worker 
31*0797b24eSAndroid Build Coastguard Worker     result = JniInvocationGetLibraryWith(kTestNonNull, true, kTestNonNull2);
32*0797b24eSAndroid Build Coastguard Worker     EXPECT_STREQ(result, kTestNonNull);
33*0797b24eSAndroid Build Coastguard Worker 
34*0797b24eSAndroid Build Coastguard Worker     result = JniInvocationGetLibraryWith(kTestNonNull, true, nullptr);
35*0797b24eSAndroid Build Coastguard Worker     EXPECT_STREQ(result, kTestNonNull);
36*0797b24eSAndroid Build Coastguard Worker 
37*0797b24eSAndroid Build Coastguard Worker     result = JniInvocationGetLibraryWith(nullptr, true, nullptr);
38*0797b24eSAndroid Build Coastguard Worker     EXPECT_STREQ(result, kDefaultJniInvocationLibrary);
39*0797b24eSAndroid Build Coastguard Worker }
40*0797b24eSAndroid Build Coastguard Worker 
TEST(JNIInvocation,NonDebuggable)41*0797b24eSAndroid Build Coastguard Worker TEST(JNIInvocation, NonDebuggable) {
42*0797b24eSAndroid Build Coastguard Worker     const char* result = JniInvocationGetLibraryWith(nullptr, false, kTestNonNull2);
43*0797b24eSAndroid Build Coastguard Worker     EXPECT_STREQ(result, kDefaultJniInvocationLibrary);
44*0797b24eSAndroid Build Coastguard Worker 
45*0797b24eSAndroid Build Coastguard Worker     result = JniInvocationGetLibraryWith(kTestNonNull, false, kTestNonNull2);
46*0797b24eSAndroid Build Coastguard Worker     EXPECT_STREQ(result, kDefaultJniInvocationLibrary);
47*0797b24eSAndroid Build Coastguard Worker 
48*0797b24eSAndroid Build Coastguard Worker     result = JniInvocationGetLibraryWith(kTestNonNull, false, nullptr);
49*0797b24eSAndroid Build Coastguard Worker     EXPECT_STREQ(result, kDefaultJniInvocationLibrary);
50*0797b24eSAndroid Build Coastguard Worker 
51*0797b24eSAndroid Build Coastguard Worker     result = JniInvocationGetLibraryWith(nullptr, false, nullptr);
52*0797b24eSAndroid Build Coastguard Worker     EXPECT_STREQ(result, kDefaultJniInvocationLibrary);
53*0797b24eSAndroid Build Coastguard Worker }
54*0797b24eSAndroid Build Coastguard Worker 
TEST(JNIInvocation,GetDefaultJavaVMInitArgsBeforeInit)55*0797b24eSAndroid Build Coastguard Worker TEST(JNIInvocation, GetDefaultJavaVMInitArgsBeforeInit) {
56*0797b24eSAndroid Build Coastguard Worker     EXPECT_DEATH(JNI_GetDefaultJavaVMInitArgs(nullptr), "Runtime library not loaded.");
57*0797b24eSAndroid Build Coastguard Worker }
58*0797b24eSAndroid Build Coastguard Worker 
TEST(JNIInvocation,CreateJavaVMBeforeInit)59*0797b24eSAndroid Build Coastguard Worker TEST(JNIInvocation, CreateJavaVMBeforeInit) {
60*0797b24eSAndroid Build Coastguard Worker     JavaVM *vm;
61*0797b24eSAndroid Build Coastguard Worker     JNIEnv *env;
62*0797b24eSAndroid Build Coastguard Worker     EXPECT_DEATH(JNI_CreateJavaVM(&vm, &env, nullptr), "Runtime library not loaded.");
63*0797b24eSAndroid Build Coastguard Worker }
64*0797b24eSAndroid Build Coastguard Worker 
TEST(JNIInvocation,GetCreatedJavaVMsBeforeInit)65*0797b24eSAndroid Build Coastguard Worker TEST(JNIInvocation, GetCreatedJavaVMsBeforeInit) {
66*0797b24eSAndroid Build Coastguard Worker     jsize vm_count;
67*0797b24eSAndroid Build Coastguard Worker     JavaVM *vm;
68*0797b24eSAndroid Build Coastguard Worker     int status = JNI_GetCreatedJavaVMs(&vm, 1, &vm_count);
69*0797b24eSAndroid Build Coastguard Worker     EXPECT_EQ(status, JNI_OK);
70*0797b24eSAndroid Build Coastguard Worker     EXPECT_EQ(vm_count, 0);
71*0797b24eSAndroid Build Coastguard Worker }
72