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 <string>
18 #include <vector>
19 #include "parcel.h"
20 #include <memory>
21 #include "dialog_session_info.h"
22 #include "hilog_tag_wrapper.h"
23
24 using namespace testing::ext;
25
26 namespace OHOS {
27 namespace AAFwk {
28 class DialogAbilityInfoTest : public testing::Test {
29 public:
30 static void SetUpTestCase();
31 static void TearDownTestCase();
32 void SetUp();
33 void TearDown();
34 };
35
SetUpTestCase()36 void DialogAbilityInfoTest::SetUpTestCase()
37 {}
38
TearDownTestCase()39 void DialogAbilityInfoTest::TearDownTestCase()
40 {}
41
SetUp()42 void DialogAbilityInfoTest::SetUp()
43 {}
44
TearDown()45 void DialogAbilityInfoTest::TearDown()
46 {}
47
48 /**
49 * @tc.name: GetURI_001
50 * @tc.desc: GetURI Test
51 * @tc.type: FUNC
52 */
53 HWTEST_F(DialogAbilityInfoTest, GetURI_001, TestSize.Level2)
54 {
55 TAG_LOGI(AAFwkTag::TEST, "GetURI_001 is start");
56 DialogAbilityInfo dialogAbilityInfo;
57 dialogAbilityInfo.bundleName = "com.example.app";
58 dialogAbilityInfo.moduleName = "main";
59 dialogAbilityInfo.abilityName = "home";
60 dialogAbilityInfo.bundleIconId = 1;
61 dialogAbilityInfo.bundleLabelId = 2;
62 dialogAbilityInfo.abilityIconId = 3;
63 dialogAbilityInfo.abilityLabelId = 4;
64 dialogAbilityInfo.visible = true;
65 dialogAbilityInfo.appIndex = 5;
66 dialogAbilityInfo.multiAppMode.multiAppModeType = AppExecFwk::MultiAppModeType::MULTI_INSTANCE;
67 dialogAbilityInfo.multiAppMode.maxCount = 10;
68
69 std::string expectedURI = "com.example.app/main/home/1/2/3/4/1/5/1/10";
70 EXPECT_EQ(dialogAbilityInfo.GetURI(), expectedURI);
71 }
72
73 /**
74 * @tc.name: GetURI_002
75 * @tc.desc: GetURI Test
76 * @tc.type: FUNC
77 */
78 HWTEST_F(DialogAbilityInfoTest, GetURI_002, TestSize.Level2)
79 {
80 TAG_LOGI(AAFwkTag::TEST, "GetURI_002 is start");
81 DialogAbilityInfo dialogAbilityInfo;
82 std::string expectedURI = "///0/0/0/0/1/0/0/0";
83 EXPECT_EQ(dialogAbilityInfo.GetURI(), expectedURI);
84 }
85
86 /**
87 * @tc.name: ParseURI_002
88 * @tc.desc: ParseURI Test
89 * @tc.type: FUNC
90 */
91 HWTEST_F(DialogAbilityInfoTest, ParseURI_002, TestSize.Level2)
92 {
93 TAG_LOGI(AAFwkTag::TEST, "ParseURI_002 is start");
94 DialogAbilityInfo dialogAbilityInfo;
95 std::string uri = "bundleName/moduleName/abilityName/0/1/2/3/0/4/5/6/7";
96 EXPECT_FALSE(dialogAbilityInfo.ParseURI(uri));
97 }
98
99 /**
100 * @tc.name: ParseURI_003
101 * @tc.desc: ParseURI Test
102 * @tc.type: FUNC
103 */
104 HWTEST_F(DialogAbilityInfoTest, ParseURI_003, TestSize.Level2)
105 {
106 TAG_LOGI(AAFwkTag::TEST, "ParseURI_003 is start");
107 DialogAbilityInfo dialogAbilityInfo;
108 std::string uri = dialogAbilityInfo.GetURI();
109 EXPECT_TRUE(dialogAbilityInfo.ParseURI(uri));
110 }
111
112 /**
113 * @tc.name: Split_001
114 * @tc.desc: Split Test
115 * @tc.type: FUNC
116 */
117 HWTEST_F(DialogAbilityInfoTest, Split_001, TestSize.Level2)
118 {
119 TAG_LOGI(AAFwkTag::TEST, "Split_001 is start");
120 DialogAbilityInfo dialogAbilityInfo;
121 std::vector<std::string> vec;
122 dialogAbilityInfo.Split("", ",", vec);
123 EXPECT_EQ(vec.size(), 0);
124 }
125
126 /**
127 * @tc.name: Split_002
128 * @tc.desc: Split Test
129 * @tc.type: FUNC
130 */
131 HWTEST_F(DialogAbilityInfoTest, Split_002, TestSize.Level2)
132 {
133 TAG_LOGI(AAFwkTag::TEST, "Split_002 is start");
134 DialogAbilityInfo dialogAbilityInfo;
135 std::vector<std::string> vec;
136 dialogAbilityInfo.Split("Hello", ",", vec);
137 EXPECT_EQ(vec.size(), 1);
138 EXPECT_EQ(vec[0], "Hello");
139 }
140
141 /**
142 * @tc.name: Split_003
143 * @tc.desc: Split Test
144 * @tc.type: FUNC
145 */
146 HWTEST_F(DialogAbilityInfoTest, Split_003, TestSize.Level2)
147 {
148 TAG_LOGI(AAFwkTag::TEST, "Split_003 is start");
149 DialogAbilityInfo dialogAbilityInfo;
150 std::vector<std::string> vec;
151 dialogAbilityInfo.Split("Hello,World,Test", ",", vec);
152 EXPECT_EQ(vec.size(), 3);
153 EXPECT_EQ(vec[0], "Hello");
154 EXPECT_EQ(vec[1], "World");
155 EXPECT_EQ(vec[2], "Test");
156 }
157
158 /**
159 * @tc.name: Split_004
160 * @tc.desc: Split Test
161 * @tc.type: FUNC
162 */
163 HWTEST_F(DialogAbilityInfoTest, Split_004, TestSize.Level2)
164 {
165 TAG_LOGI(AAFwkTag::TEST, "Split_004 is start");
166 DialogAbilityInfo dialogAbilityInfo;
167 std::vector<std::string> vec;
168 dialogAbilityInfo.Split("Hello,World,", ",", vec);
169 EXPECT_EQ(vec.size(), 2);
170 EXPECT_EQ(vec[0], "Hello");
171 EXPECT_EQ(vec[1], "World");
172 }
173
174 /**
175 * @tc.name: ReadFromParcel_001
176 * @tc.desc: ReadFromParcel Test
177 * @tc.type: FUNC
178 */
179 HWTEST_F(DialogAbilityInfoTest, ReadFromParcel_001, TestSize.Level2)
180 {
181 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_001 is start");
182 DialogSessionInfo dialogSessionInfo;
183 Parcel parcel;
184 std::string invalidUri = "invalidUri";
185 parcel.WriteString16(Str8ToStr16(invalidUri));
186 EXPECT_FALSE(dialogSessionInfo.ReadFromParcel(parcel));
187 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_001 is end");
188 }
189
190 /**
191 * @tc.name: ReadFromParcel_002
192 * @tc.desc: ReadFromParcel Test
193 * @tc.type: FUNC
194 */
195 HWTEST_F(DialogAbilityInfoTest, ReadFromParcel_002, TestSize.Level2)
196 {
197 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_002 is start");
198 DialogSessionInfo dialogSessionInfo;
199 Parcel parcel;
200 DialogAbilityInfo dialogAbilityInfo;
201 std::string validUri = dialogAbilityInfo.GetURI();
202 parcel.WriteString16(Str8ToStr16(validUri));
203 EXPECT_FALSE(dialogSessionInfo.ReadFromParcel(parcel));
204 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_002 is end");
205 }
206
207 /**
208 * @tc.name: ReadFromParcel_003
209 * @tc.desc: ReadFromParcel Test
210 * @tc.type: FUNC
211 */
212 HWTEST_F(DialogAbilityInfoTest, ReadFromParcel_003, TestSize.Level2)
213 {
214 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_003 is start");
215 DialogSessionInfo dialogSessionInfo;
216 Parcel parcel;
217 DialogAbilityInfo dialogAbilityInfo;
218 std::string validUri = dialogAbilityInfo.GetURI();
219 parcel.WriteString16(Str8ToStr16(validUri));
220 int32_t validSize = 1;
221 parcel.WriteInt32(validSize);
222 EXPECT_FALSE(dialogSessionInfo.ReadFromParcel(parcel));
223 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_003 is end");
224 }
225
226 /**
227 * @tc.name: ReadFromParcel_004
228 * @tc.desc: ReadFromParcel Test
229 * @tc.type: FUNC
230 */
231 HWTEST_F(DialogAbilityInfoTest, ReadFromParcel_004, TestSize.Level2)
232 {
233 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_004 is start");
234 DialogSessionInfo dialogSessionInfo;
235 Parcel parcel;
236 DialogAbilityInfo dialogAbilityInfo;
237 std::string validUri = dialogAbilityInfo.GetURI();
238 parcel.WriteString16(Str8ToStr16(validUri));
239 int32_t validSize = 1;
240 parcel.WriteInt32(validSize);
241 dialogSessionInfo.targetAbilityInfos.emplace_back(dialogAbilityInfo);
242 std::string invalidUri = "invalidUri";
243 parcel.WriteString16(Str8ToStr16(invalidUri));
244 EXPECT_FALSE(dialogSessionInfo.ReadFromParcel(parcel));
245 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_004 is end");
246 }
247
248 /**
249 * @tc.name: ReadFromParcel_005
250 * @tc.desc: ReadFromParcel Test
251 * @tc.type: FUNC
252 */
253 HWTEST_F(DialogAbilityInfoTest, ReadFromParcel_005, TestSize.Level2)
254 {
255 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_005 is start");
256 DialogSessionInfo dialogSessionInfo;
257 Parcel parcel;
258 DialogAbilityInfo dialogAbilityInfo;
259 std::string validUri = dialogAbilityInfo.GetURI();
260 parcel.WriteString16(Str8ToStr16(validUri));
261 int32_t validSize = 1;
262 parcel.WriteInt32(validSize);
263 dialogSessionInfo.targetAbilityInfos.emplace_back(dialogAbilityInfo);
264 std::string invalidUri = dialogAbilityInfo.GetURI();
265 parcel.WriteString16(Str8ToStr16(invalidUri));
266 EXPECT_FALSE(dialogSessionInfo.ReadFromParcel(parcel));
267 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_005 is end");
268 }
269
270 /**
271 * @tc.name: ReadFromParcel_006
272 * @tc.desc: ReadFromParcel Test
273 * @tc.type: FUNC
274 */
275 HWTEST_F(DialogAbilityInfoTest, ReadFromParcel_006, TestSize.Level2)
276 {
277 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_006 is start");
278 DialogSessionInfo dialogSessionInfo;
279 Parcel parcel;
280 DialogAbilityInfo dialogAbilityInfo;
281 std::string validUri = dialogAbilityInfo.GetURI();
282 parcel.WriteString16(Str8ToStr16(validUri));
283 int32_t validSize = 1;
284 parcel.WriteInt32(validSize);
285 dialogSessionInfo.targetAbilityInfos.emplace_back(dialogAbilityInfo);
286 std::string invalidUri = dialogAbilityInfo.GetURI();
287 parcel.WriteString16(Str8ToStr16(invalidUri));
288 AAFwk::WantParams params;
289 Parcelable *parcelable = ¶ms;
290 parcel.WriteParcelable(parcelable);
291 EXPECT_TRUE(dialogSessionInfo.ReadFromParcel(parcel));
292 TAG_LOGI(AAFwkTag::TEST, "ReadFromParcel_006 is end");
293 }
294
295 /**
296 * @tc.name: Marshalling_002
297 * @tc.desc: Marshalling Test
298 * @tc.type: FUNC
299 */
300 HWTEST_F(DialogAbilityInfoTest, Marshalling_002, TestSize.Level2)
301 {
302 TAG_LOGI(AAFwkTag::TEST, "Marshalling_002 is start");
303 Parcel parcel;
304 DialogSessionInfo dialogSessionInfo;
305 dialogSessionInfo.targetAbilityInfos.clear();
306 EXPECT_TRUE(dialogSessionInfo.Marshalling(parcel));
307 }
308
309 /**
310 * @tc.name: Unmarshalling_001
311 * @tc.desc: Unmarshalling Test
312 * @tc.type: FUNC
313 */
314 HWTEST_F(DialogAbilityInfoTest, Unmarshalling_001, TestSize.Level2)
315 {
316 TAG_LOGI(AAFwkTag::TEST, "Unmarshalling_001 is start");
317 Parcel parcel;
318 DialogSessionInfo dialogSessionInfo;
319 DialogSessionInfo *info = DialogSessionInfo::Unmarshalling(parcel);
320 EXPECT_EQ(info, nullptr);
321 }
322
323 /**
324 * @tc.name: Unmarshalling_002
325 * @tc.desc: Unmarshalling Test
326 * @tc.type: FUNC
327 */
328 HWTEST_F(DialogAbilityInfoTest, Unmarshalling_002, TestSize.Level2)
329 {
330 TAG_LOGI(AAFwkTag::TEST, "Unmarshalling_002 is start");
331 Parcel parcel;
332 DialogAbilityInfo dialogAbilityInfo;
333 DialogSessionInfo dialogSessionInfo;
334 std::string validUri = dialogAbilityInfo.GetURI();
335 parcel.WriteString16(Str8ToStr16(validUri));
336 int32_t validSize = 1;
337 parcel.WriteInt32(validSize);
338 dialogSessionInfo.targetAbilityInfos.emplace_back(dialogAbilityInfo);
339 std::string invalidUri = dialogAbilityInfo.GetURI();
340 parcel.WriteString16(Str8ToStr16(invalidUri));
341 AAFwk::WantParams params;
342 Parcelable *parcelable = ¶ms;
343 parcel.WriteParcelable(parcelable);
344 DialogSessionInfo *info = DialogSessionInfo::Unmarshalling(parcel);
345 EXPECT_NE(info, nullptr);
346 delete info;
347 }
348 } // AAFwk
349 } // OHOS