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