• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
16 #include <gtest/gtest.h>
17 #include "accessibility_ability_info.h"
18 #include "accessibility_event_info.h"
19 #include "json.h"
20 
21 using namespace testing;
22 using namespace testing::ext;
23 using namespace std;
24 using namespace Json;
25 
26 namespace OHOS {
27 namespace Accessibility {
28 const string TEST_BUNDLE_NAME = "TestBundleName";
29 const string TEST_MODULE_NAME = "TestModuleName";
30 const string TEST_NAME = "TestName";
31 const string TEST_DESCRIPTION = "TestDescription";
32 
33 const int TIME_10000 = 10000;
34 const int SIZE_TWO = 2;
35 class AccessibilityAbilityInfoUnitTest : public ::testing::Test {
36 public:
AccessibilityAbilityInfoUnitTest()37     AccessibilityAbilityInfoUnitTest() {}
~AccessibilityAbilityInfoUnitTest()38     ~AccessibilityAbilityInfoUnitTest() {}
39 
40     static void SetUpTestCase();
41     static void TearDownTestCase();
42     void SetUp() override;
43     void TearDown() override;
44 
45     void WritefileAll(const char* fname, const char* data);
46     void CreateAccessibilityConfig();
47     shared_ptr<AccessibilityAbilityInfo> accessibilityAbilityInfo_ = nullptr;
48 };
49 
WritefileAll(const char * fname,const char * data)50 void AccessibilityAbilityInfoUnitTest::WritefileAll(const char* fname, const char* data)
51 {
52     FILE *fp;
53     if (!(fp = fopen(fname, "w"))) {
54         printf("open file %s fail \n", fname);
55         return;
56     }
57 
58     (void)fprintf(fp, "%s", data);
59     (void)fclose(fp);
60 }
61 
CreateAccessibilityConfig()62 void AccessibilityAbilityInfoUnitTest::CreateAccessibilityConfig()
63 {
64     std::ostringstream os;
65     Json::Value object1, targetBundleNames;
66     Json::Value accessibilityAbilityTypes, accessibilityEventTypes, accessibilityCapabilities;
67     string jsonStr;
68 
69     if (!remove("/system/app/dummy_accessibility_ability_config.json")) {
70         GTEST_LOG_(INFO) << "remove successful";
71     } else {
72         GTEST_LOG_(INFO) << "remove failed";
73     }
74 
75     accessibilityEventTypes[0] = "all";
76     object1["accessibilityEventTypes"] = accessibilityEventTypes;
77     targetBundleNames[0] = "com.example.ohos.api1";
78     targetBundleNames[1] = "com.example.ohos.api2";
79     object1["targetBundleNames"] = targetBundleNames;
80     accessibilityAbilityTypes[0] = "spoken";
81     accessibilityAbilityTypes[1] = "haptic";
82     accessibilityAbilityTypes[SIZE_TWO] = "audible";
83     object1["accessibilityAbilityTypes"] = accessibilityAbilityTypes;
84     object1["notificationTimeout"] = 0;
85     object1["uiNoninteractiveTimeout"] = 0;
86     object1["uiInteractiveTimeout"] = TIME_10000;
87     accessibilityCapabilities[0] = "touchGuide";
88     object1["accessibilityCapabilities"] = accessibilityCapabilities;
89     object1["description"] = "$string:accessibility_service_description";
90     object1["settingsAbility"] = "com.example.ohos.accessibility.ServiceSettingsAbility";
91 
92     Json::StreamWriterBuilder writerBuilder;
93 
94     std::unique_ptr<Json::StreamWriter> jsonWriter(writerBuilder.newStreamWriter());
95     jsonWriter->write(object1, &os);
96     jsonStr = os.str();
97     WritefileAll("/system/app/dummy_accessibility_ability_config.json",  jsonStr.c_str());
98 }
99 
SetUpTestCase()100 void AccessibilityAbilityInfoUnitTest::SetUpTestCase()
101 {
102     GTEST_LOG_(INFO) << "###################### AccessibilityAbilityInfoUnitTest Start ######################";
103 }
104 
TearDownTestCase()105 void AccessibilityAbilityInfoUnitTest::TearDownTestCase()
106 {
107     GTEST_LOG_(INFO) << "###################### AccessibilityAbilityInfoUnitTest End ######################";
108 }
109 
SetUp()110 void AccessibilityAbilityInfoUnitTest::SetUp()
111 {
112     GTEST_LOG_(INFO) << "SetUp";
113     CreateAccessibilityConfig();
114 
115     AppExecFwk::ExtensionAbilityInfo abilityInfo;
116     abilityInfo.bundleName = TEST_BUNDLE_NAME;
117     abilityInfo.moduleName = TEST_MODULE_NAME;
118     abilityInfo.name = TEST_NAME;
119     abilityInfo.description = TEST_DESCRIPTION;
120     accessibilityAbilityInfo_ = make_shared<AccessibilityAbilityInfo>(abilityInfo);
121 }
122 
TearDown()123 void AccessibilityAbilityInfoUnitTest::TearDown()
124 {
125     GTEST_LOG_(INFO) << "TearDown";
126     accessibilityAbilityInfo_ = nullptr;
127 }
128 
129 /**
130  * @tc.number: AccessibilityAbilityInfo_Unittest_GetAccessibilityAbilityType_001
131  * @tc.name: GetAccessibilityAbilityType
132  * @tc.desc: Test function GetAccessibilityAbilityType
133  */
134 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_GetAccessibilityAbilityType_001,
135     TestSize.Level1)
136 {
137     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetAccessibilityAbilityType_001 start";
138 
139     uint32_t abilityTypes = 0;
140     EXPECT_EQ(accessibilityAbilityInfo_->GetAccessibilityAbilityType(), abilityTypes);
141 
142     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetAccessibilityAbilityType_001 end";
143 }
144 
145 /**
146  * @tc.number: AccessibilityAbilityInfo_Unittest_GetCapabilityValues_001
147  * @tc.name: GetCapabilityValues
148  * @tc.desc: Test function GetCapabilityValues
149  */
150 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_GetCapabilityValues_001, TestSize.Level1)
151 {
152     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetCapabilityValues_001 start";
153 
154     uint32_t capabilities = 0;
155     EXPECT_EQ(accessibilityAbilityInfo_->GetCapabilityValues(), capabilities);
156 
157     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetCapabilityValues_001 end";
158 }
159 
160 /**
161  * @tc.number: AccessibilityAbilityInfo_Unittest_GetDescription_001
162  * @tc.name: GetDescription
163  * @tc.desc: Test function GetDescription
164  */
165 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_GetDescription_001, TestSize.Level1)
166 {
167     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetDescription_001 start";
168 
169     EXPECT_STREQ(accessibilityAbilityInfo_->GetDescription().c_str(), TEST_DESCRIPTION.c_str());
170 
171     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetDescription_001 end";
172 }
173 
174 /**
175  * @tc.number: AccessibilityAbilityInfo_Unittest_GetEventTypes_001
176  * @tc.name: GetEventTypes
177  * @tc.desc: Test function GetEventTypes
178  */
179 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_GetEventTypes_001, TestSize.Level1)
180 {
181     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetEventTypes_001 start";
182     uint32_t eventType = EventType::TYPES_ALL_MASK;
183     EXPECT_EQ(accessibilityAbilityInfo_->GetEventTypes(), eventType);
184 
185     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetEventTypes_001 end";
186 }
187 
188 /**
189  * @tc.number: AccessibilityAbilityInfo_Unittest_GetId_001
190  * @tc.name: GetId
191  * @tc.desc: Test function GetId
192  */
193 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_GetId_001, TestSize.Level1)
194 {
195     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetId_001 start";
196 
197     EXPECT_STREQ(accessibilityAbilityInfo_->GetId().c_str(), (TEST_BUNDLE_NAME + "/" + TEST_NAME).c_str());
198 
199     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetId_001 end";
200 }
201 
202 /**
203  * @tc.number: AccessibilityAbilityInfo_Unittest_GetName_001
204  * @tc.name: GetName
205  * @tc.desc: Test function GetName
206  */
207 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_GetName_001, TestSize.Level1)
208 {
209     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetName_001 start";
210 
211     EXPECT_STREQ(accessibilityAbilityInfo_->GetName().c_str(), TEST_NAME.c_str());
212 
213     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetName_001 end";
214 }
215 
216 /**
217  * @tc.number: AccessibilityAbilityInfo_Unittest_GetPackageName_001
218  * @tc.name: GetPackageName
219  * @tc.desc: Test function GetPackageName
220  */
221 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_GetPackageName_001, TestSize.Level1)
222 {
223     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetPackageName_001 start";
224 
225     EXPECT_STREQ(accessibilityAbilityInfo_->GetPackageName().c_str(), TEST_BUNDLE_NAME.c_str());
226 
227     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetPackageName_001 end";
228 }
229 
230 /**
231  * @tc.number: AccessibilityAbilityInfo_Unittest_GetFilterBundleNames_001
232  * @tc.name: GetFilterBundleNames
233  * @tc.desc: Test function GetFilterBundleNames
234  */
235 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_GetFilterBundleNames_001, TestSize.Level1)
236 {
237     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetFilterBundleNames_001 start";
238 
239     ASSERT_EQ((int)accessibilityAbilityInfo_->GetFilterBundleNames().size(), 0);
240 
241     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetFilterBundleNames_001 end";
242 }
243 
244 /**
245  * @tc.number: AccessibilityAbilityInfo_Unittest_GetSettingsAbility_001
246  * @tc.name: GetSettingsAbility
247  * @tc.desc: Test function GetFilterGetSettingsAbilityBundleNames
248  */
249 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_GetSettingsAbility_001, TestSize.Level1)
250 {
251     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetSettingsAbility_001 start";
252 
253     EXPECT_STREQ(accessibilityAbilityInfo_->GetSettingsAbility().c_str(), "");
254 
255     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_GetSettingsAbility_001 end";
256 }
257 
258 /**
259  * @tc.number: AccessibilityAbilityInfo_Unittest_ReadFromParcel_001
260  * @tc.name: ReadFromParcel
261  * @tc.desc: Test function ReadFromParcel
262  */
263 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_ReadFromParcel_001, TestSize.Level1)
264 {
265     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_ReadFromParcel_001 start";
266 
267     Parcel parcel;
268     accessibilityAbilityInfo_->Marshalling(parcel);
269     EXPECT_TRUE(accessibilityAbilityInfo_->ReadFromParcel(parcel));
270 
271     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_ReadFromParcel_001 end";
272 }
273 
274 /**
275  * @tc.number: AccessibilityAbilityInfo_Unittest_Marshalling_001
276  * @tc.name: Marshalling
277  * @tc.desc: Test function Marshalling
278  */
279 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_Marshalling_001, TestSize.Level1)
280 {
281     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_Marshalling_001 start";
282 
283     Parcel parcel;
284     EXPECT_TRUE(accessibilityAbilityInfo_->Marshalling(parcel));
285 
286     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_Marshalling_001 end";
287 }
288 
289 /**
290  * @tc.number: AccessibilityAbilityInfo_Unittest_Unmarshalling_001
291  * @tc.name: Unmarshalling
292  * @tc.desc: Test function Unmarshalling
293  */
294 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_Unmarshalling_001, TestSize.Level1)
295 {
296     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_Unmarshalling_001 start";
297 
298     Parcel parcel;
299     accessibilityAbilityInfo_->Marshalling(parcel);
300     AccessibilityAbilityInfo *obj = accessibilityAbilityInfo_->Unmarshalling(parcel);
301 
302     ASSERT_TRUE(obj);
303     EXPECT_EQ(obj->GetAccessibilityAbilityType(), accessibilityAbilityInfo_->GetAccessibilityAbilityType());
304     EXPECT_EQ(obj->GetCapabilityValues(), accessibilityAbilityInfo_->GetCapabilityValues());
305     EXPECT_STREQ(obj->GetDescription().c_str(), accessibilityAbilityInfo_->GetDescription().c_str());
306     EXPECT_EQ(obj->GetEventTypes(), accessibilityAbilityInfo_->GetEventTypes());
307     EXPECT_STREQ(obj->GetId().c_str(), accessibilityAbilityInfo_->GetId().c_str());
308     EXPECT_STREQ(obj->GetName().c_str(), accessibilityAbilityInfo_->GetName().c_str());
309     EXPECT_STREQ(obj->GetPackageName().c_str(), accessibilityAbilityInfo_->GetPackageName().c_str());
310     EXPECT_EQ(obj->GetFilterBundleNames().size(), accessibilityAbilityInfo_->GetFilterBundleNames().size());
311     ASSERT_EQ((int)obj->GetFilterBundleNames().size(), 0);
312 
313     EXPECT_STREQ(obj->GetSettingsAbility().c_str(), accessibilityAbilityInfo_->GetSettingsAbility().c_str());
314 
315     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_Unmarshalling_001 end";
316 }
317 
318 /**
319  * @tc.number: AccessibilityAbilityInfo_Unittest_SetCapabilityValues_001
320  * @tc.name: SetCapabilityValues
321  * @tc.desc: Test function SetCapabilityValues
322  */
323 HWTEST_F(AccessibilityAbilityInfoUnitTest, AccessibilityAbilityInfo_Unittest_SetCapabilityValues_001, TestSize.Level1)
324 {
325     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_SetCapabilityValues_001 start";
326 
327     accessibilityAbilityInfo_->SetCapabilityValues(Capability::CAPABILITY_RETRIEVE);
328     EXPECT_EQ(accessibilityAbilityInfo_->GetCapabilityValues(), Capability::CAPABILITY_RETRIEVE);
329 
330     GTEST_LOG_(INFO) << "AccessibilityAbilityInfo_Unittest_SetCapabilityValues_001 end";
331 }
332 } // namespace Accessibility
333 } // namespace OHOS
334