1 /*
2 * Copyright (c) 2023 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
18 #define private public
19 #define protected public
20 #include "native_args_child_process.h"
21 #undef protected
22 #undef private
23
24 #include "hilog_tag_wrapper.h"
25
26 using namespace testing;
27 using namespace testing::ext;
28
29 namespace OHOS {
30 namespace AbilityRuntime {
31 using namespace AAFwk;
32 using namespace AppExecFwk;
33 class NativeArgsChildProcessTest : public testing::Test {
34 public:
35 static void SetUpTestCase();
36 static void TearDownTestCase();
37 void SetUp() override;
38 void TearDown() override;
39 };
40
SetUpTestCase()41 void NativeArgsChildProcessTest::SetUpTestCase()
42 {}
43
TearDownTestCase()44 void NativeArgsChildProcessTest::TearDownTestCase()
45 {}
46
SetUp()47 void NativeArgsChildProcessTest::SetUp()
48 {}
49
TearDown()50 void NativeArgsChildProcessTest::TearDown()
51 {}
52
53 /**
54 * @tc.number: NativeArgsChildProcess_0100
55 * @tc.desc: Test NativeArgsChildProcess Create works
56 * @tc.type: FUNC
57 */
58 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_0100, TestSize.Level2)
59 {
60 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_0100 called.");
61 auto process = NativeArgsChildProcess::Create();
62 EXPECT_TRUE(process != nullptr);
63 }
64
65 /**
66 * @tc.number: NativeArgsChildProcess_0200
67 * @tc.desc: Test NativeArgsChildProcess Init works
68 * @tc.type: FUNC
69 */
70 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_0200, TestSize.Level2)
71 {
72 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_0200 called.");
73 auto process = NativeArgsChildProcess::Create();
74 EXPECT_TRUE(process != nullptr);
75
76 std::shared_ptr<ChildProcessStartInfo> info = std::make_shared<ChildProcessStartInfo>();
77 info->name = "AProcess";
78 info->srcEntry = "libentry.so:Main";
79 info->moduleName = "entry";
80
81 process->Init(info);
82 EXPECT_TRUE(process->processStartInfo_ != nullptr);
83 }
84
85 /**
86 * @tc.number: NativeArgsChildProcess_0300
87 * @tc.desc: Test NativeArgsChildProcess Init works
88 * @tc.type: FUNC
89 */
90 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_0300, TestSize.Level2)
91 {
92 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_0300 called.");
93 auto process = NativeArgsChildProcess::Create();
94 EXPECT_TRUE(process != nullptr);
95
96 auto ret = process->Init(nullptr);
97 EXPECT_FALSE(ret);
98 }
99
100 /**
101 * @tc.number: NativeArgsChildProcess_0400
102 * @tc.desc: Test NativeArgsChildProcess OnStart works
103 * @tc.type: FUNC
104 */
105 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_0400, TestSize.Level2)
106 {
107 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_0400 called.");
108 auto process = NativeArgsChildProcess::Create();
109 EXPECT_TRUE(process != nullptr);
110
111 std::shared_ptr<ChildProcessStartInfo> info = std::make_shared<ChildProcessStartInfo>();
112 info->name = "AProcess";
113 info->srcEntry = "entry/./ets/process/AProcess.ts";
114 info->moduleName = "entry";
115
116 process->Init(info);
117 process->OnStart();
118 EXPECT_TRUE(process->processStartInfo_ != nullptr);
119 }
120
121 /**
122 * @tc.number: NativeArgsChildProcess_0500
123 * @tc.desc: Test NativeArgsChildProcess OnStart works
124 * @tc.type: FUNC
125 */
126 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_0500, TestSize.Level2)
127 {
128 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_0500 called.");
129 auto process = NativeArgsChildProcess::Create();
130 EXPECT_TRUE(process != nullptr);
131
132 std::shared_ptr<ChildProcessStartInfo> info = std::make_shared<ChildProcessStartInfo>();
133 info->name = "AProcess";
134 info->srcEntry = "entry/./ets/process/AProcess.ts";
135 info->moduleName = "entry";
136 std::shared_ptr<ChildProcessArgs> args = std::make_shared<ChildProcessArgs>();
137 process->Init(info);
138 process->OnStart(args);
139 EXPECT_TRUE(process->processStartInfo_ != nullptr);
140 }
141
142 /**
143 * @tc.number: NativeArgsChildProcess_0600
144 * @tc.desc: Test NativeArgsChildProcess LoadNativeLib works
145 * @tc.type: FUNC
146 */
147 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_0600, TestSize.Level2)
148 {
149 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_0600 called.");
150 auto process = std::make_shared<NativeArgsChildProcess>();
151 EXPECT_TRUE(process != nullptr);
152
153 auto ret = process->LoadNativeLib(nullptr);
154 EXPECT_FALSE(ret);
155 }
156
157 /**
158 * @tc.number: NativeArgsChildProcess_0700
159 * @tc.desc: Test NativeArgsChildProcess LoadNativeLib works
160 * @tc.type: FUNC
161 */
162 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_0700, TestSize.Level2)
163 {
164 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_0700 called.");
165 auto process = std::make_shared<NativeArgsChildProcess>();
166 EXPECT_TRUE(process != nullptr);
167
168 std::shared_ptr<ChildProcessStartInfo> info = std::make_shared<ChildProcessStartInfo>();
169 info->name = "AProcess";
170 info->srcEntry = "entry/./ets/process/AProcess.ts";
171 info->moduleName = "entry";
172
173 auto ret = process->LoadNativeLib(info);
174 EXPECT_FALSE(ret);
175 }
176
177 /**
178 * @tc.number: NativeArgsChildProcess_0800
179 * @tc.desc: Test NativeArgsChildProcess LoadNativeLib works
180 * @tc.type: FUNC
181 */
182 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_0800, TestSize.Level2) {
183 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_0800 called.");
184 auto process = std::make_shared<NativeArgsChildProcess>();
185 EXPECT_TRUE(process != nullptr);
186
187 std::shared_ptr<ChildProcessStartInfo> info = std::make_shared<ChildProcessStartInfo>();
188 info->name = "AProcess";
189 info->srcEntry = "entry/./ets/process/AProcess.ts";
190 info->moduleName = "";
191
192 auto ret = process->LoadNativeLib(info);
193 EXPECT_FALSE(ret);
194 }
195
196 /**
197 * @tc.number: NativeArgsChildProcess_0900
198 * @tc.desc: Test NativeArgsChildProcess LoadNativeLib works
199 * @tc.type: FUNC
200 */
201 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_0900, TestSize.Level2) {
202 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_0900 called.");
203 auto process = std::make_shared<NativeArgsChildProcess>();
204 EXPECT_TRUE(process != nullptr);
205
206 std::shared_ptr<ChildProcessStartInfo> info = std::make_shared<ChildProcessStartInfo>();
207 info->moduleName = "";
208
209 bool ret = process->LoadNativeLib(info);
210 EXPECT_FALSE(ret);
211 }
212
213 /**
214 * @tc.number: NativeArgsChildProcess_1000
215 * @tc.desc: Test NativeArgsChildProcess LoadNativeLib works
216 * @tc.type: FUNC
217 */
218 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_1000, TestSize.Level2) {
219 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_1000 called.");
220 auto process = std::make_shared<NativeArgsChildProcess>();
221 EXPECT_TRUE(process != nullptr);
222
223 std::shared_ptr<ChildProcessStartInfo> info = std::make_shared<ChildProcessStartInfo>();
224 info->srcEntry = "";
225
226 bool ret = process->LoadNativeLib(info);
227 EXPECT_FALSE(ret);
228 }
229
230 /**
231 * @tc.number: NativeArgsChildProcess_1100
232 * @tc.desc: Test NativeArgsChildProcess LoadNativeLib works
233 * @tc.type: FUNC
234 */
235 HWTEST_F(NativeArgsChildProcessTest, NativeArgsChildProcess_1100, TestSize.Level2) {
236 TAG_LOGD(AAFwkTag::TEST, "NativeArgsChildProcess_1000 called.");
237 auto process = std::make_shared<NativeArgsChildProcess>();
238 auto info = std::make_shared<ChildProcessStartInfo>();
239 info->moduleName = "entry";
240 info->entryFunc = "";
241
242 bool ret = process->LoadNativeLib(info);
243 EXPECT_FALSE(ret);
244 }
245 } // namespace AbilityRuntime
246 } // namespace OHOS