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_common_helper.h"
18 #include "accessibility_element_operator_proxy.h"
19 #include "accessibility_touch_guider.h"
20 #include "accessibility_ut_helper.h"
21
22 using namespace testing;
23 using namespace testing::ext;
24
25 namespace OHOS {
26 namespace Accessibility {
27 namespace {
28 constexpr uint32_t SLEEP_TIME_3 = 3;
29 constexpr int64_t MS_TO_US = 1000;
30 constexpr int32_t ACCOUNT_ID = 100;
31 constexpr int32_t WINDOW_ID = 2;
32 } // namespace
33
34 class TouchGuiderTest : public testing::Test {
35 public:
TouchGuiderTest()36 TouchGuiderTest()
37 {}
~TouchGuiderTest()38 ~TouchGuiderTest()
39 {}
40
41 static void SetUpTestCase();
42 static void TearDownTestCase();
43 bool TestEventType();
44 bool TestEventAction();
45 void SetUp() override;
46 void TearDown() override;
47
48 protected:
49 std::shared_ptr<MMI::PointerEvent> CreateTouchEvent(int32_t action);
50 std::shared_ptr<MMI::PointerEvent> CreateTouchEvent(int32_t action,
51 std::vector<MMI::PointerEvent::PointerItem> &points, int32_t pointerCount, int64_t occurredTime,
52 int64_t startTime);
53 std::shared_ptr<MMI::PointerEvent> CreateMoveEvent(int32_t pointerCount);
54 std::unique_ptr<TouchGuider> touchGuider_ = nullptr;
55 int32_t pointId_ = -1;
56 };
57
TestEventType()58 bool TouchGuiderTest::TestEventType()
59 {
60 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
61 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0) ==
62 EventType::TYPE_TOUCH_BEGIN) {
63 return true;
64 } else {
65 return false;
66 }
67 }), SLEEP_TIME_3);
68 return ret;
69 }
70
TestEventAction()71 bool TouchGuiderTest::TestEventAction()
72 {
73 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
74 if (AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0) ==
75 MMI::PointerEvent::POINTER_ACTION_DOWN) {
76 return true;
77 } else {
78 return false;
79 }
80 }), SLEEP_TIME_3);
81 return ret;
82 }
83
SetUpTestCase()84 void TouchGuiderTest::SetUpTestCase()
85 {
86 GTEST_LOG_(INFO) << "TouchGuiderTest SetUpTestCase";
87 Singleton<AccessibleAbilityManagerService>::GetInstance().OnStart();
88 }
89
TearDownTestCase()90 void TouchGuiderTest::TearDownTestCase()
91 {
92 GTEST_LOG_(INFO) << "TouchGuiderTest TearDownTestCase";
93 Singleton<AccessibleAbilityManagerService>::GetInstance().OnStop();
94 }
95
SetUp()96 void TouchGuiderTest::SetUp()
97 {
98 GTEST_LOG_(INFO) << "TouchGuiderTest SetUp";
99
100 touchGuider_ = std::make_unique<TouchGuider>();
101 if (!touchGuider_) {
102 GTEST_LOG_(INFO) << "touchGuider new failed!";
103 return;
104 }
105 touchGuider_->StartUp();
106 pointId_ = 0;
107 }
108
TearDown()109 void TouchGuiderTest::TearDown()
110 {
111 GTEST_LOG_(INFO) << "TouchGuiderTest TearDown";
112 AccessibilityAbilityHelper::GetInstance().ClearEventTypeActionVector();
113 AccessibilityAbilityHelper::GetInstance().ClearTouchEventActionVector();
114 }
115
CreateTouchEvent(int32_t action)116 std::shared_ptr<MMI::PointerEvent> TouchGuiderTest::CreateTouchEvent(int32_t action)
117 {
118 std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create();
119 MMI::PointerEvent::PointerItem item = {};
120
121 pointerEvent->AddPointerItem(item);
122 pointerEvent->SetPointerId(pointId_++);
123 pointerEvent->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
124 pointerEvent->SetPointerAction(action);
125
126 return pointerEvent;
127 }
128
CreateTouchEvent(int32_t action,std::vector<MMI::PointerEvent::PointerItem> & points,int32_t pointerId,int64_t occurredTime,int64_t startTime)129 std::shared_ptr<MMI::PointerEvent> TouchGuiderTest::CreateTouchEvent(int32_t action,
130 std::vector<MMI::PointerEvent::PointerItem> &points, int32_t pointerId, int64_t occurredTime,
131 int64_t startTime)
132 {
133 std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create();
134
135 for (auto &point : points) {
136 pointerEvent->AddPointerItem(point);
137 }
138 pointerEvent->SetPointerId(pointerId);
139 pointerEvent->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
140 pointerEvent->SetPointerAction(action);
141 pointerEvent->SetActionStartTime(startTime * MS_TO_US);
142 pointerEvent->SetActionTime(occurredTime * MS_TO_US);
143
144 return pointerEvent;
145 }
146
CreateMoveEvent(int32_t pointerCount)147 std::shared_ptr<MMI::PointerEvent> TouchGuiderTest::CreateMoveEvent(int32_t pointerCount)
148 {
149 std::shared_ptr<MMI::PointerEvent> pointerEvent = MMI::PointerEvent::Create();
150 MMI::PointerEvent::PointerItem item = {};
151
152 pointerEvent->AddPointerItem(item);
153 pointerEvent->SetPointerId(pointId_++);
154 pointerEvent->SetSourceType(MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
155 pointerEvent->SetPointerAction(MMI::PointerEvent::POINTER_ACTION_MOVE);
156
157 return pointerEvent;
158 }
159
160 /**
161 * @tc.number: OnPointerEvent001
162 * @tc.name: OnPointerEvent
163 * @tc.desc: Check the first down event.
164 */
165 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_001, TestSize.Level1)
166 {
167 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_001 start";
168 std::shared_ptr<MMI::PointerEvent> event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN);
169 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0402() 170 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
171 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0) == EventType::TYPE_TOUCH_BEGIN) {
172 return true;
173 } else {
174 return false;
175 }
176 }), SLEEP_TIME_3);
177 EXPECT_TRUE(ret);
178 }
179
180 /**
181 * @tc.number: OnPointerEvent002
182 * @tc.name: OnPointerEvent
183 * @tc.desc: Check the first up event.
184 */
185 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_002, TestSize.Level1)
186 {
187 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_002 start";
188 std::shared_ptr<MMI::PointerEvent> event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN);
189 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0502() 190 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
191 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0) == EventType::TYPE_TOUCH_BEGIN) {
192 return true;
193 } else {
194 return false;
195 }
196 }), SLEEP_TIME_3);
197 EXPECT_TRUE(ret);
198
199 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP);
200 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0602() 201 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
202 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(3) ==
203 EventType::TYPE_TOUCH_END) {
204 return true;
205 } else {
206 return false;
207 }
208 }), SLEEP_TIME_3);
209 EXPECT_TRUE(ret);
210 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1);
211 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_BEGIN);
212 int32_t expectValue = MMI::PointerEvent::POINTER_ACTION_MOVE;
213 int32_t touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0);
214 EXPECT_EQ(touchAction, expectValue);
215 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(2);
216 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_END);
217 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_002 end";
218 }
219
220 /**
221 * @tc.number: OnPointerEvent003
222 * @tc.name: OnPointerEvent
223 * @tc.desc: Check the event that down-up slowly.
224 */
225 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_003, TestSize.Level1)
226 {
227 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_003 start";
228
229 std::shared_ptr<MMI::PointerEvent> event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN);
230 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0702() 231 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
232 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1) ==
233 EventType::TYPE_TOUCH_GUIDE_BEGIN) {
234 return true;
235 } else {
236 return false;
237 }
238 }), SLEEP_TIME_3);
239 EXPECT_TRUE(ret);
240 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0);
241 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_BEGIN);
__anona2a8555b0802() 242 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
243 if (AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0) ==
244 MMI::PointerEvent::POINTER_ACTION_MOVE) {
245 return true;
246 } else {
247 return false;
248 }
249 }), SLEEP_TIME_3);
250 EXPECT_TRUE(ret);
251
252 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP);
253 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0902() 254 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
255 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(3) ==
256 EventType::TYPE_TOUCH_END) {
257 return true;
258 } else {
259 return false;
260 }
261 }), SLEEP_TIME_3);
262 EXPECT_TRUE(ret);
263 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(2);
264 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_END);
265
266 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_003 end";
267 }
268
269 /**
270 * @tc.number: OnPointerEvent004
271 * @tc.name: OnPointerEvent
272 * @tc.desc: Check the event that move slowly with one finger.
273 */
274 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_004, TestSize.Level1)
275 {
276 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_004 start";
277
278 std::shared_ptr<MMI::PointerEvent> event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN);
279 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0a02() 280 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
281 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1) ==
282 EventType::TYPE_TOUCH_GUIDE_BEGIN) {
283 return true;
284 } else {
285 return false;
286 }
287 }), SLEEP_TIME_3);
288 EXPECT_TRUE(ret);
289 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0);
290 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_BEGIN);
__anona2a8555b0b02() 291 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
292 if (AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0) ==
293 MMI::PointerEvent::POINTER_ACTION_MOVE) {
294 return true;
295 } else {
296 return false;
297 }
298 }), SLEEP_TIME_3);
299 EXPECT_TRUE(ret);
300
301 event = CreateMoveEvent(1);
302 touchGuider_->OnPointerEvent(*event);
303 int32_t touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(1);
304 EXPECT_EQ(touchAction, MMI::PointerEvent::POINTER_ACTION_MOVE);
305
306 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP);
307 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0c02() 308 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
309 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(3) == EventType::TYPE_TOUCH_END) {
310 return true;
311 } else {
312 return false;
313 }
314 }), SLEEP_TIME_3);
315 EXPECT_TRUE(ret);
316 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(2);
317 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_END);
318
319 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_004 end";
320 }
321
322 /**
323 * @tc.number: OnPointerEvent005
324 * @tc.name: OnPointerEvent
325 * @tc.desc: Check the event that two fingers moving in same directions in touchGuiding state.
326 */
327 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_005, TestSize.Level1)
328 {
329 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_005 start";
330
331 std::vector<MMI::PointerEvent::PointerItem> points = {};
332 MMI::PointerEvent::PointerItem point = {};
333 point.SetPointerId(1);
334 MMI::PointerEvent::PointerItem otherPoint = {};
335 otherPoint.SetPointerId(2);
336 otherPoint.SetDisplayX(10);
337 otherPoint.SetDisplayY(10);
338
339 points.emplace_back(point);
340 std::shared_ptr<MMI::PointerEvent> event =
341 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
342 touchGuider_->OnPointerEvent(*event);
343 bool ret = TestEventType();
344 EXPECT_TRUE(ret);
345
346 points.emplace_back(otherPoint);
347 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 2, 0, 0);
348 touchGuider_->OnPointerEvent(*event);
349 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 2, 0, 0);
350 touchGuider_->OnPointerEvent(*event);
351 ret = TestEventAction();
352 EXPECT_TRUE(ret);
353
354 points.clear();
355 points.emplace_back(otherPoint);
356 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP, points, 2, 0, 0);
357 touchGuider_->OnPointerEvent(*event);
358 points.clear();
359 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP, points, 1, 0, 0);
360 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0d02() 361 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
362 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1) ==
363 EventType::TYPE_TOUCH_END) {
364 return true;
365 } else {
366 return false;
367 }
368 }), SLEEP_TIME_3);
369 EXPECT_TRUE(ret);
370
371 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_005 end";
372 }
373
374 /**
375 * @tc.number: OnPointerEvent006
376 * @tc.name: OnPointerEvent
377 * @tc.desc: Check the event that multi-finger gesture.
378 */
379 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_006, TestSize.Level1)
380 {
381 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_006 start";
382
383 std::vector<MMI::PointerEvent::PointerItem> points = {};
384 MMI::PointerEvent::PointerItem point = {};
385 point.SetPointerId(1);
386 MMI::PointerEvent::PointerItem otherPoint = {};
387 otherPoint.SetPointerId(2);
388 otherPoint.SetDisplayX(10);
389 otherPoint.SetDisplayY(10);
390 MMI::PointerEvent::PointerItem otherPoint1 = {};
391 otherPoint1.SetPointerId(3);
392 otherPoint1.SetDisplayX(10);
393 otherPoint1.SetDisplayY(10);
394
395 points.emplace_back(point);
396 std::shared_ptr<MMI::PointerEvent> event =
397 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
398 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0e02() 399 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
400 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0) ==
401 EventType::TYPE_TOUCH_BEGIN) {
402 return true;
403 } else {
404 return false;
405 }
406 }), SLEEP_TIME_3);
407 EXPECT_TRUE(ret);
408
409 points.emplace_back(otherPoint);
410 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 2, 0, 0);
411 touchGuider_->OnPointerEvent(*event);
412
413 points.emplace_back(otherPoint1);
414 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 3, 0, 0);
415 touchGuider_->OnPointerEvent(*event);
416
417 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 3, 0, 0);
418 touchGuider_->OnPointerEvent(*event);
__anona2a8555b0f02() 419 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
420 if (AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0) ==
421 MMI::PointerEvent::POINTER_ACTION_DOWN) {
422 return true;
423 } else {
424 return false;
425 }
426 }), SLEEP_TIME_3);
427 EXPECT_TRUE(ret);
428
429 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_006 end";
430 }
431
432 /**
433 * @tc.number: OnPointerEvent007
434 * @tc.name: OnPointerEvent
435 * @tc.desc: Check the CANCEL event.
436 */
437 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_007, TestSize.Level1)
438 {
439 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_007 start";
440
441 std::shared_ptr<MMI::PointerEvent> event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN);
442 touchGuider_->OnPointerEvent(*event);
__anona2a8555b1002() 443 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
444 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1) ==
445 EventType::TYPE_TOUCH_GUIDE_BEGIN) {
446 return true;
447 } else {
448 return false;
449 }
450 }), SLEEP_TIME_3);
451 EXPECT_TRUE(ret);
452 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0);
453 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_BEGIN);
454
__anona2a8555b1102() 455 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
456 if (AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0) ==
457 MMI::PointerEvent::POINTER_ACTION_MOVE) {
458 return true;
459 } else {
460 return false;
461 }
462 }), SLEEP_TIME_3);
463 EXPECT_TRUE(ret);
464 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_CANCEL);
465 touchGuider_->OnPointerEvent(*event);
466
467 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_007 end";
468 }
469
470 /**
471 * @tc.number: OnPointerEvent008
472 * @tc.name: OnPointerEvent
473 * @tc.desc: Check the OTHER_POINT_DOWN event in draging state.
474 */
475 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_008, TestSize.Level1)
476 {
477 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_008 start";
478
479 std::vector<MMI::PointerEvent::PointerItem> points = {};
480 MMI::PointerEvent::PointerItem point = {};
481 point.SetPointerId(1);
482 MMI::PointerEvent::PointerItem otherPoint = {};
483 otherPoint.SetPointerId(2);
484 otherPoint.SetDisplayX(500);
485 otherPoint.SetDisplayY(500);
486 MMI::PointerEvent::PointerItem otherPoint1 = {};
487 otherPoint1.SetPointerId(3);
488 otherPoint1.SetDisplayX(500);
489 otherPoint1.SetDisplayY(500);
490
491 points.emplace_back(point);
492 std::shared_ptr<MMI::PointerEvent> event =
493 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
494 touchGuider_->OnPointerEvent(*event);
495
496 points.emplace_back(otherPoint);
497 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 2, 0, 0);
498 touchGuider_->OnPointerEvent(*event);
499
500 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 2, 0, 0);
501 touchGuider_->OnPointerEvent(*event);
502 bool ret = TestEventType();
503 EXPECT_TRUE(ret);
504 ret = TestEventAction();
505 EXPECT_TRUE(ret);
506
507 points.emplace_back(otherPoint1);
508 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 3, 0, 0);
509 touchGuider_->OnPointerEvent(*event);
__anona2a8555b1202() 510 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
511 if (AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(1) ==
512 MMI::PointerEvent::POINTER_ACTION_UP) {
513 return true;
514 } else {
515 return false;
516 }
517 }), SLEEP_TIME_3);
518 EXPECT_TRUE(ret);
519
520 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_008 end";
521 }
522
523 /**
524 * @tc.number: OnPointerEvent009
525 * @tc.name: OnPointerEvent
526 * @tc.desc: Check the event that two fingers moving in same directions in draging state.
527 */
528 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_009, TestSize.Level1)
529 {
530 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_009 start";
531
532 std::vector<MMI::PointerEvent::PointerItem> points = {};
533 MMI::PointerEvent::PointerItem point = {};
534 point.SetPointerId(1);
535 MMI::PointerEvent::PointerItem otherPoint = {};
536 otherPoint.SetPointerId(2);
537 otherPoint.SetDisplayX(10);
538 otherPoint.SetDisplayY(10);
539
540 points.emplace_back(point);
541 std::shared_ptr<MMI::PointerEvent> event =
542 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
543 touchGuider_->OnPointerEvent(*event);
__anona2a8555b1302() 544 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
545 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0) ==
546 EventType::TYPE_TOUCH_BEGIN) {
547 return true;
548 } else {
549 return false;
550 }
551 }), SLEEP_TIME_3);
552 EXPECT_TRUE(ret);
553
554 points.emplace_back(otherPoint);
555 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 2, 0, 0);
556 touchGuider_->OnPointerEvent(*event);
557 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 2, 0, 0);
558 touchGuider_->OnPointerEvent(*event);
__anona2a8555b1402() 559 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
560 if (AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0) ==
561 MMI::PointerEvent::POINTER_ACTION_DOWN) {
562 return true;
563 } else {
564 return false;
565 }
566 }), SLEEP_TIME_3);
567 EXPECT_TRUE(ret);
568
569 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 2, 0, 0);
570 touchGuider_->OnPointerEvent(*event);
__anona2a8555b1502() 571 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
572 if (AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(1) ==
573 MMI::PointerEvent::POINTER_ACTION_MOVE) {
574 return true;
575 } else {
576 return false;
577 }
578 }), SLEEP_TIME_3);
579 EXPECT_TRUE(ret);
580
581 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_009 end";
582 }
583
584 /**
585 * @tc.number: OnPointerEvent010
586 * @tc.name: OnPointerEvent
587 * @tc.desc: Check the event that multi-finger moving in draging state.
588 */
589 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_010, TestSize.Level1)
590 {
591 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_010 start";
592
593 std::vector<MMI::PointerEvent::PointerItem> points = {};
594 MMI::PointerEvent::PointerItem point = {};
595 point.SetPointerId(1);
596 MMI::PointerEvent::PointerItem otherPoint = {};
597 otherPoint.SetPointerId(2);
598 otherPoint.SetDisplayX(500);
599 otherPoint.SetDisplayY(500);
600 MMI::PointerEvent::PointerItem otherPoint1 = {};
601 otherPoint1.SetPointerId(3);
602 otherPoint1.SetDisplayX(500);
603 otherPoint1.SetDisplayY(500);
604
605 points.emplace_back(point);
606 std::shared_ptr<MMI::PointerEvent> event =
607 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
608 touchGuider_->OnPointerEvent(*event);
__anona2a8555b1602() 609 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
610 if (AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0) ==
611 EventType::TYPE_TOUCH_BEGIN) {
612 return true;
613 } else {
614 return false;
615 }
616 }), SLEEP_TIME_3);
617 EXPECT_TRUE(ret);
618
619 points.emplace_back(otherPoint);
620 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 2, 0, 0);
621 touchGuider_->OnPointerEvent(*event);
622 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 2, 0, 0);
623 touchGuider_->OnPointerEvent(*event);
624 points.emplace_back(otherPoint1);
625 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 3, 0, 0);
626 touchGuider_->OnPointerEvent(*event);
__anona2a8555b1702() 627 ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
628 if (AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(1) ==
629 MMI::PointerEvent::POINTER_ACTION_UP) {
630 return true;
631 } else {
632 return false;
633 }
634 }), SLEEP_TIME_3);
635 EXPECT_TRUE(ret);
636 int32_t expectValue = MMI::PointerEvent::POINTER_ACTION_DOWN;
637 int32_t touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0);
638 EXPECT_EQ(touchAction, expectValue);
639
640 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_010 end";
641 }
642
643 /**
644 * @tc.number: OnPointerEvent012
645 * @tc.name: OnPointerEvent
646 * @tc.desc: Check cancel the second move event after onstart.
647 */
648 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_012, TestSize.Level1)
649 {
650 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_012 start";
651
652 std::vector<MMI::PointerEvent::PointerItem> points = {};
653 MMI::PointerEvent::PointerItem point = {};
654 point.SetPointerId(1);
655 point.SetDisplayX(500);
656 point.SetDisplayY(500);
657 MMI::PointerEvent::PointerItem movepoint = {};
658 movepoint.SetPointerId(1);
659 movepoint.SetDisplayX(2500);
660 movepoint.SetDisplayY(500);
661 MMI::PointerEvent::PointerItem othermovepoint = {};
662 othermovepoint.SetPointerId(1);
663 othermovepoint.SetDisplayX(2500);
664 othermovepoint.SetDisplayY(500);
665
666 points.emplace_back(point);
667 std::shared_ptr<MMI::PointerEvent> event =
668 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
669 touchGuider_->OnPointerEvent(*event);
670
671 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0);
672 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_BEGIN);
673
674 points.clear();
675 points.emplace_back(movepoint);
676 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
677 touchGuider_->OnPointerEvent(*event);
678
679 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1);
680 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_BEGIN);
681 int32_t expectValue = MMI::PointerEvent::POINTER_ACTION_MOVE;
682 int32_t touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0);
683 EXPECT_EQ(touchAction, expectValue);
684
685 points.clear();
686 points.emplace_back(othermovepoint);
687 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 400, 0);
688 touchGuider_->OnPointerEvent(*event);
689 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(2);
690 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_END);
691
692 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_012 end";
693 }
694
695 /**
696 * @tc.number: OnPointerEvent013
697 * @tc.name: OnPointerEvent
698 * @tc.desc: Check the GESTURE_SWIPE_RIGHT_THEN_UP gesture.
699 */
700 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_013, TestSize.Level1)
701 {
702 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_013 start";
703
704 std::vector<MMI::PointerEvent::PointerItem> points = {};
705 MMI::PointerEvent::PointerItem point = {};
706 point.SetPointerId(1);
707 point.SetDisplayX(2500);
708 point.SetDisplayY(2500);
709 MMI::PointerEvent::PointerItem movepoint1 = {};
710 movepoint1.SetPointerId(1);
711 movepoint1.SetDisplayX(3500);
712 movepoint1.SetDisplayY(2500);
713 MMI::PointerEvent::PointerItem movepoint2 = {};
714 movepoint2.SetPointerId(1);
715 movepoint2.SetDisplayX(5000);
716 movepoint2.SetDisplayY(2500);
717 MMI::PointerEvent::PointerItem movepoint3 = {};
718 movepoint3.SetPointerId(1);
719 movepoint3.SetDisplayX(4000);
720 movepoint3.SetDisplayY(0);
721
722 points.emplace_back(point);
723 std::shared_ptr<MMI::PointerEvent> event =
724 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
725 touchGuider_->OnPointerEvent(*event);
726
727 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0);
728 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_BEGIN);
729
730 points.clear();
731 points.emplace_back(movepoint1);
732 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
733 touchGuider_->OnPointerEvent(*event);
734
735 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1);
736 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_BEGIN);
737 int32_t expectValue = MMI::PointerEvent::POINTER_ACTION_MOVE;
738 int32_t touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0);
739 EXPECT_EQ(touchAction, expectValue);
740
741 points.clear();
742 points.emplace_back(movepoint2);
743 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
744 touchGuider_->OnPointerEvent(*event);
745
746 touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(1);
747 EXPECT_EQ(touchAction, expectValue);
748
749 points.clear();
750 points.emplace_back(movepoint3);
751 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
752 touchGuider_->OnPointerEvent(*event);
753
754 touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(2);
755 EXPECT_EQ(touchAction, expectValue);
756
757 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP, points, 1, 0, 0);
758 touchGuider_->OnPointerEvent(*event);
759
760 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(2);
761 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_END);
762 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(3);
763 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_END);
764 auto uTgestureId = AccessibilityAbilityHelper::GetInstance().GetGestureId();
765 EXPECT_EQ(uTgestureId, static_cast<int>(GestureType::GESTURE_SWIPE_RIGHT_THEN_UP));
766
767 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_013 end";
768 }
769
770 /**
771 * @tc.number: OnPointerEvent014
772 * @tc.name: OnPointerEvent
773 * @tc.desc: Check the GESTURE_SWIPE_LEFT_THEN_UP gesture.
774 */
775 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_014, TestSize.Level1)
776 {
777 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_014 start";
778
779 std::vector<MMI::PointerEvent::PointerItem> points = {};
780 MMI::PointerEvent::PointerItem point = {};
781 point.SetPointerId(1);
782 point.SetDisplayX(2500);
783 point.SetDisplayY(2500);
784 MMI::PointerEvent::PointerItem movepoint1 = {};
785 movepoint1.SetPointerId(1);
786 movepoint1.SetDisplayX(1500);
787 movepoint1.SetDisplayY(2500);
788 MMI::PointerEvent::PointerItem movepoint2 = {};
789 movepoint2.SetPointerId(1);
790 movepoint2.SetDisplayX(0);
791 movepoint2.SetDisplayY(2500);
792 MMI::PointerEvent::PointerItem movepoint3 = {};
793 movepoint3.SetPointerId(1);
794 movepoint3.SetDisplayX(1000);
795 movepoint3.SetDisplayY(0);
796
797 points.emplace_back(point);
798 std::shared_ptr<MMI::PointerEvent> event =
799 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
800 touchGuider_->OnPointerEvent(*event);
801
802 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0);
803 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_BEGIN);
804
805 points.clear();
806 points.emplace_back(movepoint1);
807 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
808 touchGuider_->OnPointerEvent(*event);
809
810 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1);
811 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_BEGIN);
812 int32_t expectValue = MMI::PointerEvent::POINTER_ACTION_MOVE;
813 int32_t touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0);
814 EXPECT_EQ(touchAction, expectValue);
815
816 points.clear();
817 points.emplace_back(movepoint2);
818 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
819 touchGuider_->OnPointerEvent(*event);
820
821 touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(1);
822 EXPECT_EQ(touchAction, expectValue);
823
824 points.clear();
825 points.emplace_back(movepoint3);
826 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
827 touchGuider_->OnPointerEvent(*event);
828
829 touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(2);
830 EXPECT_EQ(touchAction, expectValue);
831
832 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP, points, 1, 0, 0);
833 touchGuider_->OnPointerEvent(*event);
834
835 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(2);
836 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_END);
837 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(3);
838 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_END);
839 auto uTgestureId = AccessibilityAbilityHelper::GetInstance().GetGestureId();
840 EXPECT_EQ(uTgestureId, static_cast<int>(GestureType::GESTURE_SWIPE_LEFT_THEN_UP));
841
842 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_014 end";
843 }
844
845 /**
846 * @tc.number: OnPointerEvent015
847 * @tc.name: OnPointerEvent
848 * @tc.desc: Check the GESTURE_SWIPE_DOWN_THEN_LEFT gesture.
849 */
850 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_015, TestSize.Level1)
851 {
852 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_015 start";
853
854 std::vector<MMI::PointerEvent::PointerItem> points = {};
855 MMI::PointerEvent::PointerItem point = {};
856 point.SetPointerId(1);
857 point.SetDisplayX(2500);
858 point.SetDisplayY(2500);
859 MMI::PointerEvent::PointerItem movepoint1 = {};
860 movepoint1.SetPointerId(1);
861 movepoint1.SetDisplayX(2500);
862 movepoint1.SetDisplayY(3500);
863 MMI::PointerEvent::PointerItem movepoint2 = {};
864 movepoint2.SetPointerId(1);
865 movepoint2.SetDisplayX(2500);
866 movepoint2.SetDisplayY(5000);
867 MMI::PointerEvent::PointerItem movepoint3 = {};
868 movepoint3.SetPointerId(1);
869 movepoint3.SetDisplayX(0);
870 movepoint3.SetDisplayY(4000);
871
872 points.emplace_back(point);
873 std::shared_ptr<MMI::PointerEvent> event =
874 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
875 touchGuider_->OnPointerEvent(*event);
876
877 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0);
878 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_BEGIN);
879
880 points.clear();
881 points.emplace_back(movepoint1);
882 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
883 touchGuider_->OnPointerEvent(*event);
884
885 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1);
886 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_BEGIN);
887 int32_t expectValue = MMI::PointerEvent::POINTER_ACTION_MOVE;
888 int32_t touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0);
889 EXPECT_EQ(touchAction, expectValue);
890
891 points.clear();
892 points.emplace_back(movepoint2);
893 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
894 touchGuider_->OnPointerEvent(*event);
895
896 touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(1);
897 EXPECT_EQ(touchAction, expectValue);
898
899 points.clear();
900 points.emplace_back(movepoint3);
901 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
902 touchGuider_->OnPointerEvent(*event);
903
904 touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(2);
905 EXPECT_EQ(touchAction, expectValue);
906
907 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP, points, 1, 0, 0);
908 touchGuider_->OnPointerEvent(*event);
909
910 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(2);
911 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_END);
912 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(3);
913 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_END);
914 auto uTgestureId = AccessibilityAbilityHelper::GetInstance().GetGestureId();
915 EXPECT_EQ(uTgestureId, static_cast<int>(GestureType::GESTURE_SWIPE_DOWN_THEN_LEFT));
916
917 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_015 end";
918 }
919
920 /**
921 * @tc.number: OnPointerEvent016
922 * @tc.name: OnPointerEvent
923 * @tc.desc: Check the GESTURE_SWIPE_DOWN_THEN_RIGHT gesture.
924 */
925 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_016, TestSize.Level1)
926 {
927 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_016 start";
928
929 std::vector<MMI::PointerEvent::PointerItem> points = {};
930 MMI::PointerEvent::PointerItem point = {};
931 point.SetPointerId(1);
932 point.SetDisplayX(2500);
933 point.SetDisplayY(2500);
934 MMI::PointerEvent::PointerItem movepoint1 = {};
935 movepoint1.SetPointerId(1);
936 movepoint1.SetDisplayX(2500);
937 movepoint1.SetDisplayY(3500);
938 MMI::PointerEvent::PointerItem movepoint2 = {};
939 movepoint2.SetPointerId(1);
940 movepoint2.SetDisplayX(2500);
941 movepoint2.SetDisplayY(5000);
942 MMI::PointerEvent::PointerItem movepoint3 = {};
943 movepoint3.SetPointerId(1);
944 movepoint3.SetDisplayX(5000);
945 movepoint3.SetDisplayY(4000);
946
947 points.emplace_back(point);
948 std::shared_ptr<MMI::PointerEvent> event =
949 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
950 touchGuider_->OnPointerEvent(*event);
951
952 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0);
953 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_BEGIN);
954
955 points.clear();
956 points.emplace_back(movepoint1);
957 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
958 touchGuider_->OnPointerEvent(*event);
959
960 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1);
961 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_BEGIN);
962 int32_t expectValue = MMI::PointerEvent::POINTER_ACTION_MOVE;
963 int32_t touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0);
964 EXPECT_EQ(touchAction, expectValue);
965
966 points.clear();
967 points.emplace_back(movepoint2);
968 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
969 touchGuider_->OnPointerEvent(*event);
970
971 touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(1);
972 EXPECT_EQ(touchAction, expectValue);
973
974 points.clear();
975 points.emplace_back(movepoint3);
976 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
977 touchGuider_->OnPointerEvent(*event);
978
979 touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(2);
980 EXPECT_EQ(touchAction, expectValue);
981
982 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP, points, 1, 0, 0);
983 touchGuider_->OnPointerEvent(*event);
984
985 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(2);
986 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_END);
987 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(3);
988 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_END);
989 auto uTgestureId = AccessibilityAbilityHelper::GetInstance().GetGestureId();
990 EXPECT_EQ(uTgestureId, static_cast<int>(GestureType::GESTURE_SWIPE_DOWN_THEN_RIGHT));
991
992 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_016 end";
993 }
994
995 /**
996 * @tc.number: OnPointerEvent017
997 * @tc.name: OnPointerEvent
998 * @tc.desc: Check the LEFT gesture.
999 */
1000 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_017, TestSize.Level1)
1001 {
1002 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_017 start";
1003
1004 std::vector<MMI::PointerEvent::PointerItem> points = {};
1005 MMI::PointerEvent::PointerItem point = {};
1006 point.SetPointerId(1);
1007 point.SetDisplayX(2500);
1008 point.SetDisplayY(2500);
1009 MMI::PointerEvent::PointerItem movepoint1 = {};
1010 movepoint1.SetPointerId(1);
1011 movepoint1.SetDisplayX(1000);
1012 movepoint1.SetDisplayY(2500);
1013 MMI::PointerEvent::PointerItem movepoint2 = {};
1014 movepoint2.SetPointerId(1);
1015 movepoint2.SetDisplayX(0);
1016 movepoint2.SetDisplayY(2500);
1017
1018 points.emplace_back(point);
1019 std::shared_ptr<MMI::PointerEvent> event =
1020 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
1021 touchGuider_->OnPointerEvent(*event);
1022
1023 EventType eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(0);
1024 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_BEGIN);
1025
1026 points.clear();
1027 points.emplace_back(movepoint1);
1028 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
1029 touchGuider_->OnPointerEvent(*event);
1030
1031 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(1);
1032 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_BEGIN);
1033 int32_t expectValue = MMI::PointerEvent::POINTER_ACTION_MOVE;
1034 int32_t touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(0);
1035 EXPECT_EQ(touchAction, expectValue);
1036
1037 points.clear();
1038 points.emplace_back(movepoint2);
1039 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_MOVE, points, 1, 0, 0);
1040 touchGuider_->OnPointerEvent(*event);
1041
1042 touchAction = AccessibilityAbilityHelper::GetInstance().GetTouchEventActionOfTargetIndex(1);
1043 EXPECT_EQ(touchAction, expectValue);
1044
1045 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP, points, 1, 0, 0);
1046 touchGuider_->OnPointerEvent(*event);
1047
1048 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(2);
1049 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_GUIDE_GESTURE_END);
1050 eventType = AccessibilityAbilityHelper::GetInstance().GetEventTypeOfTargetIndex(3);
1051 EXPECT_EQ(eventType, EventType::TYPE_TOUCH_END);
1052 auto uTgestureId = AccessibilityAbilityHelper::GetInstance().GetGestureId();
1053 EXPECT_EQ(uTgestureId, static_cast<int>(GestureType::GESTURE_SWIPE_LEFT));
1054
1055 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_017 end";
1056 }
1057
1058 /**
1059 * @tc.number: OnPointerEvent018
1060 * @tc.name: OnPointerEvent
1061 * @tc.desc: Check the DoubleTap gesture.
1062 */
1063 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_OnPointerEvent_018, TestSize.Level1)
1064 {
1065 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_018 start";
1066
1067 if (!touchGuider_) {
1068 GTEST_LOG_(INFO) << "touchGuider_ is null";
1069 return;
1070 }
1071
1072 sptr<AccessibilityAccountData> accountData =
1073 Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
1074 if (!accountData) {
1075 GTEST_LOG_(INFO) << "accountData is null";
1076 return;
1077 }
1078
1079 AccessibilityAbilityHelper::GetInstance().SetRealId(WINDOW_ID);
1080 sptr<IAccessibilityElementOperator> proxy = new(std::nothrow) AccessibilityElementOperatorProxy(nullptr);
1081 sptr<AccessibilityWindowConnection> windowConnection =
1082 new(std::nothrow) AccessibilityWindowConnection(WINDOW_ID, proxy, ACCOUNT_ID);
1083 accountData->AddAccessibilityWindowConnection(WINDOW_ID, windowConnection);
1084
1085 // send down event
1086 std::vector<MMI::PointerEvent::PointerItem> points = {};
1087 MMI::PointerEvent::PointerItem point = {};
1088 point.SetPointerId(1);
1089 point.SetDisplayX(2500);
1090 point.SetDisplayY(2500);
1091 points.emplace_back(point);
1092 std::shared_ptr<MMI::PointerEvent> event =
1093 CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 0, 0);
1094 touchGuider_->OnPointerEvent(*event);
1095
1096 // send up event
1097 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP, points, 1, 0, 0);
1098 touchGuider_->OnPointerEvent(*event);
1099
1100 // send down event
1101 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_DOWN, points, 1, 200, 200);
1102 touchGuider_->OnPointerEvent(*event);
1103
1104 // send up event
1105 event = CreateTouchEvent(MMI::PointerEvent::POINTER_ACTION_UP, points, 1, 200, 200);
1106 touchGuider_->OnPointerEvent(*event);
__anona2a8555b1802() 1107 bool ret = AccessibilityCommonHelper::GetInstance().WaitForLoop(std::bind([]() -> bool {
1108 if (AccessibilityAbilityHelper::GetInstance().GetExecuteAction() == ACCESSIBILITY_ACTION_CLICK) {
1109 return true;
1110 } else {
1111 return false;
1112 }
1113 }), SLEEP_TIME_3);
1114 EXPECT_TRUE(ret);
1115
1116 GTEST_LOG_(INFO) << "TouchGuider_Unittest_OnPointerEvent_018 end";
1117 }
1118
1119 /**
1120 * @tc.number: DestroyEvents
1121 * @tc.name: DestroyEvents
1122 * @tc.desc: Check DestroyEvents.
1123 */
1124 HWTEST_F(TouchGuiderTest, TouchGuider_Unittest_DestroyEvents_001, TestSize.Level1)
1125 {
1126 GTEST_LOG_(INFO) << "TouchGuider_Unittest_DestroyEvents_001 start";
1127
1128 touchGuider_->DestroyEvents();
1129 bool isDestroyEvents;
1130 isDestroyEvents = AccessibilityAbilityHelper::GetInstance().GetDestroyState();
1131 EXPECT_EQ(isDestroyEvents, true);
1132
1133 GTEST_LOG_(INFO) << "TouchGuider_Unittest_DestroyEvents_001 end";
1134 }
1135 } // namespace Accessibility
1136 } // namespace OHOS