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