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 <fcntl.h>
17 #include <gtest/gtest.h>
18 #include <unistd.h>
19 #include "accessibility_dumper.h"
20 #include "mock_accessible_ability_connection.h"
21 #include "mock_accessible_ability_manager_service.h"
22 #include "string_ex.h"
23
24 using namespace testing;
25 using namespace testing::ext;
26
27 namespace OHOS {
28 namespace Accessibility {
29 class AccessibilityDumperUnitTest : public ::testing::Test {
30 public:
AccessibilityDumperUnitTest()31 AccessibilityDumperUnitTest()
32 {}
~AccessibilityDumperUnitTest()33 ~AccessibilityDumperUnitTest()
34 {}
35
36 static void SetUpTestCase();
37 static void TearDownTestCase();
38 void SetUp() override;
39 void TearDown() override;
40
41 int fd_ = -1;
42 sptr<AccessibilityDumper> dumper_ = nullptr;
43 };
44
SetUpTestCase()45 void AccessibilityDumperUnitTest::SetUpTestCase()
46 {
47 GTEST_LOG_(INFO) << "###################### AccessibilityDumperUnitTest Start ######################";
48 }
49
TearDownTestCase()50 void AccessibilityDumperUnitTest::TearDownTestCase()
51 {
52 GTEST_LOG_(INFO) << "###################### AccessibilityDumperUnitTest End ######################";
53 }
54
SetUp()55 void AccessibilityDumperUnitTest::SetUp()
56 {
57 fd_ = open("/dev/stdout", O_WRONLY);
58 dumper_ = new AccessibilityDumper();
59 }
60
TearDown()61 void AccessibilityDumperUnitTest::TearDown()
62 {
63 close(fd_);
64 dumper_ = nullptr;
65 }
66
67 /**
68 * @tc.number: AccessibilityDumper_Unittest_Dump_001
69 * @tc.name: Dump
70 * @tc.desc: Test function Dump
71 */
72 HWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_001, TestSize.Level1)
73 {
74 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_001 start";
75
76 std::vector<std::u16string> args;
77 int ret = dumper_->Dump(-1, args);
78 EXPECT_EQ(-1, ret);
79
80 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_001 end";
81 }
82
83 /**
84 * @tc.number: AccessibilityDumper_Unittest_Dump_002
85 * @tc.name: Dump
86 * @tc.desc: Test function Dump
87 */
88 HWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_002, TestSize.Level1)
89 {
90 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_002 start";
91
92 std::vector<std::u16string> args;
93 int ret = dumper_->Dump(fd_, args);
94 EXPECT_GE(ret, -1);
95
96 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_002 end";
97 }
98
99 /**
100 * @tc.number: AccessibilityDumper_Unittest_Dump_003
101 * @tc.name: Dump
102 * @tc.desc: Test function Dump
103 */
104 HWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_003, TestSize.Level1)
105 {
106 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_003 start";
107
108 std::string cmdHelp("-h");
109 std::vector<std::u16string> args;
110 args.emplace_back(Str8ToStr16(cmdHelp));
111 int ret = dumper_->Dump(fd_, args);
112 EXPECT_GE(ret, -1);
113
114 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_003 end";
115 }
116
117 /**
118 * @tc.number: AccessibilityDumper_Unittest_Dump_004
119 * @tc.name: Dump
120 * @tc.desc: Test function Dump
121 */
122 HWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_004, TestSize.Level1)
123 {
124 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_004 start";
125 sptr<AccessibilityAccountData> currentAccount =
126 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
127 if (!currentAccount) {
128 GTEST_LOG_(ERROR) << "Account data is nullptr";
129 return;
130 }
131 std::shared_ptr<AccessibilitySettingsConfig> config = currentAccount->GetConfig();
132 if (!config) {
133 GTEST_LOG_(ERROR) << "Config is nullptr";
134 return;
135 }
136 config->SetCaptionState(true);
137
138 std::string cmdUser("-u");
139 std::vector<std::u16string> args;
140 args.emplace_back(Str8ToStr16(cmdUser));
141 int ret = dumper_->Dump(fd_, args);
142 EXPECT_GE(ret, -1);
143
144 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_004 end";
145 }
146
147 /**
148 * @tc.number: AccessibilityDumper_Unittest_Dump_005
149 * @tc.name: Dump
150 * @tc.desc: Test function Dump
151 */
152 HWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_005, TestSize.Level1)
153 {
154 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_005 start";
155 AccessibilityAbilityInitParams initParams;
156 initParams.bundleName = "ohos";
157 initParams.moduleName = "accessibility";
158 initParams.name = "test";
159 initParams.description = "for dumper-ut";
160 std::shared_ptr<AccessibilityAbilityInfo> abilityInfo = std::make_shared<AccessibilityAbilityInfo>(initParams);
161 sptr<AccessibilityAccountData> currentAccount =
162 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
163 if (!currentAccount) {
164 GTEST_LOG_(ERROR) << "Account data is nullptr";
165 return;
166 }
167 sptr<AccessibleAbilityConnection> connection =
168 new MockAccessibleAbilityConnection(currentAccount->GetAccountId(), 0, *abilityInfo);
169 if (!connection) {
170 GTEST_LOG_(ERROR) << "Connection is nullptr";
171 return;
172 }
173 currentAccount->AddConnectedAbility(connection);
174
175 std::string cmdClient("-c");
176 std::vector<std::u16string> args;
177 args.emplace_back(Str8ToStr16(cmdClient));
178 int ret = dumper_->Dump(fd_, args);
179 EXPECT_GE(ret, -1);
180
181 currentAccount->RemoveConnectedAbility(connection->GetElementName());
182 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_005 end";
183 }
184
185 /**
186 * @tc.number: AccessibilityDumper_Unittest_Dump_006
187 * @tc.name: Dump
188 * @tc.desc: Test function Dump.
189 */
190 HWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_006, TestSize.Level1)
191 {
192 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_006 start";
193 const int32_t accountId = 1;
194 const int32_t windowId = 1;
195 sptr<AccessibilityAccountData> currentAccount =
196 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
197 if (!currentAccount) {
198 GTEST_LOG_(ERROR) << "Account data is nullptr";
199 return;
200 }
201 sptr<AccessibilityWindowConnection> operationConnection =
202 new AccessibilityWindowConnection(windowId, nullptr, accountId);
203 /* add asacConnections */
204 currentAccount->AddAccessibilityWindowConnection(windowId, operationConnection);
205
206 std::string cmdWindow("-w");
207 std::vector<std::u16string> args;
208 args.emplace_back(Str8ToStr16(cmdWindow));
209 int ret = dumper_->Dump(fd_, args);
210 EXPECT_GE(ret, -1);
211
212 currentAccount->RemoveAccessibilityWindowConnection(windowId);
213 GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_006 end";
214 }
215 } // namespace Accessibility
216 } // namespace OHOS