1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 #include "cj_environment.h"
18 #include "dynamic_loader.h"
19 
20 #include <string>
21 
22 #include "cj_invoker.h"
23 #ifdef __OHOS__
24 #include <dlfcn.h>
25 #endif
26 #include "dynamic_loader.h"
27 #ifdef WITH_EVENT_HANDLER
28 #include "event_handler.h"
29 #endif
30 
31 using namespace OHOS;
32 using namespace testing;
33 using namespace testing::ext;
34 
35 
36 class CjEnvironmentTest : public testing::Test {
37 public:
CjEnvironmentTest()38     CjEnvironmentTest()
39     {}
~CjEnvironmentTest()40     ~CjEnvironmentTest()
41     {}
42     static void SetUpTestCase(void);
43     static void TearDownTestCase(void);
44     void SetUp() override;
45     void TearDown() override;
46 };
47 
SetUpTestCase(void)48 void CjEnvironmentTest::SetUpTestCase(void)
49 {}
50 
TearDownTestCase(void)51 void CjEnvironmentTest::TearDownTestCase(void)
52 {}
53 
SetUp(void)54 void CjEnvironmentTest::SetUp(void)
55 {}
56 
TearDown(void)57 void CjEnvironmentTest::TearDown(void)
58 {}
59 
TestFunc()60 void TestFunc()
61 {}
62 
63 /**
64  * @tc.name: CjEnvironmentTestPostTask_001
65  * @tc.desc: CjEnvironmentTest test for PostTask.
66  * @tc.type: FUNC
67  */
68 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestPostTask_001, TestSize.Level0)
69 {
70     CJEnvironment::GetInstance()->PostTask(nullptr);
71     void (*func)() = TestFunc;
72     auto ret = CJEnvironment::GetInstance()->PostTask(func);
73     EXPECT_EQ(ret, true);
74 }
75 
76 /**
77  * @tc.name: CjEnvironmentTestHasHigherPriorityTask_001
78  * @tc.desc: CjEnvironmentTest test for HasHigherPriorityTask.
79  * @tc.type: FUNC
80  */
81 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestHasHigherPriorityTask_001, TestSize.Level0)
82 {
83     auto ret = CJEnvironment::GetInstance()->HasHigherPriorityTask();
84     EXPECT_EQ(ret, false);
85 }
86 
87 /**
88  * @tc.name: CjEnvironmentTestInitCJChipSDKNS_001
89  * @tc.desc: CjEnvironmentTest test for InitCJChipSDKNS.
90  * @tc.type: FUNC
91  */
92 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitCJChipSDKNS_001, TestSize.Level0)
93 {
94     CJEnvironment::GetInstance()->InitCJChipSDKNS("path/to/hap");
95     EXPECT_NE(CJEnvironment::GetInstance()->cjAppNSName, nullptr);
96 }
97 
98 /**
99  * @tc.name: CjEnvironmentTestInitCJAppNS_001
100  * @tc.desc: CjEnvironmentTest test for InitCJAppNS.
101  * @tc.type: FUNC
102  */
103 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitCJAppNS_001, TestSize.Level0)
104 {
105     CJEnvironment::GetInstance()->InitCJAppNS("path/to/hap");
106     EXPECT_NE(CJEnvironment::GetInstance()->cjAppNSName, nullptr);
107 }
108 
109 /**
110  * @tc.name: CjEnvironmentTestInitCJSDKNS_001
111  * @tc.desc: CjEnvironmentTest test for InitCJSDKNS.
112  * @tc.type: FUNC
113  */
114 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitCJSDKNS_001, TestSize.Level0)
115 {
116     CJEnvironment::GetInstance()->InitCJSDKNS("path/to/hap");
117     EXPECT_NE(CJEnvironment::GetInstance()->cjAppNSName, nullptr);
118 }
119 
120 /**
121  * @tc.name: CjEnvironmentTestInitCJSysNS_001
122  * @tc.desc: CjEnvironmentTest test for InitCJSysNS.
123  * @tc.type: FUNC
124  */
125 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestInitCJSysNS_001, TestSize.Level0)
126 {
127     CJEnvironment::GetInstance()->InitCJSysNS("path/to/hap");
128     EXPECT_NE(CJEnvironment::GetInstance()->cjAppNSName, nullptr);
129 }
130 
131 /**
132  * @tc.name: CjEnvironmentTestStartRuntime_001
133  * @tc.desc: CjEnvironmentTest test for StartRuntime.
134  * @tc.type: FUNC
135  */
136 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestStartRuntime_001, TestSize.Level0)
137 {
138     auto ret = CJEnvironment::GetInstance()->StartRuntime();
139     EXPECT_EQ(ret, false);
140 }
141 
142 /**
143  * @tc.name: CjEnvironmentTestStopRuntime_001
144  * @tc.desc: CjEnvironmentTest test for StopRuntime.
145  * @tc.type: FUNC
146  */
147 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestStopRuntime_001, TestSize.Level0)
148 {
149     CJEnvironment::GetInstance()->StopRuntime();
150     EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
151 }
152 
153 /**
154  * @tc.name: CjEnvironmentTestStopUIScheduler_001
155  * @tc.desc: CjEnvironmentTest test for StopUIScheduler.
156  * @tc.type: FUNC
157  */
158 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestStopUIScheduler_001, TestSize.Level0)
159 {
160     CJEnvironment::GetInstance()->StopUIScheduler();
161     EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
162 }
163 
164 /**
165  * @tc.name: CjEnvironmentTestLoadCJLibrary_001
166  * @tc.desc: CjEnvironmentTest test for LoadCJLibrary.
167  * @tc.type: FUNC
168  */
169 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestLoadCJLibrary_001, TestSize.Level0)
170 {
171     auto ret = CJEnvironment::GetInstance()->LoadCJLibrary("dlName");
172     EXPECT_EQ(ret, nullptr);
173 }
174 
175 /**
176  * @tc.name: CjEnvironmentTestLoadCJLibrary_001
177  * @tc.desc: CjEnvironmentTest test for LoadCJLibrary.
178  * @tc.type: FUNC
179  */
180 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestLoadCJLibrary_002, TestSize.Level0)
181 {
182     CJEnvironment::GetInstance()->LoadCJLibrary(CJEnvironment::GetInstance()->LibraryKind::APP, "dlName");
183     CJEnvironment::GetInstance()->LoadCJLibrary(CJEnvironment::GetInstance()->LibraryKind::SYSTEM, "dlName");
184     CJEnvironment::GetInstance()->LoadCJLibrary(CJEnvironment::GetInstance()->LibraryKind::SDK, "dlName");
185     EXPECT_NE(CJEnvironment::GetInstance(), nullptr);
186 }
187 
188 /**
189  * @tc.name: CjEnvironmentTestStartDebugger_001
190  * @tc.desc: CjEnvironmentTest test for StartDebugger.
191  * @tc.type: FUNC
192  */
193 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestStartDebugger_001, TestSize.Level0)
194 {
195     auto ret = CJEnvironment::GetInstance()->StartDebugger();
196     EXPECT_EQ(ret, false);
197 }
198 
199 /**
200  * @tc.name: CjEnvironmentTestGetSymbol_001
201  * @tc.desc: CjEnvironmentTest test for GetSymbol.
202  * @tc.type: FUNC
203  */
204 HWTEST_F(CjEnvironmentTest, CjEnvironmentTestGetSymbol_001, TestSize.Level0)
205 {
206     auto ret = CJEnvironment::GetInstance()->GetSymbol(nullptr, "dlName");
207     EXPECT_EQ(ret, nullptr);
208 }
209