• 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 <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