1 /*
2  * Copyright (c) 2022 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 #include <gtest/gtest.h>
16 
17 #include "accessibility_ability_utils.h"
18 
19 using namespace OHOS;
20 using namespace OHOS::AAFwk;
21 using namespace OHOS::Accessibility;
22 using namespace testing::ext;
23 
24 class AccessibilityAbilityUtilsTest : public testing::Test {
25 public:
26     static void SetUpTestCase();
27     static void TearDownTestCase();
28     void SetUp() override;
29     void TearDown() override;
30 };
31 
SetUpTestCase()32 void AccessibilityAbilityUtilsTest::SetUpTestCase()
33 {}
34 
TearDownTestCase()35 void AccessibilityAbilityUtilsTest::TearDownTestCase()
36 {}
37 
SetUp()38 void AccessibilityAbilityUtilsTest::SetUp()
39 {}
40 
TearDown()41 void AccessibilityAbilityUtilsTest::TearDown()
42 {}
43 
44 /**
45  * @tc.number: GetStaticCapabilityNames_0100
46  * @tc.name: GetStaticCapabilityNames
47  * @tc.desc: Get StaticCapabilityNames Failed
48  */
49 HWTEST_F(AccessibilityAbilityUtilsTest, GetStaticCapabilityNames_0100, Function | MediumTest | Level1)
50 {
51     AccessibilityAbilityInitParams params;
52     AccessibilityAbilityInfo abilityInfo(params);
53     auto result = AccessibilityUtils::GetStaticCapabilityNames(abilityInfo);
54     EXPECT_EQ(result, "");
55 }
56 
57 /**
58  * @tc.number: GetStaticCapabilityNames_0200
59  * @tc.name: GetStaticCapabilityNames
60  * @tc.desc: Get StaticCapabilityNames Success
61  */
62 HWTEST_F(AccessibilityAbilityUtilsTest, GetStaticCapabilityNames_0200, Function | MediumTest | Level1)
63 {
64     AccessibilityAbilityInitParams params;
65     params.staticCapabilities = 0x0001;
66     AccessibilityAbilityInfo abilityInfo(params);
67     auto result = AccessibilityUtils::GetStaticCapabilityNames(abilityInfo);
68     EXPECT_EQ(result, "r");
69 }
70 
71 /**
72  * @tc.number: GetStaticCapabilityNames_0300
73  * @tc.name: GetStaticCapabilityNames
74  * @tc.desc: Get StaticCapabilityNames Success
75  */
76 HWTEST_F(AccessibilityAbilityUtilsTest, GetStaticCapabilityNames_0300, Function | MediumTest | Level1)
77 {
78     AccessibilityAbilityInitParams params;
79     params.staticCapabilities = 0x0010;
80     AccessibilityAbilityInfo abilityInfo(params);
81     auto result = AccessibilityUtils::GetStaticCapabilityNames(abilityInfo);
82     EXPECT_EQ(result, "z");
83 }
84 
85 /**
86  * @tc.number: FormatAbilityInfos_0100
87  * @tc.name: FormatAbilityInfos
88  * @tc.desc: Format AbilityInfos Failed
89  */
90 HWTEST_F(AccessibilityAbilityUtilsTest, FormatAbilityInfos_0100, Function | MediumTest | Level1)
91 {
92     std::vector<Accessibility::AccessibilityAbilityInfo> installedAbilities;
93     std::stringstream headerStream;
94     headerStream << std::left << std::setw(10) << "NO"
95         << std::left << std::setw(50) << "bundleName"
96         << std::left << std::setw(30) << "abilityName"
97         << std::left << std::setw(20) << "capabilities-abbr" << std::endl;
98     auto result = AccessibilityUtils::FormatAbilityInfos(installedAbilities);
99     EXPECT_EQ(result, headerStream.str());
100 }
101 
102 /**
103  * @tc.number: FormatAbilityInfos_0200
104  * @tc.name: FormatAbilityInfos
105  * @tc.desc: Format AbilityInfos Success
106  */
107 HWTEST_F(AccessibilityAbilityUtilsTest, FormatAbilityInfos_0200, Function | MediumTest | Level1)
108 {
109     std::vector<AccessibilityAbilityInfo> installedAbilities;
110     AccessibilityAbilityInitParams params;
111     params.name = "myapplication";
112     params.staticCapabilities = 10;
113     AccessibilityAbilityInfo abilityInfo(params);
114     std::string bundleName = "com.example.myapplication";
115     abilityInfo.SetPackageName(bundleName);
116     installedAbilities.emplace_back(abilityInfo);
117     auto result = AccessibilityUtils::FormatAbilityInfos(installedAbilities);
118     std::string resultstring = "";
119     std::stringstream headerStream;
120     headerStream << std::left << std::setw(10) << "NO"
121         << std::left << std::setw(50) << "bundleName"
122         << std::left << std::setw(30) << "abilityName"
123         << std::left << std::setw(20) << "capabilities-abbr" << std::endl;
124     resultstring.append(headerStream.str());
125 
126     std::stringstream lineStream;
127     std::string capabilityNames = AccessibilityUtils::GetStaticCapabilityNames(abilityInfo);
128     lineStream << std::left << std::setw(10) << std::to_string(1)
129         << std::left << std::setw(50) << bundleName
130         << std::left << std::setw(30) << params.name
131         << std::left << capabilityNames << std::endl;
132     resultstring.append(lineStream.str());
133     EXPECT_EQ(result, resultstring);
134 }
135 
136 /**
137  * @tc.number: GetCapabilityValue_0100
138  * @tc.name: GetCapabilityValue
139  * @tc.desc: Get Capability Value Success
140  */
141 HWTEST_F(AccessibilityAbilityUtilsTest, GetCapabilityValue_0100, Function | MediumTest | Level1)
142 {
143     auto result = AccessibilityUtils::GetCapabilityValue("r");
144     EXPECT_EQ(result, 0x0001);
145 }
146 
147 /**
148  * @tc.number: GetCapabilityValue_0200
149  * @tc.name: GetCapabilityValue
150  * @tc.desc: Get Capability Value Success
151  */
152 HWTEST_F(AccessibilityAbilityUtilsTest, GetCapabilityValue_0200, Function | MediumTest | Level1)
153 {
154     auto result = AccessibilityUtils::GetCapabilityValue("k");
155     EXPECT_EQ(result, 0x0008);
156 }
157 
158 /**
159  * @tc.number: GetCapabilityValue_0300
160  * @tc.name: GetCapabilityValue
161  * @tc.desc: Get Capability Value Success
162  */
163 HWTEST_F(AccessibilityAbilityUtilsTest, GetCapabilityValue_0300, Function | MediumTest | Level1)
164 {
165     auto result = AccessibilityUtils::GetCapabilityValue("z");
166     EXPECT_EQ(result, 0x0010);
167 }
168 
169 /**
170  * @tc.number: GetCapabilityValue_0400
171  * @tc.name: GetCapabilityValue
172  * @tc.desc: Get Capability Value Failed
173  */
174 HWTEST_F(AccessibilityAbilityUtilsTest, GetCapabilityValue_0400, Function | MediumTest | Level1)
175 {
176     auto result = AccessibilityUtils::GetCapabilityValue("a");
177     std::uint32_t i = 0;
178     EXPECT_EQ(result, i);
179 }
180 
181 /**
182  * @tc.number: GetCapabilityValue_0500
183  * @tc.name: GetCapabilityValue
184  * @tc.desc: Get CapabilityValue Failed
185  */
186 HWTEST_F(AccessibilityAbilityUtilsTest, GetCapabilityValue_0500, Function | MediumTest | Level1)
187 {
188     auto result = AccessibilityUtils::GetCapabilityValue("");
189     std::uint32_t i = 0;
190     EXPECT_EQ(result, i);
191 }
192 
193 /**
194  * @tc.number: GetCapabilityValue_0600
195  * @tc.name: GetCapabilityValue
196  * @tc.desc: Get Capability Value Success
197  */
198 HWTEST_F(AccessibilityAbilityUtilsTest, GetCapabilityValue_0600, Function | MediumTest | Level1)
199 {
200     auto result = AccessibilityUtils::GetCapabilityValue("zr");
201     EXPECT_EQ(result, 0x0001|0x0010);
202 }
203 
204 /**
205  * @tc.number: GetCapabilityValue_0700
206  * @tc.name: GetCapabilityValue
207  * @tc.desc: Get Capability Value Success
208  */
209 HWTEST_F(AccessibilityAbilityUtilsTest, GetCapabilityValue_0700, Function | MediumTest | Level1)
210 {
211     auto result = AccessibilityUtils::GetCapabilityValue("rtz");
212     EXPECT_EQ(result, 0x0001|0x0002|0x0010);
213 }
214 
215 /**
216  * @tc.number: GetInvalidCapabilityNames_0100
217  * @tc.name: GetInvalidCapabilityNames
218  * @tc.desc: Get Invalid Capability Names Success
219  */
220 HWTEST_F(AccessibilityAbilityUtilsTest, GetInvalidCapabilityNames_0100, Function | MediumTest | Level1)
221 {
222     auto result = AccessibilityUtils::GetInvalidCapabilityNames("asdfg", "zxcvb");
223     EXPECT_EQ(result, "asdfg");
224 }
225 
226 /**
227  * @tc.number: GetInvalidCapabilityNames_0200
228  * @tc.name: GetInvalidCapabilityNames
229  * @tc.desc: Get Invalid Capability Names Success
230  */
231 HWTEST_F(AccessibilityAbilityUtilsTest, GetInvalidCapabilityNames_0200, Function | MediumTest | Level1)
232 {
233     auto result = AccessibilityUtils::GetInvalidCapabilityNames("asdfg", "axcvb");
234     EXPECT_EQ(result, "sdfg");
235 }
236 
237 /**
238  * @tc.number: GetInvalidCapabilityNames_0300
239  * @tc.name: GetInvalidCapabilityNames
240  * @tc.desc: Get Invalid Capability Names Success
241  */
242 HWTEST_F(AccessibilityAbilityUtilsTest, GetInvalidCapabilityNames_0300, Function | MediumTest | Level1)
243 {
244     auto result = AccessibilityUtils::GetInvalidCapabilityNames("asdfg", "axdvb");
245     EXPECT_EQ(result, "sfg");
246 }
247 
248 /**
249  * @tc.number: GetInvalidCapabilityNames_0400
250  * @tc.name: GetInvalidCapabilityNames
251  * @tc.desc: Get Invalid Capability Names Success
252  */
253 HWTEST_F(AccessibilityAbilityUtilsTest, GetInvalidCapabilityNames_0400, Function | MediumTest | Level1)
254 {
255     auto result = AccessibilityUtils::GetInvalidCapabilityNames("asdfb", "axdvb");
256     EXPECT_EQ(result, "sf");
257 }
258 
259 /**
260  * @tc.number: GetInvalidCapabilityNames_0500
261  * @tc.name: GetInvalidCapabilityNames
262  * @tc.desc: Get Invalid Capability Names Failed
263  */
264 HWTEST_F(AccessibilityAbilityUtilsTest, GetInvalidCapabilityNames_0500, Function | MediumTest | Level1)
265 {
266     auto result = AccessibilityUtils::GetInvalidCapabilityNames("asdfb", "asdfb");
267     EXPECT_EQ(result, "");
268 }
269 
270 /**
271  * @tc.number: GetUnknownArgumentsMsg_0100
272  * @tc.name: GetUnknownArgumentsMsg
273  * @tc.desc: Get UnknownArguments Msg Failed
274  */
275 HWTEST_F(AccessibilityAbilityUtilsTest, GetUnknownArgumentsMsg_0100, Function | MediumTest | Level1)
276 {
277     std::vector<std::string> unknownArguments;
278     auto result = AccessibilityUtils::GetUnknownArgumentsMsg(unknownArguments);
279     EXPECT_EQ(result, "");
280 }
281 
282 /**
283  * @tc.number: GetUnknownArgumentsMsg_0200
284  * @tc.name: GetUnknownArgumentsMsg
285  * @tc.desc: Get UnknownArguments Msg Success
286  */
287 HWTEST_F(AccessibilityAbilityUtilsTest, GetUnknownArgumentsMsg_0200, Function | MediumTest | Level1)
288 {
289     std::vector<std::string> unknownArguments;
290     unknownArguments.emplace_back("abilityInfo");
291     auto result = AccessibilityUtils::GetUnknownArgumentsMsg(unknownArguments);
292     EXPECT_EQ(result, "abilityInfo ");
293 }
294 
295 /**
296  * @tc.number: GetUnknownArgumentsMsg_0300
297  * @tc.name: GetUnknownArgumentsMsg
298  * @tc.desc: Get UnknownArguments Msg Success
299  */
300 HWTEST_F(AccessibilityAbilityUtilsTest, GetUnknownArgumentsMsg_0300, Function | MediumTest | Level1)
301 {
302     std::vector<std::string> unknownArguments;
303     unknownArguments.emplace_back("abilityInfo");
304     unknownArguments.emplace_back("bundleInfo");
305     auto result = AccessibilityUtils::GetUnknownArgumentsMsg(unknownArguments);
306     EXPECT_EQ(result, "abilityInfo bundleInfo ");
307 }
308 
309 /**
310  * @tc.number: IsValidStateString_0100
311  * @tc.name: IsValidStateString
312  * @tc.desc: Is Valid State String
313  */
314 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidStateString_0100, Function | MediumTest | Level1)
315 {
316     std::string unknownArguments = " 0 ";
317     auto result = AccessibilityUtils::IsValidStateString(unknownArguments);
318     EXPECT_TRUE(result);
319 }
320 
321 /**
322  * @tc.number: IsValidStateString_0200
323  * @tc.name: IsValidStateString
324  * @tc.desc: Is Valid State String
325  */
326 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidStateString_0200, Function | MediumTest | Level1)
327 {
328     std::string unknownArguments = " 1 ";
329     auto result = AccessibilityUtils::IsValidStateString(unknownArguments);
330     EXPECT_TRUE(result);
331 }
332 
333 /**
334  * @tc.number: IsValidStateString_0300
335  * @tc.name: IsValidStateString
336  * @tc.desc: Is Not ValidState String
337  */
338 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidStateString_0300, Function | MediumTest | Level1)
339 {
340     std::string unknownArguments = " a ";
341     auto result = AccessibilityUtils::IsValidStateString(unknownArguments);
342     EXPECT_FALSE(result);
343 }
344 
345 /**
346  * @tc.number: IsValidStateString_0400
347  * @tc.name: IsValidStateString
348  * @tc.desc: Is Not Valid State String
349  */
350 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidStateString_0400, Function | MediumTest | Level1)
351 {
352     std::string unknownArguments;
353     auto result = AccessibilityUtils::IsValidStateString(unknownArguments);
354     EXPECT_FALSE(result);
355 }
356 
357 /**
358  * @tc.number: IsValidIntString_0100
359  * @tc.name: IsValidIntString
360  * @tc.desc: Is Not Valid Int String
361  */
362 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidIntString_0100, Function | MediumTest | Level1)
363 {
364     std::string unknownArguments;
365     auto result = AccessibilityUtils::IsValidIntString(unknownArguments, 0, 0);
366     EXPECT_FALSE(result);
367 }
368 
369 /**
370  * @tc.number: IsValidIntString_0200
371  * @tc.name: IsValidIntString
372  * @tc.desc: Is Not Valid Int String
373  */
374 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidIntString_0200, Function | MediumTest | Level1)
375 {
376     std::string unknownArguments = "-1111";
377     auto result = AccessibilityUtils::IsValidIntString(unknownArguments, 0, 0);
378     EXPECT_FALSE(result);
379 }
380 
381 /**
382  * @tc.number: IsValidIntString_0300
383  * @tc.name: IsValidIntString
384  * @tc.desc: Is Not Valid Int String
385  */
386 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidIntString_0300, Function | MediumTest | Level1)
387 {
388     std::string unknownArguments = "+1111";
389     auto result = AccessibilityUtils::IsValidIntString(unknownArguments, 0, 0);
390     EXPECT_FALSE(result);
391 }
392 
393 /**
394  * @tc.number: IsValidIntString_0400
395  * @tc.name: IsValidIntString
396  * @tc.desc: Is Not Valid Int String
397  */
398 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidIntString_0400, Function | MediumTest | Level1)
399 {
400     std::string unknownArguments = "+3";
401     auto result = AccessibilityUtils::IsValidIntString(unknownArguments, 0, 0);
402     EXPECT_FALSE(result);
403 }
404 
405 /**
406  * @tc.number: IsValidIntString_0500
407  * @tc.name: IsValidIntString
408  * @tc.desc: Is Valid Int String
409  */
410 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidIntString_0500, Function | MediumTest | Level1)
411 {
412     std::string unknownArguments = "+3";
413     auto result = AccessibilityUtils::IsValidIntString(unknownArguments, 0, 1000);
414     EXPECT_TRUE(result);
415 }
416 
417 /**
418  * @tc.number: IsValidIntString_0600
419  * @tc.name: IsValidIntString
420  * @tc.desc: Is Valid Int String
421  */
422 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidIntString_0600, Function | MediumTest | Level1)
423 {
424     std::string unknownArguments = "+";
425     auto result = AccessibilityUtils::IsValidIntString(unknownArguments, 0, 1000);
426     EXPECT_TRUE(result);
427 }
428 
429 /**
430  * @tc.number: IsValidIntString_0700
431  * @tc.name: IsValidIntString
432  * @tc.desc: Is Valid Int String
433  */
434 HWTEST_F(AccessibilityAbilityUtilsTest, IsValidIntString_0700, Function | MediumTest | Level1)
435 {
436     std::string unknownArguments = "-0";
437     auto result = AccessibilityUtils::IsValidIntString(unknownArguments, 0, 1000);
438     EXPECT_TRUE(result);
439 }
440 
441 /**
442  * @tc.number: Trim_0100
443  * @tc.name: Trim
444  * @tc.desc: Trim Null String
445  */
446 HWTEST_F(AccessibilityAbilityUtilsTest, Trim_0100, Function | MediumTest | Level1)
447 {
448     std::string inputStr = "";
449     auto result = AccessibilityUtils::Trim(inputStr);
450     EXPECT_EQ(result, "");
451 }
452 
453 /**
454  * @tc.number: Trim_0200
455  * @tc.name: Trim
456  * @tc.desc: Trim String Success
457  */
458 HWTEST_F(AccessibilityAbilityUtilsTest, Trim_0200, Function | MediumTest | Level1)
459 {
460     std::string inputStr = " 12121";
461     auto result = AccessibilityUtils::Trim(inputStr);
462     EXPECT_EQ(result, "12121");
463 }
464 
465 /**
466  * @tc.number: Trim_0300
467  * @tc.name: Trim
468  * @tc.desc: Trim String Success
469  */
470 HWTEST_F(AccessibilityAbilityUtilsTest, Trim_0300, Function | MediumTest | Level1)
471 {
472     std::string inputStr = " 12121 ";
473     auto result = AccessibilityUtils::Trim(inputStr);
474     EXPECT_EQ(result, "12121");
475 }
476 
477 /**
478  * @tc.number: Trim_0400
479  * @tc.name: Trim
480  * @tc.desc: Trim String Success
481  */
482 HWTEST_F(AccessibilityAbilityUtilsTest, Trim_0400, Function | MediumTest | Level1)
483 {
484     std::string inputStr = " 121 21 ";
485     auto result = AccessibilityUtils::Trim(inputStr);
486     EXPECT_EQ(result, "121 21");
487 }
488 
489 /**
490  * @tc.number: AddPermission_0100
491  * @tc.name: AddPermission
492  * @tc.desc: Add Permission Success
493  */
494 HWTEST_F(AccessibilityAbilityUtilsTest, AddPermission_0100, Function | MediumTest | Level1)
495 {
496     auto result = AccessibilityUtils::AddPermission();
497     EXPECT_EQ(result, 0);
498 }
499