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 <map>
18 #include <memory>
19 #include "accessibility_common_helper.h"
20 #include "accessibility_mouse_autoclick.h"
21 #include "accessibility_ut_helper.h"
22 #include "accessible_ability_manager_service.h"
23
24 using namespace testing;
25 using namespace testing::ext;
26
27 namespace OHOS {
28 namespace Accessibility {
29 namespace {
30 constexpr int32_t DELAY_TIME = 100;
31 } // namespace
32
33 class AccessibilityMouseAutoclickUnitTest : public ::testing::Test {
34 public:
AccessibilityMouseAutoclickUnitTest()35 AccessibilityMouseAutoclickUnitTest()
36 {}
~AccessibilityMouseAutoclickUnitTest()37 ~AccessibilityMouseAutoclickUnitTest()
38 {}
39
40 static void SetUpTestCase();
41 static void TearDownTestCase();
42 void SetUp() override;
43 void TearDown() override;
44
45 std::shared_ptr<AccessibilityMouseAutoclick> mouseAutoclick_ = nullptr;
46 };
47
SetUpTestCase()48 void AccessibilityMouseAutoclickUnitTest::SetUpTestCase()
49 {
50 GTEST_LOG_(INFO) << "###################### AccessibilityMouseAutoclickUnitTest Start ######################";
51 Singleton<AccessibleAbilityManagerService>::GetInstance().OnStart();
52 AccessibilityCommonHelper::GetInstance().WaitForServicePublish();
53 }
54
TearDownTestCase()55 void AccessibilityMouseAutoclickUnitTest::TearDownTestCase()
56 {
57 GTEST_LOG_(INFO) << "###################### AccessibilityMouseAutoclickUnitTest End ######################";
58 Singleton<AccessibleAbilityManagerService>::GetInstance().OnStop();
59 }
60
SetUp()61 void AccessibilityMouseAutoclickUnitTest::SetUp()
62 {
63 GTEST_LOG_(INFO) << "SetUp";
64 mouseAutoclick_ = std::make_shared<AccessibilityMouseAutoclick>();
65 }
66
TearDown()67 void AccessibilityMouseAutoclickUnitTest::TearDown()
68 {
69 GTEST_LOG_(INFO) << "TearDown";
70 mouseAutoclick_ = nullptr;
71 }
72
73 /**
74 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_001
75 * @tc.name: OnPointerEvent
76 * @tc.desc: Test function OnPointerEvent
77 * @tc.require: issueI5NTXC
78 */
79 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_001, TestSize.Level1)
80 {
81 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_001 start";
82 if (!mouseAutoclick_) {
83 return;
84 }
85 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
86 if (!event) {
87 return;
88 }
89 sptr<AccessibilityAccountData> accountData =
90 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
91 if (!accountData) {
92 return;
93 }
94 accountData->GetConfig()->SetMouseAutoClick(DELAY_TIME);
95 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
96 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
97 MMI::PointerEvent::PointerItem item;
98 event->AddPointerItem(item);
99 mouseAutoclick_->OnPointerEvent(*event);
100 sleep(2);
101
102 EXPECT_NE(event.get(), nullptr);
103 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_001 end";
104 }
105
106 /**
107 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002
108 * @tc.name: OnPointerEvent
109 * @tc.desc: Test function OnPointerEvent
110 * @tc.require: issueI5NTXC
111 */
112 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002, TestSize.Level1)
113 {
114 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002 start";
115 if (!mouseAutoclick_) {
116 return;
117 }
118 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
119 if (!event) {
120 return;
121 }
122 sptr<AccessibilityAccountData> accountData =
123 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
124 if (!accountData) {
125 return;
126 }
127 accountData->GetConfig()->SetMouseAutoClick(DELAY_TIME);
128 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
129 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
130 event->SetPointerId(1);
131 MMI::PointerEvent::PointerItem item;
132 item.SetPointerId(1);
133 event->AddPointerItem(item);
134 mouseAutoclick_->OnPointerEvent(*event);
135
136 MMI::PointerEvent::PointerItem item1;
137 item1.SetPointerId(1);
138 item1.SetDisplayX(1);
139 item1.SetDisplayY(1);
140 event->UpdatePointerItem(1, item1);
141 mouseAutoclick_->OnPointerEvent(*event);
142 sleep(2);
143
144 EXPECT_NE(event.get(), nullptr);
145 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_002 end";
146 }
147
148 /**
149 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003
150 * @tc.name: OnPointerEvent
151 * @tc.desc: Test function OnPointerEvent
152 * @tc.require: issueI5NTXC
153 */
154 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003, TestSize.Level1)
155 {
156 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003 start";
157 if (!mouseAutoclick_) {
158 return;
159 }
160 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
161 if (!event) {
162 return;
163 }
164 sptr<AccessibilityAccountData> accountData =
165 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
166 if (!accountData) {
167 return;
168 }
169 accountData->GetConfig()->SetMouseAutoClick(DELAY_TIME);
170 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
171 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
172 event->SetPointerId(1);
173 MMI::PointerEvent::PointerItem item;
174 item.SetPointerId(1);
175 event->AddPointerItem(item);
176 mouseAutoclick_->OnPointerEvent(*event);
177 mouseAutoclick_->OnPointerEvent(*event);
178 sleep(2);
179
180 EXPECT_NE(event.get(), nullptr);
181 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_003 end";
182 }
183
184 /**
185 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004
186 * @tc.name: OnPointerEvent
187 * @tc.desc: Test function OnPointerEvent
188 * @tc.require: issueI5NTXC
189 */
190 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004, TestSize.Level1)
191 {
192 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004 start";
193 if (!mouseAutoclick_) {
194 return;
195 }
196 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
197 if (!event) {
198 return;
199 }
200 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
201 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_UP);
202 MMI::PointerEvent::PointerItem item;
203 event->AddPointerItem(item);
204 mouseAutoclick_->OnPointerEvent(*event);
205
206 EXPECT_NE(event.get(), nullptr);
207 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_004 end";
208 }
209
210 /**
211 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_005
212 * @tc.name: OnPointerEvent
213 * @tc.desc: Test function OnPointerEvent
214 */
215 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_005, TestSize.Level1)
216 {
217 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_005 start";
218 if (!mouseAutoclick_) {
219 return;
220 }
221 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
222 if (!event) {
223 return;
224 }
225 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
226 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
227 MMI::PointerEvent::PointerItem item;
228 event->AddPointerItem(item);
229 mouseAutoclick_->OnPointerEvent(*event);
230
231 EXPECT_NE(event.get(), nullptr);
232 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_005 end";
233 }
234
235 /**
236 * @tc.number: AccessibilityMouseAutoclick_Unittest_OnPointerEvent_006
237 * @tc.name: OnPointerEvent
238 * @tc.desc: Test function OnPointerEvent
239 */
240 HWTEST_F(AccessibilityMouseAutoclickUnitTest, AccessibilityMouseAutoclick_Unittest_OnPointerEvent_006, TestSize.Level1)
241 {
242 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_006 start";
243 if (!mouseAutoclick_) {
244 return;
245 }
246 std::shared_ptr<MMI::PointerEvent> event = MMI::PointerEvent::Create();
247 if (!event) {
248 return;
249 }
250 event->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_MOUSE);
251 event->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_UP);
252 MMI::PointerEvent::PointerItem item;
253 event->AddPointerItem(item);
254 mouseAutoclick_->OnPointerEvent(*event);
255
256 EXPECT_NE(event.get(), nullptr);
257 GTEST_LOG_(INFO) << "AccessibilityMouseAutoclick_Unittest_OnPointerEvent_006 end";
258 }
259 } // namespace Accessibility
260 } // namespace OHOS