1 /*
2 * Copyright (c) 2024 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 <cstdio>
17 #include <gtest/gtest.h>
18
19 #include "touch_gesture_detector.h"
20 #include "mmi_log.h"
21
22 #undef MMI_LOG_TAG
23 #define MMI_LOG_TAG "TouchGestureDetectorTest"
24
25 namespace OHOS {
26 namespace MMI {
27 using namespace testing;
28 using namespace testing::ext;
29 constexpr double MAXIMUM_SINGLE_SLIDE_DISTANCE { 3.0 };
30
31 class TouchGestureDetectorTest : public testing::Test {
32 public:
33 static void SetUpTestCase(void);
34 static void TearDownTestCase(void);
35 void SetUp();
36 void TearDown();
37 };
38
39 class MyGestureListener : public TouchGestureDetector::GestureListener {
40 public:
OnGestureEvent(std::shared_ptr<PointerEvent> event,GestureMode mode)41 bool OnGestureEvent(std::shared_ptr<PointerEvent> event, GestureMode mode) override
42 {
43 return true;
44 }
45
OnGestureTrend(std::shared_ptr<PointerEvent> event)46 void OnGestureTrend(std::shared_ptr<PointerEvent> event) override {}
47 };
48
SetUpTestCase(void)49 void TouchGestureDetectorTest::SetUpTestCase(void)
50 {}
51
TearDownTestCase(void)52 void TouchGestureDetectorTest::TearDownTestCase(void)
53 {}
54
SetUp()55 void TouchGestureDetectorTest::SetUp()
56 {}
57
TearDown()58 void TouchGestureDetectorTest::TearDown()
59 {}
60
61 /**
62 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_01
63 * @tc.desc: Test OnTouchEvent
64 * @tc.type: FUNC
65 * @tc.require:
66 */
67 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_01, TestSize.Level1)
68 {
69 CALL_TEST_DEBUG;
70 auto listener = std::make_shared<MyGestureListener>();
71 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
72 TouchGestureDetector detector(type, listener);
73 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
74 ASSERT_NE(pointerEvent, nullptr);
75
76 pointerEvent->sourceType_ = PointerEvent::SOURCE_TYPE_TOUCHSCREEN;
77 detector.gestureEnable_ = true;
78 detector.gestureDisplayId_ = INT32_MAX;
79 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_UP;
80 pointerEvent->SetPointerId(0);
81 EXPECT_FALSE(detector.WhetherDiscardTouchEvent(pointerEvent));
82
83 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_DOWN;
84 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
85
86 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_MOVE;
87 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
88
89 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_UP;
90 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
91
92 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_AXIS_BEGIN;
93 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
94 }
95
96 /**
97 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_02
98 * @tc.desc: Test OnTouchEvent
99 * @tc.type: FUNC
100 * @tc.require:
101 */
102 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_02, TestSize.Level1)
103 {
104 CALL_TEST_DEBUG;
105 auto listener = std::make_shared<MyGestureListener>();
106 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
107 TouchGestureDetector detector(type, listener);
108 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
109 ASSERT_NE(pointerEvent, nullptr);
110
111 pointerEvent->sourceType_ = PointerEvent::SOURCE_TYPE_TOUCHSCREEN;
112 detector.gestureEnable_ = false;
113 EXPECT_TRUE(detector.WhetherDiscardTouchEvent(pointerEvent));
114 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
115 }
116
117 /**
118 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_05
119 * @tc.desc: Test OnTouchEvent
120 * @tc.type: FUNC
121 * @tc.require:
122 */
123 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_05, TestSize.Level1)
124 {
125 CALL_TEST_DEBUG;
126 auto listener = std::make_shared<MyGestureListener>();
127 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, listener);
128 ASSERT_NO_FATAL_FAILURE(detector.OnTouchEvent(nullptr));
129 }
130
131 /**
132 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_06
133 * @tc.desc: Test OnTouchEvent
134 * @tc.type: FUNC
135 * @tc.require:
136 */
137 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_06, TestSize.Level1)
138 {
139 CALL_TEST_DEBUG;
140 auto pointerEvent = PointerEvent::Create();
141 ASSERT_NE(pointerEvent, nullptr);
142 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_MOUSE);
143
144 auto listener = std::make_shared<MyGestureListener>();
145 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, listener);
146 ASSERT_NO_FATAL_FAILURE(detector.OnTouchEvent(pointerEvent));
147 }
148
149 /**
150 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_07
151 * @tc.desc: Test OnTouchEvent
152 * @tc.type: FUNC
153 * @tc.require:
154 */
155 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_07, TestSize.Level1)
156 {
157 CALL_TEST_DEBUG;
158 auto pointerEvent = PointerEvent::Create();
159 ASSERT_NE(pointerEvent, nullptr);
160 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
161 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN);
162
163 auto listener = std::make_shared<MyGestureListener>();
164 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, listener);
165 int32_t fingerCnt = 3;
166 detector.AddGestureFingers(fingerCnt);
167 ASSERT_NO_FATAL_FAILURE(detector.OnTouchEvent(pointerEvent));
168 }
169
170 /**
171 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_08
172 * @tc.desc: Test OnTouchEvent
173 * @tc.type: FUNC
174 * @tc.require:
175 */
176 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_08, TestSize.Level1)
177 {
178 CALL_TEST_DEBUG;
179 auto pointerEvent = PointerEvent::Create();
180 ASSERT_NE(pointerEvent, nullptr);
181 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
182 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_MOVE);
183
184 auto listener = std::make_shared<MyGestureListener>();
185 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, listener);
186 int32_t fingerCnt = 3;
187 detector.AddGestureFingers(fingerCnt);
188 ASSERT_NO_FATAL_FAILURE(detector.OnTouchEvent(pointerEvent));
189 }
190
191 /**
192 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_09
193 * @tc.desc: Test OnTouchEvent
194 * @tc.type: FUNC
195 * @tc.require:
196 */
197 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_09, TestSize.Level1)
198 {
199 CALL_TEST_DEBUG;
200 auto pointerEvent = PointerEvent::Create();
201 ASSERT_NE(pointerEvent, nullptr);
202 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
203 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UP);
204
205 auto listener = std::make_shared<MyGestureListener>();
206 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, listener);
207 int32_t fingerCnt = 3;
208 detector.AddGestureFingers(fingerCnt);
209 ASSERT_NO_FATAL_FAILURE(detector.OnTouchEvent(pointerEvent));
210 }
211
212 /**
213 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_10
214 * @tc.desc: Test OnTouchEvent
215 * @tc.type: FUNC
216 * @tc.require:
217 */
218 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_10, TestSize.Level1)
219 {
220 CALL_TEST_DEBUG;
221 auto pointerEvent = PointerEvent::Create();
222 ASSERT_NE(pointerEvent, nullptr);
223 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
224 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_CANCEL);
225
226 auto listener = std::make_shared<MyGestureListener>();
227 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, listener);
228 int32_t fingerCnt = 3;
229 detector.AddGestureFingers(fingerCnt);
230 ASSERT_NO_FATAL_FAILURE(detector.OnTouchEvent(pointerEvent));
231 }
232
233 /**
234 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_11
235 * @tc.desc: Test OnTouchEvent
236 * @tc.type: FUNC
237 * @tc.require:
238 */
239 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_11, TestSize.Level1)
240 {
241 CALL_TEST_DEBUG;
242 auto pointerEvent = PointerEvent::Create();
243 ASSERT_NE(pointerEvent, nullptr);
244 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
245 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_PULL_UP);
246
247 auto listener = std::make_shared<MyGestureListener>();
248 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, listener);
249 int32_t fingerCnt = 3;
250 detector.AddGestureFingers(fingerCnt);
251 ASSERT_NO_FATAL_FAILURE(detector.OnTouchEvent(pointerEvent));
252 }
253
254 /**
255 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_12
256 * @tc.desc: Test OnTouchEvent
257 * @tc.type: FUNC
258 * @tc.require:
259 */
260 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_12, TestSize.Level1)
261 {
262 CALL_TEST_DEBUG;
263 auto pointerEvent = PointerEvent::Create();
264 ASSERT_NE(pointerEvent, nullptr);
265 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN);
266 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN);
267
268 auto listener = std::make_shared<MyGestureListener>();
269 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, listener);
270 int32_t fingerCnt = 3;
271 detector.AddGestureFingers(fingerCnt);
272 ASSERT_NO_FATAL_FAILURE(detector.OnTouchEvent(pointerEvent));
273 }
274
275 /**
276 * @tc.name: TouchGestureDetectorTest_HandleDownEvent_01
277 * @tc.desc: Test HandleDownEvent
278 * @tc.type: FUNC
279 * @tc.require:
280 */
281 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleDownEvent_01, TestSize.Level1)
282 {
283 CALL_TEST_DEBUG;
284 auto listener = std::make_shared<MyGestureListener>();
285 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
286 TouchGestureDetector detector(type, listener);
287 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
288 ASSERT_NE(pointerEvent, nullptr);
289
290 pointerEvent->pointerId_ = 3;
291 detector.isRecognized_ = false;
292
293 std::list<PointerEvent::PointerItem> pointers_;
294 PointerEvent::PointerItem item1;
295 item1.SetPointerId(1);
296 PointerEvent::PointerItem item2;
297 item2.SetPointerId(2);
298 pointers_.push_back(item1);
299 pointers_.push_back(item2);
300
301 bool ret = pointerEvent->GetPointerItem(pointerEvent->pointerId_, item2);
302 EXPECT_FALSE(ret);
303 ASSERT_NO_FATAL_FAILURE(detector.HandleDownEvent(pointerEvent));
304 }
305
306 /**
307 * @tc.name: TouchGestureDetectorTest_HandleDownEvent_02
308 * @tc.desc: Test HandleDownEvent
309 * @tc.type: FUNC
310 * @tc.require:
311 */
312 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleDownEvent_02, TestSize.Level1)
313 {
314 CALL_TEST_DEBUG;
315 auto listener = std::make_shared<MyGestureListener>();
316 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
317 TouchGestureDetector detector(type, listener);
318 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
319 ASSERT_NE(pointerEvent, nullptr);
320 detector.isRecognized_ = true;
321 ASSERT_NO_FATAL_FAILURE(detector.HandleDownEvent(pointerEvent));
322 }
323
324 /**
325 * @tc.name: TouchGestureDetectorTest_HandleMoveEvent_01
326 * @tc.desc: Test HandleMoveEvent
327 * @tc.type: FUNC
328 * @tc.require:
329 */
330 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleMoveEvent_01, TestSize.Level1)
331 {
332 CALL_TEST_DEBUG;
333 auto listener = std::make_shared<MyGestureListener>();
334 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
335 TouchGestureDetector detector(type, listener);
336 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
337 ASSERT_NE(pointerEvent, nullptr);
338 detector.downPoint_[1] = Point(1.0f, 2.0f);
339 detector.downPoint_[2] = Point(3.0f, 4.0f);
340 detector.downPoint_[3] = Point(5.0f, 6.0f);
341
342 detector.fingers_.insert(1);
343 detector.fingers_.insert(0);
344 detector.fingers_.insert(3);
345 EXPECT_TRUE(detector.IsMatchGesture(ALL_FINGER_COUNT));
346
347 detector.isRecognized_ = false;
348 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
349 detector.gestureType_ = TOUCH_GESTURE_TYPE_SWIPE;
350 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
351
352 detector.gestureType_ = TOUCH_GESTURE_TYPE_PINCH;
353 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
354
355 detector.gestureType_ = 8;
356 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
357 }
358
359 /**
360 * @tc.name: TouchGestureDetectorTest_HandleMoveEvent_02
361 * @tc.desc: Test HandleMoveEvent
362 * @tc.type: FUNC
363 * @tc.require:
364 */
365 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleMoveEvent_02, TestSize.Level1)
366 {
367 CALL_TEST_DEBUG;
368 auto listener = std::make_shared<MyGestureListener>();
369 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
370 TouchGestureDetector detector(type, listener);
371 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
372 ASSERT_NE(pointerEvent, nullptr);
373 detector.downPoint_[1] = Point(1.0f, 2.0f);
374 detector.downPoint_[2] = Point(3.0f, 4.0f);
375 detector.downPoint_[3] = Point(5.0f, 6.0f);
376
377 detector.fingers_.insert(1);
378 detector.fingers_.insert(0);
379 detector.fingers_.insert(3);
380 detector.isRecognized_ = true;
381 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
382 }
383
384 /**
385 * @tc.name: TouchGestureDetectorTest_HandleMoveEvent_03
386 * @tc.desc: Test HandleMoveEvent
387 * @tc.type: FUNC
388 * @tc.require:
389 */
390 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleMoveEvent_03, TestSize.Level1)
391 {
392 CALL_TEST_DEBUG;
393 auto listener = std::make_shared<MyGestureListener>();
394 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
395 TouchGestureDetector detector(type, listener);
396 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
397 ASSERT_NE(pointerEvent, nullptr);
398
399 detector.downPoint_[1] = Point(1.0f, 2.0f);
400 detector.downPoint_[2] = Point(3.0f, 4.0f);
401 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
402 }
403
404 /**
405 * @tc.name: TouchGestureDetectorTest_HandleSwipeMoveEvent_01
406 * @tc.desc: Test HandleSwipeMoveEvent
407 * @tc.type: FUNC
408 * @tc.require:
409 */
410 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleSwipeMoveEvent_01, TestSize.Level1)
411 {
412 CALL_TEST_DEBUG;
413 auto listener = std::make_shared<MyGestureListener>();
414 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
415 TouchGestureDetector detector(type, listener);
416 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
417 ASSERT_NE(pointerEvent, nullptr);
418
419 detector.downPoint_[1] = Point(1.0f, 2.0f);
420 detector.downPoint_[2] = Point(3.0f, 4.0f, 150000);
421 detector.isFingerReady_ = false;
422 ASSERT_NO_FATAL_FAILURE(detector.HandleSwipeMoveEvent(pointerEvent));
423 }
424
425 /**
426 * @tc.name: TouchGestureDetectorTest_HandleSwipeMoveEvent_02
427 * @tc.desc: Test HandleSwipeMoveEvent
428 * @tc.type: FUNC
429 * @tc.require:
430 */
431 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleSwipeMoveEvent_02, TestSize.Level1)
432 {
433 CALL_TEST_DEBUG;
434 auto listener = std::make_shared<MyGestureListener>();
435 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
436 TouchGestureDetector detector(type, listener);
437 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
438 ASSERT_NE(pointerEvent, nullptr);
439
440 detector.downPoint_[1] = Point(1.0f, 2.0f);
441 detector.downPoint_[2] = Point(3.0f, 4.0f, 150000);
442 detector.downPoint_[3] = Point(5.0f, 6.0f, 200000);
443 detector.isFingerReady_ = true;
444
445 auto state = detector.ClacFingerMoveDirection(pointerEvent);
446 state = TouchGestureDetector::SlideState::DIRECTION_UNKNOW;
447 ASSERT_NO_FATAL_FAILURE(detector.HandleSwipeMoveEvent(pointerEvent));
448
449 state = TouchGestureDetector::SlideState::DIRECTION_DOWN;
450 GestureMode mode = detector.ChangeToGestureMode(state);
451 EXPECT_FALSE(detector.NotifyGestureEvent(pointerEvent, mode));
452 ASSERT_NO_FATAL_FAILURE(detector.HandleSwipeMoveEvent(pointerEvent));
453 }
454
455 /**
456 * @tc.name: TouchGestureDetectorTest_HandlePinchMoveEvent_01
457 * @tc.desc: Test HandlePinchMoveEvent
458 * @tc.type: FUNC
459 * @tc.require:
460 */
461 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandlePinchMoveEvent_01, TestSize.Level1)
462 {
463 CALL_TEST_DEBUG;
464 auto listener = std::make_shared<MyGestureListener>();
465 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
466 TouchGestureDetector detector(type, listener);
467 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
468 ASSERT_NE(pointerEvent, nullptr);
469
470 detector.downPoint_[1] = Point(1.0f, 2.0f);
471 detector.downPoint_[2] = Point(3.0f, 4.0f);
472 EXPECT_TRUE(detector.lastDistance_.empty());
473 ASSERT_NO_FATAL_FAILURE(detector.HandlePinchMoveEvent(pointerEvent));
474 }
475
476 /**
477 * @tc.name: TouchGestureDetectorTest_HandlePinchMoveEvent_02
478 * @tc.desc: Test HandlePinchMoveEvent
479 * @tc.type: FUNC
480 * @tc.require:
481 */
482 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandlePinchMoveEvent_02, TestSize.Level1)
483 {
484 CALL_TEST_DEBUG;
485 auto listener = std::make_shared<MyGestureListener>();
486 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
487 TouchGestureDetector detector(type, listener);
488 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
489 ASSERT_NE(pointerEvent, nullptr);
490
491 detector.downPoint_[1] = Point(1.0f, 2.0f);
492 detector.downPoint_[2] = Point(3.0f, 4.0f);
493 detector.downPoint_[3] = Point(5.0f, 6.0f);
494 detector.downPoint_[4] = Point(7.0f, 8.0f);
495
496 detector.lastDistance_[1] = 1.0;
497 detector.lastDistance_[2] = 2.0;
498 detector.lastDistance_[3] = 3.0;
499 EXPECT_FALSE(detector.lastDistance_.empty());
500 ASSERT_NO_FATAL_FAILURE(detector.HandlePinchMoveEvent(pointerEvent));
501 }
502
503 /**
504 * @tc.name: TouchGestureDetectorTest_HandleUpEvent_01
505 * @tc.desc: Test HandleUpEvent
506 * @tc.type: FUNC
507 * @tc.require:
508 */
509 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleUpEvent_01, TestSize.Level1)
510 {
511 CALL_TEST_DEBUG;
512 auto listener = std::make_shared<MyGestureListener>();
513 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
514 TouchGestureDetector detector(type, listener);
515 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
516 ASSERT_NE(pointerEvent, nullptr);
517 pointerEvent->pointerId_ = 1;
518 detector.downPoint_[1] = Point(1.0f, 2.0f);
519 detector.downPoint_[2] = Point(3.0f, 4.0f);
520 ASSERT_NO_FATAL_FAILURE(detector.HandleUpEvent(pointerEvent));
521
522 pointerEvent->pointerId_ = 3;
523 ASSERT_NO_FATAL_FAILURE(detector.HandleUpEvent(pointerEvent));
524 }
525
526 /**
527 * @tc.name: TouchGestureDetectorTest_HandleUpEvent_02
528 * @tc.desc: Test HandleUpEvent
529 * @tc.type: FUNC
530 * @tc.require:
531 */
532 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleUpEvent_02, TestSize.Level1)
533 {
534 CALL_TEST_DEBUG;
535 auto listener = std::make_shared<MyGestureListener>();
536 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
537 TouchGestureDetector detector(type, listener);
538 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
539 ASSERT_NE(pointerEvent, nullptr);
540 pointerEvent->pointerId_ = 1;
541 EXPECT_TRUE(detector.downPoint_.empty());
542 ASSERT_NO_FATAL_FAILURE(detector.HandleUpEvent(pointerEvent));
543 }
544
545 /**
546 * @tc.name: TouchGestureDetectorTest_WhetherDiscardTouchEvent_01
547 * @tc.desc: Test WhetherDiscardTouchEvent
548 * @tc.type: FUNC
549 * @tc.require:
550 */
551 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_WhetherDiscardTouchEvent_01, TestSize.Level1)
552 {
553 CALL_TEST_DEBUG;
554 auto listener = std::make_shared<MyGestureListener>();
555 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
556 TouchGestureDetector detector(type, listener);
557 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
558 ASSERT_NE(pointerEvent, nullptr);
559
560 pointerEvent->sourceType_ = PointerEvent::SOURCE_TYPE_MOUSE;
561 EXPECT_TRUE(detector.WhetherDiscardTouchEvent(pointerEvent));
562
563 pointerEvent->sourceType_ = PointerEvent::SOURCE_TYPE_TOUCHSCREEN;
564 detector.gestureEnable_ = false;
565 EXPECT_TRUE(detector.WhetherDiscardTouchEvent(pointerEvent));
566
567 pointerEvent->sourceType_ = PointerEvent::SOURCE_TYPE_TOUCHSCREEN;
568 detector.gestureEnable_ = true;
569 pointerEvent->bitwise_ = InputEvent::EVENT_FLAG_SIMULATE;
570 pointerEvent->SetPointerId(0);
571 EXPECT_TRUE(detector.WhetherDiscardTouchEvent(pointerEvent));
572
573 pointerEvent->sourceType_ = PointerEvent::SOURCE_TYPE_TOUCHSCREEN;
574 detector.gestureEnable_ = true;
575 detector.gestureDisplayId_ = INT32_MAX - 2;
576 pointerEvent->bitwise_ = 0;
577 pointerEvent->SetPointerId(7);
578 pointerEvent->targetDisplayId_ = INT32_MAX - 1;
579 EXPECT_TRUE(detector.WhetherDiscardTouchEvent(pointerEvent));
580
581 detector.gestureDisplayId_ = INT32_MAX;
582 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UP);
583 EXPECT_FALSE(detector.WhetherDiscardTouchEvent(pointerEvent));
584
585 detector.gestureDisplayId_ = INT32_MAX;
586 pointerEvent->targetDisplayId_ = INT32_MAX;
587 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN);
588 EXPECT_FALSE(detector.WhetherDiscardTouchEvent(pointerEvent));
589 }
590
591 /**
592 * @tc.name: TouchGestureDetectorTest_HandleFingerDown_01
593 * @tc.desc: Test HandleFingerDown
594 * @tc.type: FUNC
595 * @tc.require:
596 */
597 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleFingerDown_01, TestSize.Level1)
598 {
599 CALL_TEST_DEBUG;
600 auto listener = std::make_shared<MyGestureListener>();
601 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
602 TouchGestureDetector detector(type, listener);
603 detector.downPoint_[1] = Point(1.0f, 2.0f);
604 detector.downPoint_[2] = Point(3.0f, 4.0f);
605 auto fingersCount = detector.downPoint_.size();
606 EXPECT_TRUE(fingersCount < 3);
607 EXPECT_FALSE(detector.HandleFingerDown());
608 }
609
610 /**
611 * @tc.name: TouchGestureDetectorTest_HandleFingerDown_02
612 * @tc.desc: Test HandleFingerDown
613 * @tc.type: FUNC
614 * @tc.require:
615 */
616 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleFingerDown_02, TestSize.Level1)
617 {
618 CALL_TEST_DEBUG;
619 auto listener = std::make_shared<MyGestureListener>();
620 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
621 TouchGestureDetector detector(type, listener);
622 detector.downPoint_[1] = Point(0.0f, 0.0f);
623 detector.downPoint_[2] = Point(1000.0f, 1000.0f);
624 detector.downPoint_[3] = Point(-1000.0f, -1000.0f);
625 detector.downPoint_[4] = Point(500.0f, -500.0f);
626 detector.downPoint_[5] = Point(-500.0f, 500.0f);
627 EXPECT_FALSE(detector.HandleFingerDown());
628 }
629
630 /**
631 * @tc.name: TouchGestureDetectorTest_HandleFingerDown_03
632 * @tc.desc: Test HandleFingerDown
633 * @tc.type: FUNC
634 * @tc.require:
635 */
636 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleFingerDown_03, TestSize.Level1)
637 {
638 CALL_TEST_DEBUG;
639 auto listener = std::make_shared<MyGestureListener>();
640 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
641 TouchGestureDetector detector(type, listener);
642 detector.downPoint_[1] = Point(0.0f, 0.0f);
643 detector.downPoint_[2] = Point(100.0f, 100.0f);
644 detector.downPoint_[3] = Point(200.0f, 200.0f);
645 detector.downPoint_[4] = Point(300.0f, 300.0f);
646 detector.downPoint_[5] = Point(400.0f, 400.0f);
647 EXPECT_TRUE(detector.HandleFingerDown());
648 }
649
650 /**
651 * @tc.name: TouchGestureDetectorTest_HandleFingerDown_04
652 * @tc.desc: Test HandleFingerDown
653 * @tc.type: FUNC
654 * @tc.require:
655 */
656 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleFingerDown_04, TestSize.Level1)
657 {
658 CALL_TEST_DEBUG;
659 auto listener = std::make_shared<MyGestureListener>();
660 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
661 TouchGestureDetector detector(type, listener);
662 detector.downPoint_[1] = Point(0.0f, 0.0f, 50000);
663 detector.downPoint_[2] = Point(100.0f, 100.0f, 150000);
664 detector.downPoint_[3] = Point(200.0f, 200.0f, 250000);
665 EXPECT_FALSE(detector.HandleFingerDown());
666 }
667
668 /**
669 * @tc.name: TouchGestureDetectorTest_GetMaxFingerSpacing_01
670 * @tc.desc: Test GetMaxFingerSpacing
671 * @tc.type: FUNC
672 * @tc.require:
673 */
674 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetMaxFingerSpacing_01, TestSize.Level1)
675 {
676 CALL_TEST_DEBUG;
677 auto listener = std::make_shared<MyGestureListener>();
678 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
679 TouchGestureDetector detector(type, listener);
680 detector.downPoint_[1] = Point(1.0f, 2.0f);
681 detector.downPoint_[2] = Point(3.0f, 4.0f);
682 ASSERT_NO_FATAL_FAILURE(detector.GetMaxFingerSpacing());
683 }
684
685 /**
686 * @tc.name: TouchGestureDetectorTest_GetMaxFingerSpacing_02
687 * @tc.desc: Test GetMaxFingerSpacing
688 * @tc.type: FUNC
689 * @tc.require:
690 */
691 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetMaxFingerSpacing_02, TestSize.Level1)
692 {
693 CALL_TEST_DEBUG;
694 auto listener = std::make_shared<MyGestureListener>();
695 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
696 TouchGestureDetector detector(type, listener);
697 detector.downPoint_[1] = Point(1.0f, 2.0f);
698 detector.downPoint_[2] = Point(3.0f, 4.0f);
699 detector.downPoint_[3] = Point(5.0f, 6.0f);
700 ASSERT_NO_FATAL_FAILURE(detector.GetMaxFingerSpacing());
701 }
702
703 /**
704 * @tc.name: TouchGestureDetectorTest_GetMaxFingerSpacing_03
705 * @tc.desc: Test GetMaxFingerSpacing
706 * @tc.type: FUNC
707 * @tc.require:
708 */
709 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetMaxFingerSpacing_03, TestSize.Level1)
710 {
711 CALL_TEST_DEBUG;
712 auto listener = std::make_shared<MyGestureListener>();
713 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
714 TouchGestureDetector detector(type, listener);
715 EXPECT_FLOAT_EQ(detector.GetMaxFingerSpacing(), 0.0f);
716 }
717
718 /**
719 * @tc.name: TouchGestureDetectorTest_GetMaxFingerSpacing_04
720 * @tc.desc: Test GetMaxFingerSpacing
721 * @tc.type: FUNC
722 * @tc.require:
723 */
724 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetMaxFingerSpacing_04, TestSize.Level1)
725 {
726 CALL_TEST_DEBUG;
727 auto listener = std::make_shared<MyGestureListener>();
728 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
729 TouchGestureDetector detector(type, listener);
730 detector.downPoint_[1] = Point(1.0f, 1.0f);
731 detector.downPoint_[2] = Point(2.0f, 2.0f);
732 detector.downPoint_[3] = Point(3.0f, 3.0f);
733 EXPECT_FLOAT_EQ(detector.GetMaxFingerSpacing(), std::hypot(2.0f, 2.0f));
734 }
735
736 /**
737 * @tc.name: TouchGestureDetectorTest_GetMaxFingerSpacing_05
738 * @tc.desc: Test GetMaxFingerSpacing
739 * @tc.type: FUNC
740 * @tc.require:
741 */
742 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetMaxFingerSpacing_05, TestSize.Level1)
743 {
744 CALL_TEST_DEBUG;
745 auto listener = std::make_shared<MyGestureListener>();
746 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
747 TouchGestureDetector detector(type, listener);
748 detector.downPoint_[1] = Point(1.0f, 1.0f);
749 detector.downPoint_[2] = Point(2.0f, 2.0f);
750 detector.downPoint_[3] = Point(3.0f, 3.0f);
751 detector.downPoint_[4] = Point(4.0f, 4.0f);
752 EXPECT_FLOAT_EQ(detector.GetMaxFingerSpacing(), std::hypot(3.0f, 3.0f));
753 }
754
755 /**
756 * @tc.name: TouchGestureDetectorTest_GetMaxDownInterval_01
757 * @tc.desc: Test GetMaxDownInterval
758 * @tc.type: FUNC
759 * @tc.require:
760 */
761 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetMaxDownInterval_01, TestSize.Level1)
762 {
763 CALL_TEST_DEBUG;
764 auto listener = std::make_shared<MyGestureListener>();
765 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
766 TouchGestureDetector detector(type, listener);
767 detector.downPoint_[1] = Point(1.0f, 2.0f);
768 detector.downPoint_[2] = Point(3.0f, 4.0f);
769 ASSERT_NO_FATAL_FAILURE(detector.GetMaxDownInterval());
770 }
771
772 /**
773 * @tc.name: TouchGestureDetectorTest_GetMaxDownInterval_02
774 * @tc.desc: Test GetMaxDownInterval
775 * @tc.type: FUNC
776 * @tc.require:
777 */
778 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetMaxDownInterval_02, TestSize.Level1)
779 {
780 CALL_TEST_DEBUG;
781 auto listener = std::make_shared<MyGestureListener>();
782 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
783 TouchGestureDetector detector(type, listener);
784 detector.downPoint_[1] = Point(1.0f, 2.0f);
785 detector.downPoint_[2] = Point(3.0f, 4.0f);
786 detector.downPoint_[3] = Point(5.0f, 6.0f);
787 ASSERT_NO_FATAL_FAILURE(detector.GetMaxDownInterval());
788 }
789
790 /**
791 * @tc.name: TouchGestureDetectorTest_GetSlidingDirection_01
792 * @tc.desc: Test GetSlidingDirection
793 * @tc.type: FUNC
794 * @tc.require:
795 */
796 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetSlidingDirection_01, TestSize.Level1)
797 {
798 CALL_TEST_DEBUG;
799 auto listener = std::make_shared<MyGestureListener>();
800 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
801 TouchGestureDetector detector(type, listener);
802 double angle;
803 angle = 20;
804 ASSERT_NO_FATAL_FAILURE(detector.GetSlidingDirection(angle));
805 angle = 50;
806 ASSERT_NO_FATAL_FAILURE(detector.GetSlidingDirection(angle));
807 angle = -60;
808 ASSERT_NO_FATAL_FAILURE(detector.GetSlidingDirection(angle));
809 angle = 200;
810 ASSERT_NO_FATAL_FAILURE(detector.GetSlidingDirection(angle));
811 }
812
813 /**
814 * @tc.name: TouchGestureDetectorTest_ChangeToGestureMode_01
815 * @tc.desc: Test ChangeToGestureMode
816 * @tc.type: FUNC
817 * @tc.require:
818 */
819 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_ChangeToGestureMode_01, TestSize.Level1)
820 {
821 CALL_TEST_DEBUG;
822 auto listener = std::make_shared<MyGestureListener>();
823 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
824 TouchGestureDetector detector(type, listener);
825 TouchGestureDetector::SlideState state;
826 state = TouchGestureDetector::SlideState::DIRECTION_UP;
827 EXPECT_EQ(detector.ChangeToGestureMode(state), GestureMode::ACTION_SWIPE_UP);
828
829 state = TouchGestureDetector::SlideState::DIRECTION_DOWN;
830 EXPECT_EQ(detector.ChangeToGestureMode(state), GestureMode::ACTION_SWIPE_DOWN);
831
832 state = TouchGestureDetector::SlideState::DIRECTION_LEFT;
833 EXPECT_EQ(detector.ChangeToGestureMode(state), GestureMode::ACTION_SWIPE_LEFT);
834
835 state = TouchGestureDetector::SlideState::DIRECTION_RIGHT;
836 EXPECT_EQ(detector.ChangeToGestureMode(state), GestureMode::ACTION_SWIPE_RIGHT);
837
838 state = TouchGestureDetector::SlideState::DIRECTION_UNKNOW;
839 EXPECT_EQ(detector.ChangeToGestureMode(state), GestureMode::ACTION_UNKNOWN);
840 }
841
842 /**
843 * @tc.name: TouchGestureDetectorTest_ClacFingerMoveDirection_01
844 * @tc.desc: Test ClacFingerMoveDirection
845 * @tc.type: FUNC
846 * @tc.require:
847 */
848 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_ClacFingerMoveDirection_01, TestSize.Level1)
849 {
850 CALL_TEST_DEBUG;
851 auto listener = std::make_shared<MyGestureListener>();
852 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
853 TouchGestureDetector detector(type, listener);
854 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
855 ASSERT_NE(pointerEvent, nullptr);
856 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_UP;
857 ASSERT_NO_FATAL_FAILURE(detector.ClacFingerMoveDirection(pointerEvent));
858
859 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_MOVE;
860 detector.downPoint_[1] = Point(1.0f, 2.0f);
861 detector.downPoint_[2] = Point(3.0f, 4.0f);
862 ASSERT_NO_FATAL_FAILURE(detector.ClacFingerMoveDirection(pointerEvent));
863 }
864
865 /**
866 * @tc.name: TouchGestureDetectorTest_ClacFingerMoveDirection_02
867 * @tc.desc: Test ClacFingerMoveDirection
868 * @tc.type: FUNC
869 * @tc.require:
870 */
871 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_ClacFingerMoveDirection_02, TestSize.Level1)
872 {
873 CALL_TEST_DEBUG;
874 auto listener = std::make_shared<MyGestureListener>();
875 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
876 TouchGestureDetector detector(type, listener);
877 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
878 ASSERT_NE(pointerEvent, nullptr);
879 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_MOVE;
880 detector.downPoint_[1] = Point(1.0f, 2.0f);
881 detector.downPoint_[2] = Point(3.0f, 4.0f);
882 detector.downPoint_[3] = Point(5.0f, 6.0f);
883 ASSERT_NO_FATAL_FAILURE(detector.ClacFingerMoveDirection(pointerEvent));
884 }
885
886 /**
887 * @tc.name: TouchGestureDetectorTest_CalcGravityCenter_01
888 * @tc.desc: Test CalcGravityCenter
889 * @tc.type: FUNC
890 * @tc.require:
891 */
892 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcGravityCenter_01, TestSize.Level1)
893 {
894 CALL_TEST_DEBUG;
895 auto listener = std::make_shared<MyGestureListener>();
896 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
897 TouchGestureDetector detector(type, listener);
898 std::map<int32_t, Point> points;
899 points[1] = Point(1.0f, 2.0f);
900 points[2] = Point(3.0f, 4.0f);
901 points[3] = Point(5.0f, 6.0f);
902 points[4] = Point(7.0f, 8.0f);
903 points[5] = Point(9.0f, 10.0f);
904 points[6] = Point(11.0f, 12.0f);
905 int32_t count = static_cast<int32_t>(points.size());
906 EXPECT_TRUE(count > 5);
907 ASSERT_NO_FATAL_FAILURE(detector.CalcGravityCenter(points));
908 }
909
910 /**
911 * @tc.name: TouchGestureDetectorTest_CalcGravityCenter_02
912 * @tc.desc: Test CalcGravityCenter
913 * @tc.type: FUNC
914 * @tc.require:
915 */
916 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcGravityCenter_02, TestSize.Level1)
917 {
918 CALL_TEST_DEBUG;
919 auto listener = std::make_shared<MyGestureListener>();
920 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
921 TouchGestureDetector detector(type, listener);
922 std::map<int32_t, Point> points;
923 points[1] = Point(1.0f, 2.0f);
924 points[2] = Point(3.0f, 4.0f);
925 points[3] = Point(5.0f, 6.0f);
926 ASSERT_NO_FATAL_FAILURE(detector.CalcGravityCenter(points));
927 }
928
929 /**
930 * @tc.name: TouchGestureDetectorTest_IsFingerMove
931 * @tc.desc: Test IsFingerMove
932 * @tc.type: FUNC
933 * @tc.require:
934 */
935 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_IsFingerMove, TestSize.Level1)
936 {
937 CALL_TEST_DEBUG;
938 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
939 ASSERT_NO_FATAL_FAILURE(detector.IsFingerMove(Point(1.0f, 2.0f), Point(3.0f, 4.0f)));
940 }
941
942 /**
943 * @tc.name: TouchGestureDetectorTest_CalcTwoPointsDistance
944 * @tc.desc: Test CalcTwoPointsDistance
945 * @tc.type: FUNC
946 * @tc.require:
947 */
948 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcTwoPointsDistance, TestSize.Level1)
949 {
950 CALL_TEST_DEBUG;
951 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
952 ASSERT_NO_FATAL_FAILURE(detector.CalcTwoPointsDistance(Point(1.0f, 2.0f), Point(3.0f, 4.0f)));
953 }
954
955 /**
956 * @tc.name: TouchGestureDetectorTest_CalcClusterCenter_01
957 * @tc.desc: Test CalcClusterCenter
958 * @tc.type: FUNC
959 * @tc.require:
960 */
961 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcClusterCenter_01, TestSize.Level1)
962 {
963 CALL_TEST_DEBUG;
964 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
965 std::map<int32_t, Point> points;
966 ASSERT_NO_FATAL_FAILURE(detector.CalcClusterCenter(points));
967 }
968
969 /**
970 * @tc.name: TouchGestureDetectorTest_CalcClusterCenter_02
971 * @tc.desc: Test CalcClusterCenter
972 * @tc.type: FUNC
973 * @tc.require:
974 */
975 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcClusterCenter_02, TestSize.Level1)
976 {
977 CALL_TEST_DEBUG;
978 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
979 std::map<int32_t, Point> points;
980 points[1] = Point(1.0f, 2.0f);
981 points[2] = Point(3.0f, 4.0f);
982 points[3] = Point(5.0f, 6.0f);
983 ASSERT_NO_FATAL_FAILURE(detector.CalcClusterCenter(points));
984 }
985
986 /**
987 * @tc.name: TouchGestureDetectorTest_CalcAndStoreDistance_01
988 * @tc.desc: Test CalcAndStoreDistance
989 * @tc.type: FUNC
990 * @tc.require:
991 */
992 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcAndStoreDistance_01, TestSize.Level1)
993 {
994 CALL_TEST_DEBUG;
995 auto listener = std::make_shared<MyGestureListener>();
996 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
997 TouchGestureDetector detector(type, listener);
998 std::map<int32_t, Point> points;
999 points[1] = Point(1.0f, 2.0f);
1000 points[2] = Point(3.0f, 4.0f);
1001
1002 detector.downPoint_[1] = Point(1.0f, 2.0f);
1003 detector.downPoint_[2] = Point(3.0f, 4.0f);
1004 ASSERT_NO_FATAL_FAILURE(detector.CalcAndStoreDistance());
1005 }
1006
1007 /**
1008 * @tc.name: TouchGestureDetectorTest_CalcAndStoreDistance_02
1009 * @tc.desc: Test CalcAndStoreDistance
1010 * @tc.type: FUNC
1011 * @tc.require:
1012 */
1013 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcAndStoreDistance_02, TestSize.Level1)
1014 {
1015 CALL_TEST_DEBUG;
1016 auto listener = std::make_shared<MyGestureListener>();
1017 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1018 TouchGestureDetector detector(type, listener);
1019 std::map<int32_t, Point> points;
1020 points[1] = Point(1.0f, 2.0f);
1021 points[2] = Point(3.0f, 4.0f);
1022
1023 detector.downPoint_[1] = Point(1.0f, 2.0f, 50000);
1024 detector.downPoint_[2] = Point(3.0f, 4.0f, 150000);
1025 detector.downPoint_[3] = Point(5.0f, 6.0f, 250000);
1026 detector.downPoint_[4] = Point(7.0f, 8.0f, 350000);
1027 ASSERT_NO_FATAL_FAILURE(detector.CalcAndStoreDistance());
1028 }
1029
1030 /**
1031 * @tc.name: TouchGestureDetectorTest_CalcAndStoreDistance_03
1032 * @tc.desc: Test CalcAndStoreDistance
1033 * @tc.type: FUNC
1034 * @tc.require:
1035 */
1036 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcAndStoreDistance_03, TestSize.Level1)
1037 {
1038 CALL_TEST_DEBUG;
1039 auto listener = std::make_shared<MyGestureListener>();
1040 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1041 TouchGestureDetector detector(type, listener);
1042 std::map<int32_t, Point> points;
1043 points[1] = Point(1.0f, 2.0f);
1044 points[2] = Point(3.0f, 4.0f);
1045
1046 detector.downPoint_[1] = Point(1.0f, 2.0f, 5000);
1047 detector.downPoint_[2] = Point(3.0f, 4.0f, 6000);
1048 detector.downPoint_[3] = Point(5.0f, 6.0f, 7000);
1049 detector.downPoint_[4] = Point(7.0f, 8.0f, 8000);
1050
1051 detector.lastDistance_[1] = 10.5;
1052 detector.lastDistance_[2] = 20.5;
1053 detector.lastDistance_[3] = 30.5;
1054 ASSERT_NO_FATAL_FAILURE(detector.CalcAndStoreDistance());
1055 }
1056
1057 /**
1058 * @tc.name: TouchGestureDetectorTest_CalcMultiFingerMovement_01
1059 * @tc.desc: Test CalcMultiFingerMovement
1060 * @tc.type: FUNC
1061 * @tc.require:
1062 */
1063 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcMultiFingerMovement_01, TestSize.Level1)
1064 {
1065 CALL_TEST_DEBUG;
1066 auto listener = std::make_shared<MyGestureListener>();
1067 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1068 TouchGestureDetector detector(type, listener);
1069 std::map<int32_t, Point> points;
1070 points[1] = Point(1.0f, 2.0f);
1071 points[2] = Point(3.0f, 4.0f);
1072 points[3] = Point(5.0f, 6.0f);
1073
1074 detector.downPoint_[1] = Point(1.0f, 2.0f, 50000);
1075 detector.downPoint_[2] = Point(3.0f, 4.0f, 150000);
1076 detector.downPoint_[3] = Point(5.0f, 6.0f, 250000);
1077 ASSERT_NO_FATAL_FAILURE(detector.CalcMultiFingerMovement(points));
1078 }
1079
1080 /**
1081 * @tc.name: TouchGestureDetectorTest_CalcMultiFingerMovement_02
1082 * @tc.desc: Test CalcMultiFingerMovement
1083 * @tc.type: FUNC
1084 * @tc.require:
1085 */
1086 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcMultiFingerMovement_02, TestSize.Level1)
1087 {
1088 CALL_TEST_DEBUG;
1089 auto listener = std::make_shared<MyGestureListener>();
1090 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1091 TouchGestureDetector detector(type, listener);
1092 std::map<int32_t, Point> points;
1093 points[1] = Point(1.0f, 2.0f);
1094 points[2] = Point(3.0f, 4.0f);
1095 points[3] = Point(5.0f, 6.0f);
1096
1097 detector.downPoint_[4] = Point(1.0f, 2.0f, 5000);
1098 detector.downPoint_[5] = Point(3.0f, 4.0f, 6000);
1099 detector.downPoint_[6] = Point(5.0f, 6.0f, 7000);
1100 ASSERT_NO_FATAL_FAILURE(detector.CalcMultiFingerMovement(points));
1101 }
1102
1103 /**
1104 * @tc.name: TouchGestureDetectorTest_JudgeOperationMode_01
1105 * @tc.desc: Test JudgeOperationMode
1106 * @tc.type: FUNC
1107 * @tc.require:
1108 */
1109 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_JudgeOperationMode_01, TestSize.Level1)
1110 {
1111 CALL_TEST_DEBUG;
1112 auto listener = std::make_shared<MyGestureListener>();
1113 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1114 TouchGestureDetector detector(type, listener);
1115 std::map<int32_t, Point> movePoints;
1116 movePoints[1] = Point(1.0f, 2.0f);
1117 movePoints[2] = Point(3.0f, 4.0f);
1118 movePoints[3] = Point(5.0f, 6.0f);
1119
1120 detector.downPoint_[4] = Point(1.0f, 2.0f, 5000);
1121 detector.downPoint_[5] = Point(3.0f, 4.0f, 6000);
1122 detector.downPoint_[6] = Point(5.0f, 6.0f, 7000);
1123
1124 ASSERT_NO_FATAL_FAILURE(detector.JudgeOperationMode(movePoints));
1125 }
1126
1127 /**
1128 * @tc.name: TouchGestureDetectorTest_JudgeOperationMode_02
1129 * @tc.desc: Test JudgeOperationMode
1130 * @tc.type: FUNC
1131 * @tc.require:
1132 */
1133 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_JudgeOperationMode_02, TestSize.Level1)
1134 {
1135 CALL_TEST_DEBUG;
1136 auto listener = std::make_shared<MyGestureListener>();
1137 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1138 TouchGestureDetector detector(type, listener);
1139 std::map<int32_t, Point> movePoints;
1140 movePoints[1] = Point(1.0f, 2.0f);
1141 movePoints[2] = Point(3.0f, 4.0f);
1142 movePoints[3] = Point(5.0f, 6.0f);
1143
1144 detector.downPoint_[4] = Point(1.0f, 2.0f, 5000);
1145 detector.downPoint_[5] = Point(3.0f, 4.0f, 6000);
1146 detector.downPoint_[6] = Point(5.0f, 6.0f, 7000);
1147 detector.downPoint_[7] = Point(7.0f, 8.0f, 8000);
1148
1149 ASSERT_NO_FATAL_FAILURE(detector.JudgeOperationMode(movePoints));
1150 }
1151
1152 /**
1153 * @tc.name: TouchGestureDetectorTest_JudgeOperationMode_03
1154 * @tc.desc: Test JudgeOperationMode
1155 * @tc.type: FUNC
1156 * @tc.require:
1157 */
1158 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_JudgeOperationMode_03, TestSize.Level1)
1159 {
1160 CALL_TEST_DEBUG;
1161 auto listener = std::make_shared<MyGestureListener>();
1162 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1163 TouchGestureDetector detector(type, listener);
1164 std::map<int32_t, Point> movePoints;
1165 movePoints[1] = Point(1.0f, 2.0f);
1166 movePoints[2] = Point(3.0f, 4.0f);
1167 movePoints[3] = Point(5.0f, 6.0f);
1168
1169 detector.downPoint_[1] = Point(1.0f, 2.0f, 5000);
1170 detector.downPoint_[2] = Point(3.0f, 4.0f, 6000);
1171 detector.downPoint_[3] = Point(5.0f, 6.0f, 7000);
1172 detector.downPoint_[4] = Point(7.0f, 8.0f, 8000);
1173
1174 detector.lastDistance_[4] = 1.0;
1175 detector.lastDistance_[5] = 2.0;
1176 detector.lastDistance_[6] = 3.0;
1177 ASSERT_NO_FATAL_FAILURE(detector.JudgeOperationMode(movePoints));
1178 }
1179
1180 /**
1181 * @tc.name: TouchGestureDetectorTest_JudgeOperationMode_04
1182 * @tc.desc: Test JudgeOperationMode
1183 * @tc.type: FUNC
1184 * @tc.require:
1185 */
1186 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_JudgeOperationMode_04, TestSize.Level1)
1187 {
1188 CALL_TEST_DEBUG;
1189 auto listener = std::make_shared<MyGestureListener>();
1190 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1191 TouchGestureDetector detector(type, listener);
1192 std::map<int32_t, Point> movePoints;
1193 movePoints[1] = Point(1.0f, 2.0f);
1194 movePoints[2] = Point(3.0f, 4.0f);
1195 movePoints[3] = Point(5.0f, 6.0f);
1196 movePoints[4] = Point(7.0f, 8.0f);
1197
1198 detector.downPoint_[1] = Point(1.0f, 2.0f, 5000);
1199 detector.downPoint_[2] = Point(3.0f, 4.0f, 6000);
1200 detector.downPoint_[3] = Point(5.0f, 6.0f, 7000);
1201 detector.downPoint_[4] = Point(7.0f, 8.0f, 8000);
1202
1203 detector.lastDistance_[1] = 1.0;
1204 detector.lastDistance_[2] = 2.0;
1205 detector.lastDistance_[3] = 3.0;
1206 detector.lastDistance_[4] = 4.0;
1207 ASSERT_NO_FATAL_FAILURE(detector.JudgeOperationMode(movePoints));
1208 }
1209
1210 /**
1211 * @tc.name: TouchGestureDetectorTest_AntiJitter_01
1212 * @tc.desc: Test AntiJitter
1213 * @tc.type: FUNC
1214 * @tc.require:
1215 */
1216 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_AntiJitter_01, TestSize.Level1)
1217 {
1218 CALL_TEST_DEBUG;
1219 auto listener = std::make_shared<MyGestureListener>();
1220 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1221 TouchGestureDetector detector(type, listener);
1222 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1223 ASSERT_NE(pointerEvent, nullptr);
1224
1225 GestureMode mode;
1226 mode = GestureMode::ACTION_PINCH_CLOSED;
1227 detector.continuousCloseCount_ = 3;
1228 EXPECT_FALSE(detector.AntiJitter(pointerEvent, mode));
1229 detector.continuousCloseCount_ = 1;
1230 EXPECT_FALSE(detector.AntiJitter(pointerEvent, mode));
1231
1232 mode = GestureMode::ACTION_PINCH_OPENED;
1233 detector.continuousOpenCount_ = 3;
1234 EXPECT_FALSE(detector.AntiJitter(pointerEvent, mode));
1235 detector.continuousOpenCount_ = 1;
1236 EXPECT_FALSE(detector.AntiJitter(pointerEvent, mode));
1237
1238 mode = GestureMode::ACTION_UNKNOWN;
1239 EXPECT_FALSE(detector.AntiJitter(pointerEvent, mode));
1240 }
1241
1242 /**
1243 * @tc.name: TouchGestureDetectorTest_AddGestureFingers_01
1244 * @tc.desc: Test AddGestureFingers
1245 * @tc.type: FUNC
1246 * @tc.require:
1247 */
1248 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_AddGestureFingers_01, TestSize.Level1)
1249 {
1250 CALL_TEST_DEBUG;
1251 auto listener = std::make_shared<MyGestureListener>();
1252 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1253 TouchGestureDetector detector(type, listener);
1254 detector.fingers_.insert(1);
1255 detector.fingers_.insert(2);
1256 detector.fingers_.insert(3);
1257 int32_t fingers = 1;
1258 ASSERT_NO_FATAL_FAILURE(detector.AddGestureFingers(fingers));
1259 fingers = 4;
1260 ASSERT_NO_FATAL_FAILURE(detector.AddGestureFingers(fingers));
1261
1262 detector.fingers_.clear();
1263 ASSERT_NO_FATAL_FAILURE(detector.AddGestureFingers(fingers));
1264 }
1265
1266 /**
1267 * @tc.name: TouchGestureDetectorTest_AddGestureFingers_02
1268 * @tc.desc: Test AddGestureFingers
1269 * @tc.type: FUNC
1270 * @tc.require:
1271 */
1272 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_AddGestureFingers_02, TestSize.Level1)
1273 {
1274 CALL_TEST_DEBUG;
1275 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
1276 int32_t fingers = 5;
1277 ASSERT_NO_FATAL_FAILURE(detector.AddGestureFingers(fingers));
1278 EXPECT_TRUE(detector.gestureEnable_);
1279 }
1280
1281 /**
1282 * @tc.name: TouchGestureDetectorTest_AddGestureFingers_03
1283 * @tc.desc: Test AddGestureFingers
1284 * @tc.type: FUNC
1285 * @tc.require:
1286 */
1287 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_AddGestureFingers_03, TestSize.Level1)
1288 {
1289 CALL_TEST_DEBUG;
1290 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
1291 int32_t fingers = 5;
1292 ASSERT_NO_FATAL_FAILURE(detector.AddGestureFingers(fingers));
1293 EXPECT_TRUE(detector.gestureEnable_);
1294 detector.gestureEnable_ = false;
1295 ASSERT_NO_FATAL_FAILURE(detector.AddGestureFingers(fingers));
1296 EXPECT_FALSE(detector.gestureEnable_);
1297 }
1298
1299 /**
1300 * @tc.name: TouchGestureDetectorTest_AddGestureFingers_04
1301 * @tc.desc: Test AddGestureFingers
1302 * @tc.type: FUNC
1303 * @tc.require:
1304 */
1305 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_AddGestureFingers_04, TestSize.Level1)
1306 {
1307 CALL_TEST_DEBUG;
1308 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
1309 int32_t fingers1 = 3;
1310 ASSERT_NO_FATAL_FAILURE(detector.AddGestureFingers(fingers1));
1311 EXPECT_TRUE(detector.gestureEnable_);
1312 detector.gestureEnable_ = false;
1313 int32_t fingers2 = 4;
1314 ASSERT_NO_FATAL_FAILURE(detector.AddGestureFingers(fingers2));
1315 EXPECT_TRUE(detector.gestureEnable_);
1316 }
1317
1318 /**
1319 * @tc.name: TouchGestureDetectorTest_RemoveGestureFingers_01
1320 * @tc.desc: Test RemoveGestureFingers
1321 * @tc.type: FUNC
1322 * @tc.require:
1323 */
1324 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_RemoveGestureFingers_01, TestSize.Level1)
1325 {
1326 CALL_TEST_DEBUG;
1327 auto listener = std::make_shared<MyGestureListener>();
1328 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1329 TouchGestureDetector detector(type, listener);
1330 detector.fingers_.insert(1);
1331 detector.fingers_.insert(2);
1332 detector.fingers_.insert(3);
1333 int32_t fingers = 1;
1334 ASSERT_NO_FATAL_FAILURE(detector.RemoveGestureFingers(fingers));
1335 fingers = 4;
1336 ASSERT_NO_FATAL_FAILURE(detector.RemoveGestureFingers(fingers));
1337
1338 detector.fingers_.clear();
1339 ASSERT_NO_FATAL_FAILURE(detector.RemoveGestureFingers(fingers));
1340 }
1341
1342 /**
1343 * @tc.name: TouchGestureDetectorTest_RemoveGestureFingers_02
1344 * @tc.desc: Test RemoveGestureFingers
1345 * @tc.type: FUNC
1346 * @tc.require:
1347 */
1348 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_RemoveGestureFingers_02, TestSize.Level1)
1349 {
1350 CALL_TEST_DEBUG;
1351 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
1352 int32_t fingers = 1;
1353 detector.AddGestureFingers(fingers);
1354 ASSERT_NO_FATAL_FAILURE(detector.RemoveGestureFingers(fingers));
1355 EXPECT_FALSE(detector.fingers_.find(fingers) != detector.fingers_.cend());
1356 EXPECT_FALSE(detector.gestureEnable_);
1357 }
1358
1359 /**
1360 * @tc.name: TouchGestureDetectorTest_RemoveGestureFingers_03
1361 * @tc.desc: Test RemoveGestureFingers
1362 * @tc.type: FUNC
1363 * @tc.require:
1364 */
1365 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_RemoveGestureFingers_03, TestSize.Level1)
1366 {
1367 CALL_TEST_DEBUG;
1368 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
1369 int32_t finger1 = 3;
1370 detector.AddGestureFingers(finger1);
1371 int32_t finger2 = 4;
1372 ASSERT_NO_FATAL_FAILURE(detector.RemoveGestureFingers(finger2));
1373 EXPECT_TRUE(detector.fingers_.find(finger1) != detector.fingers_.cend());
1374 EXPECT_TRUE(detector.gestureEnable_);
1375 }
1376
1377 /**
1378 * @tc.name: TouchGestureDetectorTest_RemoveGestureFingers_04
1379 * @tc.desc: Test RemoveGestureFingers
1380 * @tc.type: FUNC
1381 * @tc.require:
1382 */
1383 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_RemoveGestureFingers_04, TestSize.Level1)
1384 {
1385 CALL_TEST_DEBUG;
1386 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
1387 int32_t finger1 = 3;
1388 detector.AddGestureFingers(finger1);
1389 int32_t finger2 = 4;
1390 detector.AddGestureFingers(finger2);
1391 ASSERT_NO_FATAL_FAILURE(detector.RemoveGestureFingers(finger2));
1392 EXPECT_TRUE(detector.fingers_.find(finger1) != detector.fingers_.cend());
1393 EXPECT_TRUE(detector.gestureEnable_);
1394 }
1395
1396 /**
1397 * @tc.name: TouchGestureDetectorTest_IsMatchGesture_01
1398 * @tc.desc: Test IsMatchGesture
1399 * @tc.type: FUNC
1400 * @tc.require:
1401 */
1402 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_IsMatchGesture_01, TestSize.Level1)
1403 {
1404 CALL_TEST_DEBUG;
1405 auto listener = std::make_shared<MyGestureListener>();
1406 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1407 TouchGestureDetector detector(type, listener);
1408 detector.fingers_.insert(1);
1409 detector.fingers_.insert(2);
1410 detector.fingers_.insert(3);
1411
1412 int32_t count = 1;
1413 GestureMode mode;
1414 mode = GestureMode::ACTION_SWIPE_DOWN;
1415 EXPECT_TRUE(detector.IsMatchGesture(mode, count));
1416 mode = GestureMode::ACTION_SWIPE_UP;
1417 EXPECT_TRUE(detector.IsMatchGesture(mode, count));
1418 mode = GestureMode::ACTION_SWIPE_LEFT;
1419 EXPECT_TRUE(detector.IsMatchGesture(mode, count));
1420 mode = GestureMode::ACTION_SWIPE_RIGHT;
1421 EXPECT_TRUE(detector.IsMatchGesture(mode, count));
1422 mode = GestureMode::ACTION_PINCH_OPENED;
1423 EXPECT_FALSE(detector.IsMatchGesture(mode, count));
1424 mode = GestureMode::ACTION_PINCH_CLOSED;
1425 EXPECT_FALSE(detector.IsMatchGesture(mode, count));
1426 mode = GestureMode::ACTION_UNKNOWN;
1427 EXPECT_FALSE(detector.IsMatchGesture(mode, count));
1428 }
1429
1430 /**
1431 * @tc.name: TouchGestureDetectorTest_IsMatchGesture_02
1432 * @tc.desc: Test IsMatchGesture
1433 * @tc.type: FUNC
1434 * @tc.require:
1435 */
1436 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_IsMatchGesture_02, TestSize.Level1)
1437 {
1438 CALL_TEST_DEBUG;
1439 auto listener = std::make_shared<MyGestureListener>();
1440 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1441 TouchGestureDetector detector(type, listener);
1442 detector.fingers_.insert(1);
1443 detector.fingers_.insert(2);
1444 detector.fingers_.insert(3);
1445
1446 int32_t count = 4;
1447 GestureMode mode;
1448 mode = GestureMode::ACTION_UNKNOWN;
1449 EXPECT_FALSE(detector.IsMatchGesture(mode, count));
1450 }
1451
1452 /**
1453 * @tc.name: TouchGestureDetectorTest_NotifyGestureEvent_01
1454 * @tc.desc: Test NotifyGestureEvent
1455 * @tc.type: FUNC
1456 * @tc.require:
1457 */
1458 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_NotifyGestureEvent_01, TestSize.Level1)
1459 {
1460 CALL_TEST_DEBUG;
1461 auto listener = std::make_shared<MyGestureListener>();
1462 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1463 TouchGestureDetector detector(type, listener);
1464 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1465 ASSERT_NE(pointerEvent, nullptr);
1466
1467 GestureMode mode;
1468 mode = GestureMode::ACTION_UNKNOWN;
1469 EXPECT_FALSE(detector.NotifyGestureEvent(pointerEvent, mode));
1470
1471 mode = GestureMode::ACTION_GESTURE_END;
1472 for (auto i = 0; i < 5; i++) {
1473 PointerEvent::PointerItem pointerItem;
1474 detector.fingers_.insert(i + 1);
1475 pointerEvent->pointers_.push_back(pointerItem);
1476 }
1477 EXPECT_FALSE(detector.NotifyGestureEvent(pointerEvent, mode));
1478 }
1479
1480 /**
1481 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_003
1482 * @tc.desc: Test OnTouchEvent
1483 * @tc.type: FUNC
1484 * @tc.require:
1485 */
1486 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_003, TestSize.Level1)
1487 {
1488 CALL_TEST_DEBUG;
1489 auto listener = std::make_shared<MyGestureListener>();
1490 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1491 TouchGestureDetector detector(type, listener);
1492 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1493 ASSERT_NE(pointerEvent, nullptr);
1494 std::shared_ptr<InputEvent> inputEvent = InputEvent::Create();
1495 ASSERT_NE(inputEvent, nullptr);
1496 inputEvent->sourceType_ = PointerEvent::SOURCE_TYPE_TOUCHSCREEN;
1497 detector.gestureEnable_ = true;
1498 inputEvent->bitwise_ = 0x00000000;
1499 pointerEvent->SetPointerId(5);
1500 detector.gestureDisplayId_ = INT32_MAX;
1501 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN);
1502 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
1503 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_MOVE);
1504 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
1505 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UP);
1506 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
1507 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_AXIS_UPDATE);
1508 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
1509 }
1510
1511 /**
1512 * @tc.name: TouchGestureDetectorTest_HandleDownEvent_003
1513 * @tc.desc: Test HandleDownEvent
1514 * @tc.type: FUNC
1515 * @tc.require:
1516 */
1517 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleDownEvent_003, TestSize.Level1)
1518 {
1519 CALL_TEST_DEBUG;
1520 auto listener = std::make_shared<MyGestureListener>();
1521 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1522 TouchGestureDetector detector(type, listener);
1523 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1524 ASSERT_NE(pointerEvent, nullptr);
1525 detector.isRecognized_ = false;
1526 PointerEvent::PointerItem item1;
1527 item1.SetPointerId(1);
1528 PointerEvent::PointerItem item2;
1529 item2.SetPointerId(2);
1530 pointerEvent->pointers_.push_back(item1);
1531 pointerEvent->pointers_.push_back(item2);
1532 pointerEvent->SetPointerId(2);
1533 ASSERT_NO_FATAL_FAILURE(detector.HandleDownEvent(pointerEvent));
1534 detector.gestureType_ = TOUCH_GESTURE_TYPE_SWIPE;
1535 ASSERT_NO_FATAL_FAILURE(detector.HandleDownEvent(pointerEvent));
1536 detector.gestureType_ = TOUCH_GESTURE_TYPE_PINCH;
1537 ASSERT_NO_FATAL_FAILURE(detector.HandleDownEvent(pointerEvent));
1538 detector.gestureType_ = TOUCH_GESTURE_TYPE_NONE;
1539 ASSERT_NO_FATAL_FAILURE(detector.HandleDownEvent(pointerEvent));
1540 }
1541
1542 /**
1543 * @tc.name: TouchGestureDetectorTest_HandleMoveEvent_004
1544 * @tc.desc: Test HandleMoveEvent
1545 * @tc.type: FUNC
1546 * @tc.require:
1547 */
1548 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleMoveEvent_004, TestSize.Level1)
1549 {
1550 CALL_TEST_DEBUG;
1551 auto listener = std::make_shared<MyGestureListener>();
1552 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1553 TouchGestureDetector detector(type, listener);
1554 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1555 ASSERT_NE(pointerEvent, nullptr);
1556 detector.isRecognized_ = true;
1557 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
1558 detector.isRecognized_ = false;
1559 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
1560 }
1561
1562 /**
1563 * @tc.name: TouchGestureDetectorTest_HandlePinchMoveEvent_003
1564 * @tc.desc: Test HandlePinchMoveEvent
1565 * @tc.type: FUNC
1566 * @tc.require:
1567 */
1568 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandlePinchMoveEvent_003, TestSize.Level1)
1569 {
1570 CALL_TEST_DEBUG;
1571 auto listener = std::make_shared<MyGestureListener>();
1572 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1573 TouchGestureDetector detector(type, listener);
1574 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1575 ASSERT_NE(pointerEvent, nullptr);
1576 detector.downPoint_[1] = Point(1.0f, 2.0f);
1577 detector.downPoint_[2] = Point(3.0f, 4.0f);
1578 detector.downPoint_[3] = Point(5.0f, 6.0f);
1579 detector.downPoint_[4] = Point(7.0f, 8.0f);
1580 detector.lastDistance_[1] = 1.0;
1581 detector.lastDistance_[2] = 2.0;
1582 detector.lastDistance_[3] = 3.0;
1583 PointerEvent::PointerItem item1;
1584 item1.SetPointerId(1);
1585 PointerEvent::PointerItem item2;
1586 item2.SetPointerId(2);
1587 pointerEvent->pointers_.push_back(item1);
1588 pointerEvent->pointers_.push_back(item2);
1589 pointerEvent->SetPointerId(2);
1590 ASSERT_NO_FATAL_FAILURE(detector.HandlePinchMoveEvent(pointerEvent));
1591 }
1592
1593 /**
1594 * @tc.name: TouchGestureDetectorTest_IsPhysicalPointer_001
1595 * @tc.desc: Test IsPhysicalPointer
1596 * @tc.type: FUNC
1597 * @tc.require:
1598 */
1599 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_IsPhysicalPointer_001, TestSize.Level1)
1600 {
1601 CALL_TEST_DEBUG;
1602 auto listener = std::make_shared<MyGestureListener>();
1603 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1604 TouchGestureDetector detector(type, listener);
1605 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1606 ASSERT_NE(pointerEvent, nullptr);
1607 std::shared_ptr<InputEvent> inputEvent = InputEvent::Create();
1608 ASSERT_NE(inputEvent, nullptr);
1609 inputEvent->bitwise_ = 0x00000000;
1610 pointerEvent->SetPointerId(5);
1611 bool ret = detector.IsPhysicalPointer(pointerEvent);
1612 EXPECT_TRUE(ret);
1613 }
1614
1615 /**
1616 * @tc.name: TouchGestureDetectorTest_HandleUpEvent_003
1617 * @tc.desc: Test HandleUpEvent
1618 * @tc.type: FUNC
1619 * @tc.require:
1620 */
1621 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleUpEvent_003, TestSize.Level1)
1622 {
1623 CALL_TEST_DEBUG;
1624 auto listener = std::make_shared<MyGestureListener>();
1625 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1626 TouchGestureDetector detector(type, listener);
1627 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1628 ASSERT_NE(pointerEvent, nullptr);
1629 pointerEvent->pointerId_ = 1;
1630 detector.downPoint_[1] = Point(1.0f, 2.0f);
1631 detector.downPoint_[2] = Point(3.0f, 4.0f);
1632 detector.isRecognized_ = true;
1633 detector.lastTouchEvent_ = pointerEvent;
1634 ASSERT_NO_FATAL_FAILURE(detector.HandleUpEvent(pointerEvent));
1635 }
1636
1637 /**
1638 * @tc.name: TouchGestureDetectorTest_OnTouchEvent_04
1639 * @tc.desc: Test OnTouchEvent
1640 * @tc.type: FUNC
1641 * @tc.require:nhj
1642 */
1643 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_OnTouchEvent_04, TestSize.Level1)
1644 {
1645 CALL_TEST_DEBUG;
1646 auto listener = std::make_shared<MyGestureListener>();
1647 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1648 TouchGestureDetector detector(type, listener);
1649 std::shared_ptr<PointerEvent> nullEvent = nullptr;
1650 EXPECT_FALSE(detector.OnTouchEvent(nullEvent));
1651
1652 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1653 ASSERT_NE(pointerEvent, nullptr);
1654
1655 pointerEvent->sourceType_ = PointerEvent::SOURCE_TYPE_TOUCHSCREEN;
1656 detector.gestureEnable_ = true;
1657 detector.gestureDisplayId_ = INT32_MAX;
1658 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_CANCEL;
1659 EXPECT_TRUE(detector.WhetherDiscardTouchEvent(pointerEvent));
1660
1661 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_PULL_UP;
1662 EXPECT_FALSE(detector.OnTouchEvent(pointerEvent));
1663 }
1664
1665 /**
1666 * @tc.name: TouchGestureDetectorTest_HandleDownEvent_04
1667 * @tc.desc: Test HandleDownEvent
1668 * @tc.type: FUNC
1669 * @tc.require:
1670 */
1671 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleDownEvent_04, TestSize.Level1)
1672 {
1673 CALL_TEST_DEBUG;
1674 auto listener = std::make_shared<MyGestureListener>();
1675 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1676 TouchGestureDetector detector(type, listener);
1677 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1678 ASSERT_NE(pointerEvent, nullptr);
1679
1680 pointerEvent->pointerId_ = 1;
1681 detector.isRecognized_ = true;
1682 detector.haveGestureWinEmerged_ = true;
1683 ASSERT_NO_FATAL_FAILURE(detector.HandleDownEvent(pointerEvent));
1684 detector.lastTouchEvent_ = pointerEvent;
1685 ASSERT_NO_FATAL_FAILURE(detector.HandleDownEvent(pointerEvent));
1686 }
1687
1688 /**
1689 * @tc.name: TouchGestureDetectorTest_HandleMoveEvent_05
1690 * @tc.desc: Test HandleMoveEvent
1691 * @tc.type: FUNC
1692 * @tc.require:
1693 */
1694 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleMoveEvent_05, TestSize.Level1)
1695 {
1696 CALL_TEST_DEBUG;
1697 auto listener = std::make_shared<MyGestureListener>();
1698 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1699 TouchGestureDetector detector(type, listener);
1700 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1701 ASSERT_NE(pointerEvent, nullptr);
1702
1703 detector.isRecognized_ = true;
1704 detector.gestureTimer_= 2;
1705 detector.lastTouchEvent_ = pointerEvent;
1706 detector.listener_ = nullptr;
1707 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
1708 detector.isRecognized_ = true;
1709 detector.gestureTimer_= 2;
1710 detector.listener_ = listener;
1711 ASSERT_NO_FATAL_FAILURE(detector.HandleMoveEvent(pointerEvent));
1712 }
1713
1714 /**
1715 * @tc.name: TouchGestureDetectorTest_HandleSwipeMoveEvent_03
1716 * @tc.desc: Test HandleSwipeMoveEvent
1717 * @tc.type: FUNC
1718 * @tc.require:
1719 */
1720 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleSwipeMoveEvent_03, TestSize.Level1)
1721 {
1722 CALL_TEST_DEBUG;
1723 auto listener = std::make_shared<MyGestureListener>();
1724 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1725 TouchGestureDetector detector(type, listener);
1726 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1727 ASSERT_NE(pointerEvent, nullptr);
1728
1729 detector.downPoint_[1] = Point(1.0f, 2.0f);
1730 detector.downPoint_[2] = Point(3.0f, 4.0f, 150000);
1731 detector.downPoint_[3] = Point(5.0f, 6.0f, 200000);
1732 detector.isFingerReady_ = true;
1733
1734 auto state = detector.ClacFingerMoveDirection(pointerEvent);
1735 state = TouchGestureDetector::SlideState::DIRECTION_LEFT;
1736 ASSERT_NO_FATAL_FAILURE(detector.HandleSwipeMoveEvent(pointerEvent));
1737
1738 state = TouchGestureDetector::SlideState::DIRECTION_UNKNOW;
1739 GestureMode mode = detector.ChangeToGestureMode(state);
1740 EXPECT_EQ(mode, GestureMode::ACTION_UNKNOWN);
1741 detector.isRecognized_ = true;
1742 detector.gestureTimer_= -1;
1743 detector.lastTouchEvent_ = pointerEvent;
1744 EXPECT_FALSE(detector.NotifyGestureEvent(pointerEvent, mode));
1745 ASSERT_NO_FATAL_FAILURE(detector.HandleSwipeMoveEvent(pointerEvent));
1746 }
1747
1748 /**
1749 * @tc.name: TouchGestureDetectorTest_HandleSwipeMoveEvent_04
1750 * @tc.desc: Test HandleSwipeMoveEvent
1751 * @tc.type: FUNC
1752 * @tc.require:
1753 */
1754 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleSwipeMoveEvent_04, TestSize.Level1)
1755 {
1756 CALL_TEST_DEBUG;
1757 auto listener = std::make_shared<MyGestureListener>();
1758 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1759 TouchGestureDetector detector(type, listener);
1760 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1761 ASSERT_NE(pointerEvent, nullptr);
1762
1763 detector.downPoint_[1] = Point(1.0f, 2.0f);
1764 detector.downPoint_[2] = Point(3.0f, 4.0f, 150000);
1765 detector.downPoint_[3] = Point(5.0f, 6.0f, 200000);
1766 detector.isFingerReady_ = true;
1767
1768 auto state = detector.ClacFingerMoveDirection(pointerEvent);
1769 state = TouchGestureDetector::SlideState::DIRECTION_LEFT;
1770 detector.gestureTimer_= 2;
1771 ASSERT_NO_FATAL_FAILURE(detector.HandleSwipeMoveEvent(pointerEvent));
1772
1773 state = TouchGestureDetector::SlideState::DIRECTION_RIGHT;
1774 detector.gestureTimer_= -2;
1775 GestureMode mode = detector.ChangeToGestureMode(state);
1776 EXPECT_NE(mode, GestureMode::ACTION_UNKNOWN);
1777 ASSERT_NO_FATAL_FAILURE(detector.HandleSwipeMoveEvent(pointerEvent));
1778 }
1779
1780 /**
1781 * @tc.name: TouchGestureDetectorTest_HandlePinchMoveEvent_004
1782 * @tc.desc: Test HandlePinchMoveEvent
1783 * @tc.type: FUNC
1784 * @tc.require:
1785 */
1786 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandlePinchMoveEvent_004, TestSize.Level1)
1787 {
1788 CALL_TEST_DEBUG;
1789 auto listener = std::make_shared<MyGestureListener>();
1790 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1791 TouchGestureDetector detector(type, listener);
1792 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1793 std::unordered_set<TouchGestureDetector::SlideState> directions;
1794 double angle;
1795 angle = 20;
1796 auto direction1 = detector.GetSlidingDirection(angle);
1797 directions.insert(direction1);
1798 angle = 50;
1799 auto direction2 = detector.GetSlidingDirection(angle);
1800 directions.insert(direction2);
1801 EXPECT_EQ(directions.size(), 2);
1802 ASSERT_NE(pointerEvent, nullptr);
1803 detector.downPoint_[1] = Point(1.0f, 2.0f);
1804 detector.downPoint_[2] = Point(3.0f, 4.0f);
1805 detector.downPoint_[3] = Point(5.0f, 6.0f);
1806 detector.downPoint_[4] = Point(7.0f, 8.0f);
1807 detector.lastDistance_[1] = 1.0;
1808 detector.lastDistance_[2] = 2.0;
1809 detector.lastDistance_[3] = 3.0;
1810 ASSERT_NO_FATAL_FAILURE(detector.HandlePinchMoveEvent(pointerEvent));
1811 }
1812
1813 /**
1814 * @tc.name: TouchGestureDetectorTest_HandleUpEvent_004
1815 * @tc.desc: Test HandleUpEvent
1816 * @tc.type: FUNC
1817 * @tc.require:
1818 */
1819 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleUpEvent_004, TestSize.Level1)
1820 {
1821 CALL_TEST_DEBUG;
1822 auto listener = std::make_shared<MyGestureListener>();
1823 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1824 TouchGestureDetector detector(type, listener);
1825 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1826 ASSERT_NE(pointerEvent, nullptr);
1827 pointerEvent->pointerId_ = 1;
1828 detector.downPoint_[1] = Point(1.0f, 2.0f);
1829 detector.downPoint_[2] = Point(3.0f, 4.0f);
1830 detector.downPoint_[3] = Point(5.0f, 6.0f);
1831 detector.downPoint_[4] = Point(7.0f, 8.0f);
1832 detector.lastDistance_[1] = 1.0;
1833 detector.lastDistance_[2] = 2.0;
1834 detector.lastDistance_[3] = 3.0;
1835 EXPECT_FALSE(detector.lastDistance_.empty());
1836 detector.isRecognized_ = true;
1837 detector.lastTouchEvent_ = pointerEvent;
1838 PointerEvent::PointerItem item1;
1839 item1.SetPointerId(1);
1840 PointerEvent::PointerItem item2;
1841 item2.SetPointerId(2);
1842 pointerEvent->pointers_.push_back(item1);
1843 pointerEvent->pointers_.push_back(item2);
1844 pointerEvent->SetPointerId(2);
1845 ASSERT_NO_FATAL_FAILURE(detector.HandleUpEvent(pointerEvent));
1846 }
1847
1848 /**
1849 * @tc.name: TouchGestureDetectorTest_HandleUpEvent_005
1850 * @tc.desc: Test HandleUpEvent
1851 * @tc.type: FUNC
1852 * @tc.require:
1853 */
1854 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleUpEvent_005, TestSize.Level1)
1855 {
1856 CALL_TEST_DEBUG;
1857 auto listener = std::make_shared<MyGestureListener>();
1858 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1859 TouchGestureDetector detector(type, listener);
1860 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1861 ASSERT_NE(pointerEvent, nullptr);
1862 pointerEvent->pointerId_ = 1;
1863 detector.gestureTimer_= -1;
1864 detector.isRecognized_ = true;
1865 detector.lastTouchEvent_ = nullptr;
1866 detector.haveGestureWinEmerged_ = false;
1867 PointerEvent::PointerItem item1;
1868 item1.SetPointerId(1);
1869 PointerEvent::PointerItem item2;
1870 item2.SetPointerId(2);
1871 pointerEvent->pointers_.push_back(item1);
1872 pointerEvent->pointers_.push_back(item2);
1873 pointerEvent->SetPointerId(2);
1874 ASSERT_NO_FATAL_FAILURE(detector.HandleUpEvent(pointerEvent));
1875
1876 detector.isRecognized_ = true;
1877 detector.haveGestureWinEmerged_ = false;
1878 detector.lastTouchEvent_ = pointerEvent;
1879 ASSERT_NO_FATAL_FAILURE(detector.HandleUpEvent(pointerEvent));
1880 }
1881
1882 /**
1883 * @tc.name: TouchGestureDetectorTest_HandleUpEvent_006
1884 * @tc.desc: Test HandleUpEvent
1885 * @tc.type: FUNC
1886 * @tc.require:
1887 */
1888 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleUpEvent_006, TestSize.Level1)
1889 {
1890 CALL_TEST_DEBUG;
1891 auto listener = std::make_shared<MyGestureListener>();
1892 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1893 TouchGestureDetector detector(type, listener);
1894 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1895 ASSERT_NE(pointerEvent, nullptr);
1896 detector.gestureTimer_= -1;
1897 detector.isRecognized_ = false;
1898 detector.lastTouchEvent_ = pointerEvent;
1899 detector.haveGestureWinEmerged_ = false;
1900 PointerEvent::PointerItem item1;
1901 item1.SetPointerId(1);
1902 pointerEvent->pointers_.push_back(item1);
1903 pointerEvent->SetPointerId(2);
1904 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UP);
1905 ASSERT_NO_FATAL_FAILURE(detector.HandleUpEvent(pointerEvent));
1906 }
1907
1908 /**
1909 * @tc.name: TouchGestureDetectorTest_WhetherDiscardTouchEvent_02
1910 * @tc.desc: Test WhetherDiscardTouchEvent
1911 * @tc.type: FUNC
1912 * @tc.require:
1913 */
1914 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_WhetherDiscardTouchEvent_02, TestSize.Level1)
1915 {
1916 CALL_TEST_DEBUG;
1917 auto listener = std::make_shared<MyGestureListener>();
1918 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1919 TouchGestureDetector detector(type, listener);
1920 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1921 ASSERT_NE(pointerEvent, nullptr);
1922
1923 pointerEvent->sourceType_ = PointerEvent::SOURCE_TYPE_MOUSE;
1924 detector.gestureEnable_ = true;
1925 pointerEvent->bitwise_ = InputEvent::EVENT_FLAG_SIMULATE;
1926 pointerEvent->SetPointerId(0);
1927 pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN);
1928 detector.gestureDisplayId_ = INT32_MAX;
1929 pointerEvent->targetDisplayId_ = INT32_MAX;
1930 EXPECT_TRUE(detector.WhetherDiscardTouchEvent(pointerEvent));
1931 }
1932
1933 /**
1934 * @tc.name: TouchGestureDetectorTest_ClacFingerMoveDirection_03
1935 * @tc.desc: Test ClacFingerMoveDirection
1936 * @tc.type: FUNC
1937 * @tc.require:
1938 */
1939 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_ClacFingerMoveDirection_03, TestSize.Level1)
1940 {
1941 CALL_TEST_DEBUG;
1942 auto listener = std::make_shared<MyGestureListener>();
1943 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1944 TouchGestureDetector detector(type, listener);
1945 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1946 ASSERT_NE(pointerEvent, nullptr);
1947 size_t recognizedCount { 0 };
1948 pointerEvent->pointerAction_ = PointerEvent::POINTER_ACTION_MOVE;
1949 std::unordered_set<TouchGestureDetector::SlideState> directions;
1950 double angle;
1951 angle = 20;
1952 auto direction1 = detector.GetSlidingDirection(angle);
1953 directions.insert(direction1);
1954 angle = 50;
1955 auto direction2 = detector.GetSlidingDirection(angle);
1956 directions.insert(direction2);
1957 std::map<int32_t, Point> points;
1958 points[1] = Point(1.0f, 2.0f);
1959 points[2] = Point(3.0f, 4.0f);
1960 points[3] = Point(5.0f, 6.0f);
1961 detector.downPoint_[1] = Point(1.0f, 2.0f);
1962 detector.downPoint_[2] = Point(3.0f, 4.0f);
1963 detector.downPoint_[3] = Point(5.0f, 6.0f);
1964 int32_t count = static_cast<int32_t>(points.size());
1965 EXPECT_TRUE(count > recognizedCount);
1966 ASSERT_NO_FATAL_FAILURE(detector.ClacFingerMoveDirection(pointerEvent));
1967 }
1968
1969 /**
1970 * @tc.name: TouchGestureDetectorTest_SortPoints_01
1971 * @tc.desc: Test SortPoints
1972 * @tc.type: FUNC
1973 * @tc.require:
1974 */
1975 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_SortPoints_01, TestSize.Level1)
1976 {
1977 CALL_TEST_DEBUG;
1978 auto listener = std::make_shared<MyGestureListener>();
1979 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
1980 TouchGestureDetector detector(type, listener);
1981 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
1982 ASSERT_NE(pointerEvent, nullptr);
1983
1984 std::map<int32_t, Point> points;
1985 points[1] = Point(1.0f, 2.0f);
1986 points[2] = Point(3.0f, 4.0f);
1987 points[3] = Point(5.0f, 6.0f);
1988 int32_t count = static_cast<int32_t>(points.size());
1989 EXPECT_TRUE(count > 0);
1990 EXPECT_FALSE(points.empty());
1991 auto ret = detector.SortPoints(points);
1992 EXPECT_FALSE(ret.empty());
1993 }
1994
1995 /**
1996 * @tc.name: TouchGestureDetectorTest_SortPoints_02
1997 * @tc.desc: Test SortPoints
1998 * @tc.type: FUNC
1999 * @tc.require:
2000 */
2001 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_SortPoints_02, TestSize.Level1)
2002 {
2003 CALL_TEST_DEBUG;
2004 auto listener = std::make_shared<MyGestureListener>();
2005 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
2006 TouchGestureDetector detector(type, listener);
2007 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
2008 ASSERT_NE(pointerEvent, nullptr);
2009 std::map<int32_t, Point> points;
2010 int32_t count = static_cast<int32_t>(points.size());
2011 EXPECT_EQ(count, 0);
2012 EXPECT_TRUE(points.empty());
2013 auto ret = detector.SortPoints(points);
2014 EXPECT_TRUE(ret.empty());
2015 }
2016
2017 /**
2018 * @tc.name: TouchGestureDetectorTest_CalcClusterCenter_03
2019 * @tc.desc: Test CalcClusterCenter
2020 * @tc.type: FUNC
2021 * @tc.require:
2022 */
2023 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcClusterCenter_03, TestSize.Level1)
2024 {
2025 CALL_TEST_DEBUG;
2026 auto listener = std::make_shared<MyGestureListener>();
2027 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
2028 TouchGestureDetector detector(type, listener);
2029 std::map<int32_t, Point> points;
2030 EXPECT_TRUE(points.empty());
2031 Point result = detector.CalcClusterCenter(points);
2032 EXPECT_EQ(result.x, 0.0f);
2033 EXPECT_EQ(result.y, 0.0f);
2034 }
2035
2036 /**
2037 * @tc.name: TouchGestureDetectorTest_CalcClusterCenter_04
2038 * @tc.desc: Test CalcClusterCenter
2039 * @tc.type: FUNC
2040 * @tc.require:
2041 */
2042 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcClusterCenter_04, TestSize.Level1)
2043 {
2044 CALL_TEST_DEBUG;
2045 std::map<int32_t, Point> points{
2046 {0, Point(2.0f, 3.0f)}, {1, Point(4.0f, 5.0f)}, {2, Point(6.0f, 7.0f)}
2047 };
2048 auto listener = std::make_shared<MyGestureListener>();
2049 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
2050 TouchGestureDetector detector(type, listener);
2051 Point result = detector.CalcClusterCenter(points);
2052 // 平均值:(2+4+6)/3=4, (3+5+7)/3=5
2053 EXPECT_EQ(result.x, 4.0f);
2054 EXPECT_EQ(result.y, 5.0f);
2055 }
2056
2057 /**
2058 * @tc.name: TouchGestureDetectorTest_CalcGravityCenter_03
2059 * @tc.desc: Test CalcGravityCenter
2060 * @tc.type: FUNC
2061 * @tc.require:
2062 */
2063 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcGravityCenter_03, TestSize.Level1)
2064 {
2065 CALL_TEST_DEBUG;
2066 auto listener = std::make_shared<MyGestureListener>();
2067 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
2068 TouchGestureDetector detector(type, listener);
2069 std::map<int32_t, Point> points;
2070 int32_t count = static_cast<int32_t>(points.size());
2071 EXPECT_EQ(count, 0);
2072 EXPECT_TRUE(points.empty());
2073 ASSERT_NO_FATAL_FAILURE(detector.CalcGravityCenter(points));
2074 }
2075
2076 /**
2077 * @tc.name: TouchGestureDetectorTest_CalcMultiFingerMovement_03
2078 * @tc.desc: Test CalcMultiFingerMovement
2079 * @tc.type: FUNC
2080 * @tc.require:
2081 */
2082 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcMultiFingerMovement_03, TestSize.Level1)
2083 {
2084 CALL_TEST_DEBUG;
2085 auto listener = std::make_shared<MyGestureListener>();
2086 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
2087 TouchGestureDetector detector(type, listener);
2088 std::map<int32_t, Point> points;
2089 points[1] = Point(1.0f, 2.0f);
2090 points[2] = Point(3.0f, 4.0f);
2091 points[3] = Point(5.0f, 6.0f);
2092 detector.movePoint_ = {}; // 设置空的 movePoint_
2093 int32_t result = detector.CalcMultiFingerMovement(points);
2094 EXPECT_EQ(result, 0);
2095 }
2096
2097 /**
2098 * @tc.name: TouchGestureDetectorTest_CalcMultiFingerMovement_04
2099 * @tc.desc: Test CalcMultiFingerMovement
2100 * @tc.type: FUNC
2101 * @tc.require:
2102 */
2103 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcMultiFingerMovement_04, TestSize.Level1)
2104 {
2105 CALL_TEST_DEBUG;
2106 auto listener = std::make_shared<MyGestureListener>();
2107 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
2108 TouchGestureDetector detector(type, listener);
2109 std::map<int32_t, Point> points;
2110 points[1] = Point(1.0f, 2.0f);
2111 detector.movePoint_[1] = Point(1.0f, 2.0f);
2112 detector.movePoint_[2] = Point(3.0f, 4.0f);
2113 int32_t result = detector.CalcMultiFingerMovement(points);
2114 EXPECT_EQ(result, 0);
2115 }
2116
2117 /**
2118 * @tc.name: TouchGestureDetectorTest_CalcMultiFingerMovement_05
2119 * @tc.desc: Test CalcMultiFingerMovement
2120 * @tc.type: FUNC
2121 * @tc.require:
2122 */
2123 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CalcMultiFingerMovement_05, TestSize.Level1)
2124 {
2125 CALL_TEST_DEBUG;
2126 auto listener = std::make_shared<MyGestureListener>();
2127 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
2128 TouchGestureDetector detector(type, listener);
2129 std::map<int32_t, Point> points;
2130 points[1] = Point(MAXIMUM_SINGLE_SLIDE_DISTANCE + 0.0f, 0.0f);
2131 points[2] = Point(1.0f, 2.0f + MAXIMUM_SINGLE_SLIDE_DISTANCE);
2132 detector.movePoint_[1] = Point(0.0f, 0.0f);
2133 detector.movePoint_[2] = Point(1.0f, 2.0f);
2134 int32_t result = detector.CalcMultiFingerMovement(points);
2135 EXPECT_EQ(result, 2);
2136 }
2137
2138 /**
2139 * @tc.name: TouchGestureDetectorTest_AntiJitter_02
2140 * @tc.desc: Test AntiJitter
2141 * @tc.type: FUNC
2142 * @tc.require:
2143 */
2144 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_AntiJitter_02, TestSize.Level1)
2145 {
2146 CALL_TEST_DEBUG;
2147 auto listener = std::make_shared<MyGestureListener>();
2148 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
2149 TouchGestureDetector detector(type, listener);
2150 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
2151 ASSERT_NE(pointerEvent, nullptr);
2152
2153 GestureMode mode;
2154 mode = GestureMode::ACTION_PINCH_CLOSED;
2155 detector.continuousCloseCount_ = 0;
2156 EXPECT_FALSE(detector.AntiJitter(pointerEvent, mode));
2157 mode = GestureMode::ACTION_PINCH_OPENED;
2158 detector.continuousOpenCount_ = 0;
2159 EXPECT_FALSE(detector.AntiJitter(pointerEvent, mode));
2160
2161 mode = GestureMode::ACTION_GESTURE_END;
2162 EXPECT_FALSE(detector.AntiJitter(pointerEvent, mode));
2163 }
2164
2165 /**
2166 * @tc.name: TouchGestureDetectorTest_HandleGestureWindowEmerged_001
2167 * @tc.desc: Test HandleUpEvent
2168 * @tc.type: FUNC
2169 * @tc.require:
2170 */
2171 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_HandleGestureWindowEmerged_001, TestSize.Level1)
2172 {
2173 CALL_TEST_DEBUG;
2174 auto listener = std::make_shared<MyGestureListener>();
2175 TouchGestureType type = TOUCH_GESTURE_TYPE_PINCH;
2176 TouchGestureDetector detector(type, listener);
2177 std::shared_ptr<PointerEvent> lastTouchEvent = PointerEvent::Create();
2178 ASSERT_NE(lastTouchEvent, nullptr);
2179 int32_t windowId = 1;
2180 detector.isRecognized_ = true;
2181 detector.lastTouchEvent_ = lastTouchEvent;
2182 detector.haveGestureWinEmerged_ = false;
2183 ASSERT_NO_FATAL_FAILURE(detector.HandleGestureWindowEmerged(windowId, lastTouchEvent));
2184 }
2185
2186 /**
2187 * @tc.name: TouchGestureDetectorTest_CheckGestureTrend_001
2188 * @tc.desc: Test CheckGestureTrend
2189 * @tc.type: FUNC
2190 * @tc.require:
2191 */
2192 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_CheckGestureTrend_001, TestSize.Level1)
2193 {
2194 CALL_TEST_DEBUG;
2195 auto listener = std::make_shared<MyGestureListener>();
2196 TouchGestureType type = TOUCH_GESTURE_TYPE_PINCH;
2197 TouchGestureDetector detector(type, listener);
2198 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
2199 ASSERT_NE(pointerEvent, nullptr);
2200
2201 detector.downPoint_[1] = Point(1.0f, 2.0f);
2202 detector.downPoint_[2] = Point(3.0f, 4.0f);
2203 detector.downPoint_[3] = Point(5.0f, 6.0f);
2204 PointerEvent::PointerItem item1;
2205 item1.SetPointerId(1);
2206 PointerEvent::PointerItem item2;
2207 item2.SetPointerId(2);
2208 pointerEvent->pointers_.push_back(item1);
2209 pointerEvent->pointers_.push_back(item2);
2210 pointerEvent->SetPointerId(2);
2211 ASSERT_NO_FATAL_FAILURE(detector.CheckGestureTrend(pointerEvent));
2212 }
2213
2214 /**
2215 * @tc.name: TouchGestureDetectorTest_GetAngle_01
2216 * @tc.desc: Test TouchGestureDetector::GetAngle
2217 * @tc.type: FUNC
2218 * @tc.require:
2219 */
2220 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetAngle_01, TestSize.Level1)
2221 {
2222 CALL_TEST_DEBUG;
2223 float startX = 0.0f;
2224 float startY = 0.0f;
2225 float endX = 0.0f;
2226 float endY = 1.0f;
2227 constexpr double expectedAngle = 90.0;
2228 constexpr double precision = 0.001;
2229
2230 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
2231 double actualAngle = detector.GetAngle(startX, startY, endX, endY);
2232 EXPECT_NEAR(expectedAngle, actualAngle, precision);
2233 }
2234
2235 /**
2236 * @tc.name: TouchGestureDetectorTest_GetAngle_02
2237 * @tc.desc: Test TouchGestureDetector::GetAngle
2238 * @tc.type: FUNC
2239 * @tc.require:
2240 */
2241 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetAngle_02, TestSize.Level1)
2242 {
2243 CALL_TEST_DEBUG;
2244 float startX = 0.0f;
2245 float startY = 0.0f;
2246 float endX = 1.0f;
2247 float endY = 1.0f;
2248 constexpr double expectedAngle = 45.0;
2249 constexpr double precision = 0.001;
2250
2251 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
2252 double actualAngle = detector.GetAngle(startX, startY, endX, endY);
2253 EXPECT_NEAR(expectedAngle, actualAngle, precision);
2254 }
2255
2256 /**
2257 * @tc.name: TouchGestureDetectorTest_GetAngle_03
2258 * @tc.desc: Test TouchGestureDetector::GetAngle
2259 * @tc.type: FUNC
2260 * @tc.require:
2261 */
2262 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetAngle_03, TestSize.Level1)
2263 {
2264 CALL_TEST_DEBUG;
2265 float startX = 0.0f;
2266 float startY = 0.0f;
2267 float endX = -1.0f;
2268 float endY = 1.0f;
2269 constexpr double expectedAngle = 135.0;
2270 constexpr double precision = 0.001;
2271
2272 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
2273 double actualAngle = detector.GetAngle(startX, startY, endX, endY);
2274 EXPECT_NEAR(expectedAngle, actualAngle, precision);
2275 }
2276
2277 /**
2278 * @tc.name: TouchGestureDetectorTest_GetAngle_04
2279 * @tc.desc: Test TouchGestureDetector::GetAngle
2280 * @tc.type: FUNC
2281 * @tc.require:
2282 */
2283 HWTEST_F(TouchGestureDetectorTest, TouchGestureDetectorTest_GetAngle_04, TestSize.Level1)
2284 {
2285 CALL_TEST_DEBUG;
2286 float startX = 0.0f;
2287 float startY = 0.0f;
2288 float endX = -1.0f;
2289 float endY = -1.0f;
2290 constexpr double expectedAngle = -135.0;
2291 constexpr double precision = 0.001;
2292
2293 TouchGestureDetector detector(TOUCH_GESTURE_TYPE_SWIPE, nullptr);
2294 double actualAngle = detector.GetAngle(startX, startY, endX, endY);
2295 EXPECT_NEAR(expectedAngle, actualAngle, precision);
2296 }
2297
2298 /**
2299 * @tc.name: NotifyGestureEventTest1
2300 * @tc.desc: Test NotifyGestureEvent
2301 * @tc.type: FUNC
2302 * @tc.require:
2303 */
2304 HWTEST_F(TouchGestureDetectorTest, NotifyGestureEventTest1, TestSize.Level1)
2305 {
2306 CALL_TEST_DEBUG;
2307 auto listener = std::make_shared<MyGestureListener>();
2308 TouchGestureType type = TOUCH_GESTURE_TYPE_SWIPE;
2309 TouchGestureDetector detector(type, listener);
2310 std::shared_ptr<PointerEvent> pointerEvent = PointerEvent::Create();
2311 ASSERT_NE(pointerEvent, nullptr);
2312
2313 GestureMode mode = GestureMode::ACTION_UNKNOWN;
2314 ASSERT_NO_FATAL_FAILURE(detector.NotifyGestureEvent(pointerEvent, mode));
2315 }
2316 } // namespace MMI
2317 } // namespace OHOS