• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "gtest/gtest.h"
16 #include "test/unittest/core/gestures/gestures_common_test_ng.h"
17 #include "ui/base/ace_type.h"
18 
19 using namespace testing;
20 using namespace testing::ext;
21 
22 namespace OHOS::Ace::NG {
23 class RecognizerTestNgIssue : public GesturesCommonTestNg {
24 public:
25     static void SetUpTestSuite();
26     static void TearDownTestSuite();
27 };
28 
SetUpTestSuite()29 void RecognizerTestNgIssue::SetUpTestSuite()
30 {
31     MockPipelineContext::SetUp();
32 }
33 
TearDownTestSuite()34 void RecognizerTestNgIssue::TearDownTestSuite()
35 {
36     MockPipelineContext::TearDown();
37 }
38 
39 /**
40  * @tc.name: LongPressRecognizerIssue001
41  * @tc.desc: Test LongPressRecognizer function: OnAccepted OnRejected
42  * @tc.type: FUNC
43  */
44 HWTEST_F(RecognizerTestNgIssue, LongPressRecognizerIssue001, TestSize.Level1)
45 {
46     /**
47      * @tc.steps: step1. create LongPressRecognizer.
48      */
49     RefPtr<LongPressRecognizer> longPressRecognizer =
50         AceType::MakeRefPtr<LongPressRecognizer>(LONG_PRESS_DURATION, FINGER_NUMBER, false);
51 
52     /**
53      * @tc.steps: step2. call GetLongPressActionFunc function and compare result.
54      * @tc.steps: case1: normal case
55      * @tc.expected: step2. result equals.
56      */
57     TouchEvent downEvent;
58     downEvent.SetId(0).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f).SetSourceType(SourceType::MOUSE);
59     longPressRecognizer->HandleTouchDownEvent(downEvent);
60     int64_t time = 0;
__anon2fa8f8640102(GestureEvent& info) 61     auto onAction = [&time](GestureEvent& info) { time = info.GetTimeStamp().time_since_epoch().count(); };
62     longPressRecognizer->SetOnAction(onAction);
63     longPressRecognizer->OnAccepted();
64     EXPECT_NE(time, 0);
65 }
66 
67 /**
68  * @tc.name: LongPressRecognizerIssue002
69  * @tc.desc: Test LongPressRecognizer function: OnAccepted OnRejected
70  * @tc.type: FUNC
71  */
72 HWTEST_F(RecognizerTestNgIssue, LongPressRecognizerIssue002, TestSize.Level1)
73 {
74     /**
75      * @tc.steps: step1. create LongPressRecognizer.
76      */
77     RefPtr<LongPressRecognizer> longPressRecognizer =
78         AceType::MakeRefPtr<LongPressRecognizer>(LONG_PRESS_DURATION, COUNT, false);
79 
80     /**
81      * @tc.steps: step2. call GetLongPressActionFunc function and compare result.
82      * @tc.steps: case1: normal case
83      * @tc.expected: step2. result equals.
84      */
85     TouchEvent downEvent;
86     downEvent.SetId(0).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f).SetSourceType(SourceType::TOUCH);
87     longPressRecognizer->HandleTouchDownEvent(downEvent);
88     TouchEvent downFingerOneEvent;
89     downFingerOneEvent.SetId(1).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f).SetSourceType(SourceType::TOUCH);
90     longPressRecognizer->touchPoints_[1] = downFingerOneEvent;
91     TouchEvent moveEvent;
92     std::chrono::nanoseconds nanoseconds(GetSysTimestamp());
93     moveEvent.SetId(0)
94         .SetType(TouchType::MOVE)
95         .SetX(100.0f)
96         .SetY(100.0f)
97         .SetSourceType(SourceType::TOUCH)
98         .SetTime(TimeStamp(nanoseconds));
99     longPressRecognizer->HandleTouchMoveEvent(moveEvent);
100     int64_t touchTime = 0;
101     int64_t mouseTime = 0;
__anon2fa8f8640202(GestureEvent& info) 102     auto onAction = [&touchTime, &mouseTime](GestureEvent& info) {
103         if (info.GetSourceDevice() == SourceType::MOUSE) {
104             mouseTime = info.GetTimeStamp().time_since_epoch().count();
105         } else {
106             touchTime = info.GetTimeStamp().time_since_epoch().count();
107         }
108     };
109     longPressRecognizer->SetOnAction(onAction);
110     longPressRecognizer->OnAccepted();
111     longPressRecognizer->ResetStatus();
112     downEvent.SetId(0).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f).SetSourceType(SourceType::MOUSE);
113     longPressRecognizer->HandleTouchDownEvent(downEvent);
114     longPressRecognizer->OnAccepted();
115     EXPECT_NE(touchTime, mouseTime);
116 }
117 
118 /**
119  * @tc.name: LongPressRecognizerIssue003
120  * @tc.desc: Test LongPressRecognizer callback info
121  * @tc.type: FUNC
122  */
123 HWTEST_F(RecognizerTestNgIssue, LongPressRecognizerIssue003, TestSize.Level1)
124 {
125     /**
126      * @tc.steps: step1. create LongPressRecognizer and set onAction.
127      */
128     RefPtr<LongPressRecognizer> longPressRecognizer =
129         AceType::MakeRefPtr<LongPressRecognizer>(LONG_PRESS_DURATION, 1, false);
130     GestureEvent eventInfo;
__anon2fa8f8640302(GestureEvent& info) 131     auto onActionStart = [&eventInfo](GestureEvent& info) { eventInfo = info; };
132     longPressRecognizer->SetOnAction(onActionStart);
133 
134     /**
135      * @tc.steps: step2. DispatchTouchEvent and compare callback info.
136      * @tc.expected: step2. result equals.
137      */
138     TouchEvent downEvent;
139     downEvent.SetId(0)
140         .SetType(TouchType::DOWN)
141         .SetX(100.0f)
142         .SetY(100.0f)
143         .SetSourceType(SourceType::TOUCH)
144         .SetDeviceId(2);
145     longPressRecognizer->HandleEvent(downEvent);
146     TouchEvent downFingerOneEvent;
147     downFingerOneEvent.SetId(1)
148         .SetType(TouchType::DOWN)
149         .SetX(100.0f)
150         .SetY(100.0f)
151         .SetSourceType(SourceType::TOUCH)
152         .SetDeviceId(2);
153     longPressRecognizer->touchPoints_[1] = downFingerOneEvent;
154     TouchEvent moveEvent;
155     auto moveTime = GetSysTimestamp();
156     std::chrono::nanoseconds nanoseconds(moveTime);
157     moveEvent.SetId(0)
158         .SetType(TouchType::MOVE)
159         .SetX(100.0f)
160         .SetY(100.0f)
161         .SetScreenX(200.0f)
162         .SetScreenY(200.0f)
163         .SetSourceType(SourceType::TOUCH)
164         .SetSourceTool(SourceTool::FINGER)
165         .SetTime(TimeStamp(nanoseconds))
166         .SetForce(100.0f)
167         .SetTiltX(10.0f)
168         .SetTiltY(10.0f)
169         .SetTargetDisplayId(2);
170     longPressRecognizer->HandleEvent(moveEvent);
171     /**
172      * @tc.steps: No need check downFingers for fingerList.
173      */
174     auto context = PipelineContext::GetCurrentContext();
175     ASSERT_NE(context, nullptr);
176     context->eventManager_ = nullptr;
177     longPressRecognizer->OnAccepted();
178     EXPECT_EQ(eventInfo.GetTimeStamp().time_since_epoch().count(), moveTime);
179     EXPECT_EQ(eventInfo.GetRepeat(), false);
180     EXPECT_EQ(eventInfo.GetFingerList().size(), 2);
181     EXPECT_EQ(eventInfo.GetSourceDevice(), SourceType::TOUCH);
182     EXPECT_EQ(eventInfo.GetDeviceId(), 2);
183     EXPECT_EQ(eventInfo.GetGlobalPoint().GetX(), 100.0f);
184     EXPECT_EQ(eventInfo.GetGlobalPoint().GetY(), 100.0f);
185     EXPECT_EQ(eventInfo.GetScreenLocation().GetX(), 200.0f);
186     EXPECT_EQ(eventInfo.GetScreenLocation().GetY(), 200.0f);
187     EXPECT_EQ(eventInfo.GetGlobalLocation().GetX(), 100.0f);
188     EXPECT_EQ(eventInfo.GetGlobalLocation().GetY(), 100.0f);
189     EXPECT_EQ(eventInfo.GetLocalLocation().GetX(), 100.0f);
190     EXPECT_EQ(eventInfo.GetLocalLocation().GetY(), 100.0f);
191     EXPECT_EQ(eventInfo.GetForce(), 100.0f);
192     EXPECT_EQ(eventInfo.GetTiltX(), 10.0f);
193     EXPECT_EQ(eventInfo.GetTiltY(), 10.0f);
194     EXPECT_EQ(eventInfo.GetSourceTool(), SourceTool::FINGER);
195     EXPECT_EQ(eventInfo.GetInputEventType(), InputEventType::TOUCH_SCREEN);
196 }
197 
198 /**
199  * @tc.name: PanRecognizerIssue001
200  * @tc.desc: Test PanRecognizer: Test the finger information of the current recognizer in the case of setting a single
201  *           finger by pressing multiple fingers and lifting them.
202  * @tc.type: FUNC
203  */
204 HWTEST_F(RecognizerTestNgIssue, PanRecognizerIssue001, TestSize.Level1)
205 {
206     /**
207      * @tc.steps: step1. create PanRecognizer.
208      */
209     RefPtr<PanGestureOption> panGestureOption = AceType::MakeRefPtr<PanGestureOption>();
210     panGestureOption->SetFingers(1);
211     PanDirection panDirection;
212     panDirection.type = PanDirection::ALL;
213     panGestureOption->SetDirection(panDirection);
214     panGestureOption->SetDistance(10.0f);
215     RefPtr<PanRecognizer> panRecognizer = AceType::MakeRefPtr<PanRecognizer>(panGestureOption);
216     /**
217      * @tc.steps: step2. DispatchTouchEvent with two different fingers and dispatch two up events.
218      * @tc.expected: step2. fingersId_ empty.
219      */
220     TouchEvent zeroDownEvent;
221     zeroDownEvent.SetId(0).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f);
222     TouchEvent oneDownEvent;
223     oneDownEvent.SetId(1).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f);
224     panRecognizer->HandleEvent(zeroDownEvent);
225     panRecognizer->HandleEvent(oneDownEvent);
226     TouchEvent zeroUpEvent;
227     zeroUpEvent.SetId(0).SetType(TouchType::UP).SetX(100.0f).SetY(100.0f);
228     TouchEvent oneUpEvent;
229     oneUpEvent.SetId(1).SetType(TouchType::UP).SetX(100.0f).SetY(100.0f);
230     panRecognizer->HandleEvent(zeroUpEvent);
231     panRecognizer->HandleEvent(oneUpEvent);
232     EXPECT_TRUE(panRecognizer->fingersId_.empty());
233 }
234 
235 /**
236  * @tc.name: RotationRecognizerIssue001
237  * @tc.desc: Test the rotating gesture by pressing two fingers, and when the gesture fails, lift finger number one and
238  *           finger number one is cleared from activeFingers_ correctly.
239  * @tc.type: FUNC
240  */
241 HWTEST_F(RecognizerTestNgIssue, RotationRecognizerIssue001, TestSize.Level1)
242 {
243     /**
244      * @tc.steps: step1. create RotationRecognizer.
245      */
246     auto rotationRecognizer = AceType::MakeRefPtr<RotationRecognizer>(2, ROTATION_GESTURE_ANGLE);
247     /**
248      * @tc.steps: step2. DispatchTouchEvent with two different fingers and dispatch two up events.
249      * @tc.expected: step2. fingersId_ empty.
250      */
251     TouchEvent zeroDownEvent;
252     zeroDownEvent.SetId(0).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f);
253     TouchEvent oneDownEvent;
254     oneDownEvent.SetId(1).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f);
255     rotationRecognizer->HandleEvent(zeroDownEvent);
256     rotationRecognizer->HandleEvent(oneDownEvent);
257     TouchEvent oneUpEvent;
258     oneUpEvent.SetId(1).SetType(TouchType::UP).SetX(100.0f).SetY(100.0f);
259     rotationRecognizer->HandleEvent(oneUpEvent);
260     EXPECT_EQ(std::find(rotationRecognizer->activeFingers_.begin(), rotationRecognizer->activeFingers_.end(), 1),
261         rotationRecognizer->activeFingers_.end());
262     EXPECT_EQ(rotationRecognizer->refereeState_, RefereeState::FAIL);
263 }
264 
265 /**
266  * @tc.name: PinchRecognizerIssue001
267  * @tc.desc: Test the pinch gesture by pressing two fingers, and when the gesture fails, lift finger number one and
268  *           finger number one is cleared from activeFingers_ correctly.
269  * @tc.type: FUNC
270  */
271 HWTEST_F(RecognizerTestNgIssue, PinchRecognizerIssue001, TestSize.Level1)
272 {
273     /**
274      * @tc.steps: step1. create PinchRecognizer.
275      */
276     auto pinchRecognizer = AceType::MakeRefPtr<PinchRecognizer>(2, PINCH_GESTURE_DISTANCE);
277     /**
278      * @tc.steps: step2. DispatchTouchEvent with two different fingers and dispatch two up events.
279      * @tc.expected: step2. fingersId_ empty.
280      */
281     TouchEvent zeroDownEvent;
282     zeroDownEvent.SetId(0).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f);
283     TouchEvent oneDownEvent;
284     oneDownEvent.SetId(1).SetType(TouchType::DOWN).SetX(100.0f).SetY(100.0f);
285     pinchRecognizer->HandleEvent(zeroDownEvent);
286     pinchRecognizer->HandleEvent(oneDownEvent);
287     TouchEvent oneUpEvent;
288     oneUpEvent.SetId(1).SetType(TouchType::UP).SetX(100.0f).SetY(100.0f);
289     pinchRecognizer->HandleEvent(oneUpEvent);
290     EXPECT_EQ(std::find(pinchRecognizer->activeFingers_.begin(), pinchRecognizer->activeFingers_.end(), 1),
291         pinchRecognizer->activeFingers_.end());
292     EXPECT_EQ(pinchRecognizer->refereeState_, RefereeState::FAIL);
293 }
294 
295 /**
296  * @tc.name: TargetDisplayId001
297  * @tc.desc: Test SetTargetDisplayId GetTargetDisplayId
298  * @tc.type: FUNC
299  */
300 HWTEST_F(RecognizerTestNgIssue, TargetDisplayId001, TestSize.Level1)
301 {
302     RefPtr<LongPressRecognizer> longPressRecognizer =
303         AceType::MakeRefPtr<LongPressRecognizer>(LONG_PRESS_DURATION, 1, false);
304     GestureEvent eventInfo;
__anon2fa8f8640402(GestureEvent& info) 305     auto onActionStart = [&eventInfo](GestureEvent& info) { eventInfo = info; };
306     longPressRecognizer->SetOnAction(onActionStart);
307 
308     TouchEvent downEvent;
309     downEvent.SetId(0)
310         .SetType(TouchType::DOWN)
311         .SetX(100.0f)
312         .SetY(100.0f)
313         .SetSourceType(SourceType::TOUCH)
314         .SetDeviceId(2);
315     longPressRecognizer->HandleEvent(downEvent);
316     TouchEvent downFingerOneEvent;
317     downFingerOneEvent.SetId(1)
318         .SetType(TouchType::DOWN)
319         .SetX(100.0f)
320         .SetY(100.0f)
321         .SetSourceType(SourceType::TOUCH)
322         .SetDeviceId(2);
323     longPressRecognizer->touchPoints_[1] = downFingerOneEvent;
324     TouchEvent moveEvent;
325     auto moveTime = GetSysTimestamp();
326     std::chrono::nanoseconds nanoseconds(moveTime);
327     moveEvent.SetId(0)
328         .SetType(TouchType::MOVE)
329         .SetX(100.0f)
330         .SetY(100.0f)
331         .SetScreenX(200.0f)
332         .SetScreenY(200.0f)
333         .SetSourceType(SourceType::TOUCH)
334         .SetSourceTool(SourceTool::FINGER)
335         .SetTime(TimeStamp(nanoseconds))
336         .SetForce(100.0f)
337         .SetTiltX(10.0f)
338         .SetTiltY(10.0f)
339         .SetTargetDisplayId(2);
340     longPressRecognizer->HandleEvent(moveEvent);
341     longPressRecognizer->OnAccepted();
342     EXPECT_EQ(eventInfo.GetTargetDisplayId(), 2);
343 }
344 
345 /**
346  * @tc.name: ClickRecognizerIssue001
347  * @tc.desc: Test ClickRecognizer callback info
348  * @tc.type: FUNC
349  */
350 HWTEST_F(RecognizerTestNgIssue, ClickRecognizerIssue001, TestSize.Level1)
351 {
352     /**
353      * @tc.steps: step1. create LongPressRecognizer and set onAction.
354      */
355     RefPtr<ClickRecognizer> clickRecognizer =
356         AceType::MakeRefPtr<ClickRecognizer>(SINGLE_FINGER_NUMBER, TAPPED_COUNT);
357     GestureEvent eventInfo;
__anon2fa8f8640502(GestureEvent& info) 358     auto onActionStart = [&eventInfo](GestureEvent& info) {
359         eventInfo = info; };
360     clickRecognizer->SetOnAction(onActionStart);
361 
362     /**
363      * @tc.steps: step2. DispatchTouchEvent and compare callback info.
364      * @tc.expected: step2. result equals.
365      */
366     TouchEvent downEvent;
367     downEvent.SetId(0)
368         .SetType(TouchType::DOWN)
369         .SetX(100.0f)
370         .SetY(100.0f)
371         .SetSourceType(SourceType::TOUCH)
372         .SetDeviceId(2);
373     clickRecognizer->HandleEvent(downEvent);
374     TouchEvent downFingerOneEvent;
375     downFingerOneEvent.SetId(1)
376         .SetType(TouchType::DOWN)
377         .SetX(120.0f)
378         .SetY(120.0f)
379         .SetSourceType(SourceType::TOUCH)
380         .SetDeviceId(2);
381     clickRecognizer->touchPoints_[1] = downFingerOneEvent;
382     TouchEvent upEvent;
383     auto upTime = GetSysTimestamp();
384     std::chrono::nanoseconds nanoseconds(upTime);
385     upEvent.SetId(0)
386         .SetType(TouchType::UP)
387         .SetX(100.0f)
388         .SetY(100.0f)
389         .SetScreenX(200.0f)
390         .SetScreenY(200.0f)
391         .SetGlobalDisplayX(300)
392         .SetGlobalDisplayY(300)
393         .SetSourceType(SourceType::TOUCH)
394         .SetSourceTool(SourceTool::FINGER)
395         .SetTime(TimeStamp(nanoseconds))
396         .SetForce(100.0f)
397         .SetTiltX(10.0f)
398         .SetTiltY(10.0f)
399         .SetTargetDisplayId(2);
400     clickRecognizer->HandleEvent(upEvent);
401     TouchEvent upFingerOneEvent;
402     auto upFingerOneTime = GetSysTimestamp();
403     std::chrono::nanoseconds fingerOneNanoseconds(upFingerOneTime);
404     upFingerOneEvent.SetId(1)
405         .SetType(TouchType::UP)
406         .SetX(120.0f)
407         .SetY(120.0f)
408         .SetScreenX(220.0f)
409         .SetScreenY(220.0f)
410         .SetSourceType(SourceType::TOUCH)
411         .SetSourceTool(SourceTool::FINGER)
412         .SetTime(TimeStamp(fingerOneNanoseconds))
413         .SetForce(100.0f)
414         .SetTiltX(10.0f)
415         .SetTiltY(10.0f)
416         .SetTargetDisplayId(2);
417     clickRecognizer->touchPoints_[1] = upFingerOneEvent;
418     clickRecognizer->OnAccepted();
419     EXPECT_EQ(eventInfo.GetTimeStamp().time_since_epoch().count(), upTime);
420     EXPECT_EQ(eventInfo.GetFingerList().size(), 2);
421     EXPECT_EQ(eventInfo.GetSourceDevice(), SourceType::TOUCH);
422     EXPECT_EQ(eventInfo.GetDeviceId(), 2);
423     EXPECT_EQ(eventInfo.GetScreenLocation().GetX(), 200.0f);
424     EXPECT_EQ(eventInfo.GetScreenLocation().GetY(), 200.0f);
425     EXPECT_EQ(eventInfo.GetGlobalLocation().GetX(), 100.0f);
426     EXPECT_EQ(eventInfo.GetGlobalLocation().GetY(), 100.0f);
427     EXPECT_EQ(eventInfo.GetLocalLocation().GetX(), 100.0f);
428     EXPECT_EQ(eventInfo.GetLocalLocation().GetY(), 100.0f);
429     EXPECT_EQ(eventInfo.GetGlobalDisplayLocation().GetX(), 300);
430     EXPECT_EQ(eventInfo.GetGlobalDisplayLocation().GetY(), 300);
431     EXPECT_EQ(eventInfo.GetForce(), 100.0f);
432     EXPECT_EQ(eventInfo.GetTiltX(), 10.0f);
433     EXPECT_EQ(eventInfo.GetTiltY(), 10.0f);
434     EXPECT_EQ(eventInfo.GetTargetDisplayId(), 2);
435     EXPECT_EQ(eventInfo.GetSourceTool(), SourceTool::FINGER);
436     EXPECT_EQ(eventInfo.GetInputEventType(), InputEventType::TOUCH_SCREEN);
437 }
438 
439 /**
440  * @tc.name: PinchRecognizerIssue002
441  * @tc.desc: Test PinchRecognizer's pinchCenter
442  * @tc.type: FUNC
443  */
444 HWTEST_F(RecognizerTestNgIssue, PinchRecognizerIssue002, TestSize.Level1)
445 {
446     /**
447      * @tc.steps: step1. create LongPressRecognizer and set onAction.
448      */
449     RefPtr<PinchRecognizer> pinchRecognizer =
450         AceType::MakeRefPtr<PinchRecognizer>(COUNT, PAN_DISTANCE, false);
451 
452     /**
453      * @tc.steps: step2. DispatchTouchEvent and compare pinchCenter.
454      * @tc.expected: step2. result equals.
455      */
456     TouchEvent downEvent;
457     downEvent.SetId(0)
458         .SetType(TouchType::DOWN)
459         .SetX(100.0f)
460         .SetY(100.0f)
461         .SetSourceType(SourceType::TOUCH);
462     pinchRecognizer->HandleEvent(downEvent);
463     TouchEvent downFingerOneEvent;
464     downFingerOneEvent.SetId(1)
465         .SetType(TouchType::DOWN)
466         .SetX(300.0f)
467         .SetY(300.0f)
468         .SetSourceType(SourceType::TOUCH);
469     pinchRecognizer->HandleEvent(downFingerOneEvent);
470     EXPECT_EQ(pinchRecognizer->pinchCenter_.GetX(), 200.0);
471     EXPECT_EQ(pinchRecognizer->pinchCenter_.GetY(), 200.0);
472     pinchRecognizer->OnAccepted();
473     TouchEvent moveEvent;
474     moveEvent.SetId(0)
475         .SetType(TouchType::MOVE)
476         .SetX(200.0f)
477         .SetY(200.0f)
478         .SetSourceType(SourceType::TOUCH);
479     pinchRecognizer->HandleEvent(moveEvent);
480     EXPECT_EQ(pinchRecognizer->pinchCenter_.GetX(), 250.0);
481     EXPECT_EQ(pinchRecognizer->pinchCenter_.GetY(), 250.0);
482 
483     TouchEvent upEvent;
484     upEvent.SetId(0)
485         .SetType(TouchType::UP)
486         .SetX(300.0f)
487         .SetY(300.0f)
488         .SetSourceType(SourceType::TOUCH);
489     pinchRecognizer->HandleEvent(upEvent);
490     EXPECT_EQ(pinchRecognizer->pinchCenter_.GetX(), 300.0);
491     EXPECT_EQ(pinchRecognizer->pinchCenter_.GetY(), 300.0);
492 }
493 } // namespace OHOS::Ace::NG