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 "test/unittest/core/gestures/gestures_common_test_ng.h"
16
17 using namespace testing;
18 using namespace testing::ext;
19
20 namespace OHOS::Ace::NG {
21 class ParallelRecognizerTestNg : public GesturesCommonTestNg {
22 public:
23 static void SetUpTestSuite();
24 static void TearDownTestSuite();
25 };
26
SetUpTestSuite()27 void ParallelRecognizerTestNg::SetUpTestSuite()
28 {
29 MockPipelineContext::SetUp();
30 }
31
TearDownTestSuite()32 void ParallelRecognizerTestNg::TearDownTestSuite()
33 {
34 MockPipelineContext::TearDown();
35 }
36
37 /**
38 * @tc.name: ParallelRecognizerOnRejectedTest001
39 * @tc.desc: Test ParallelRecognizer function: OnAccepted OnRejected OnPending OnBlock
40 * @tc.type: FUNC
41 */
42 HWTEST_F(ParallelRecognizerTestNg, ParallelRecognizerOnRejectedTest001, TestSize.Level1)
43 {
44 /**
45 * @tc.steps: step1. create ParallelRecognizer.
46 */
47 std::vector<RefPtr<NGGestureRecognizer>> recognizers = {};
48 RefPtr<ClickRecognizer> clickRecognizerPtr2 = AceType::MakeRefPtr<ClickRecognizer>(FINGER_NUMBER, COUNT);
49 clickRecognizerPtr2->refereeState_ = RefereeState::PENDING_BLOCKED;
50 recognizers.insert(recognizers.end(), clickRecognizerPtr2);
51 RefPtr<ParallelRecognizer> parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
52
53 /**
54 * @tc.steps: step2. call OnRejected function and compare result.
55 * @tc.expected: step2. result equals.
56 */
57 parallelRecognizer->OnRejected();
58 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::FAIL);
59
60 /**
61 * @tc.steps: step2. call OnRejected function and compare result.
62 * @tc.expected: step2. result equals.
63 */
64 parallelRecognizer->OnRejected();
65 clickRecognizerPtr2->refereeState_ = RefereeState::FAIL;
66 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::FAIL);
67 }
68
69 /**
70 * @tc.name: ParallelRecognizerOnRejectedTest002
71 * @tc.desc: Test ParallelRecognizer function: OnAccepted OnRejected OnPending OnBlock
72 * @tc.type: FUNC
73 */
74 HWTEST_F(ParallelRecognizerTestNg, ParallelRecognizerOnRejectedTest002, TestSize.Level1)
75 {
76 /**
77 * @tc.steps: step1. create ParallelRecognizer.
78 */
79 std::vector<RefPtr<NGGestureRecognizer>> recognizers = {};
80 RefPtr<ClickRecognizer> clickRecognizerPtr2 = AceType::MakeRefPtr<ClickRecognizer>(FINGER_NUMBER, COUNT);
81 clickRecognizerPtr2->refereeState_ = RefereeState::PENDING_BLOCKED;
82
83
84 std::vector<RefPtr<NGGestureRecognizer>> recognizers2 = {};
85 RefPtr<ExclusiveRecognizer> exclusiveRecognizerPtr = AceType::MakeRefPtr<ExclusiveRecognizer>(recognizers2);
86 exclusiveRecognizerPtr->refereeState_ = RefereeState::PENDING_BLOCKED;
87 recognizers.insert(recognizers.end(), exclusiveRecognizerPtr);
88 RefPtr<ParallelRecognizer> parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
89
90 /**
91 * @tc.steps: step2. call OnRejected function and compare result.
92 * @tc.expected: step2. result equals.
93 */
94 parallelRecognizer->OnRejected();
95 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::FAIL);
96
97 /**
98 * @tc.steps: step2. call OnRejected function and compare result.
99 * @tc.expected: step2. result equals.
100 */
101 parallelRecognizer->OnRejected();
102 exclusiveRecognizerPtr->refereeState_ = RefereeState::FAIL;
103 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::FAIL);
104 }
105
106 /**
107 * @tc.name: ParallelRecognizerTest001
108 * @tc.desc: Test ParallelRecognizer function: OnAccepted OnRejected OnPending OnBlock
109 * @tc.type: FUNC
110 */
111 HWTEST_F(ParallelRecognizerTestNg, ParallelRecognizerTest001, TestSize.Level1)
112 {
113 /**
114 * @tc.steps: step1. create ParallelRecognizer.
115 */
116 std::vector<RefPtr<NGGestureRecognizer>> recognizers = {};
117 RefPtr<ParallelRecognizer> parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
118 RefPtr<ClickRecognizer> clickRecognizerPtr = AceType::MakeRefPtr<ClickRecognizer>(FINGER_NUMBER, COUNT);
119
120 /**
121 * @tc.steps: step2. call OnAccepted function and compare result.
122 * @tc.steps: case1: recognizer is nullptr
123 * @tc.expected: step2. result equals.
124 */
125 parallelRecognizer->currentBatchRecognizer_ = nullptr;
126 parallelRecognizer->OnAccepted();
127 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::SUCCEED);
128
129 /**
130 * @tc.steps: step2. call OnAccepted function and compare result.
131 * @tc.steps: case2: recognizer is not nullptr
132 * @tc.expected: step2. result equals.
133 */
134 parallelRecognizer->currentBatchRecognizer_ = clickRecognizerPtr;
135 parallelRecognizer->OnAccepted();
136 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::SUCCEED);
137
138 /**
139 * @tc.steps: step3. call OnRejected function and compare result.
140 * @tc.expected: step3. result equals.
141 */
142 parallelRecognizer->OnRejected();
143 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::SUCCEED);
144
145 /**
146 * @tc.steps: step4. call OnPending function and compare result.
147 * @tc.steps: case1: recognizer is nullptr
148 * @tc.expected: step4. result equals.
149 */
150 parallelRecognizer->currentBatchRecognizer_ = nullptr;
151 parallelRecognizer->OnPending();
152 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING);
153
154 /**
155 * @tc.steps: step4. call OnPending function and compare result.
156 * @tc.steps: case2: recognizer is not nullptr
157 * @tc.expected: step4. result equals.
158 */
159 parallelRecognizer->currentBatchRecognizer_ = clickRecognizerPtr;
160 parallelRecognizer->OnPending();
161 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING);
162
163 /**
164 * @tc.steps: step5. call OnBlocked function and compare result.
165 * @tc.steps: case1: disposal is ACCEPT, current is nullptr
166 * @tc.expected: step5. result equals.
167 */
168 parallelRecognizer->currentBatchRecognizer_ = nullptr;
169 parallelRecognizer->disposal_ = GestureDisposal::ACCEPT;
170 parallelRecognizer->OnBlocked();
171 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::SUCCEED_BLOCKED);
172
173 /**
174 * @tc.steps: step5. call OnBlocked function and compare result.
175 * @tc.steps: case2: disposal is ACCEPT, current is not nullptr
176 * @tc.expected: step5. result equals.
177 */
178 parallelRecognizer->currentBatchRecognizer_ = clickRecognizerPtr;
179 parallelRecognizer->disposal_ = GestureDisposal::ACCEPT;
180 parallelRecognizer->OnBlocked();
181 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::SUCCEED_BLOCKED);
182
183 /**
184 * @tc.steps: step5. call OnBlocked function and compare result.
185 * @tc.steps: case3: disposal is PENDING, current is nullptr
186 * @tc.expected: step5. result equals.
187 */
188 parallelRecognizer->currentBatchRecognizer_ = nullptr;
189 parallelRecognizer->disposal_ = GestureDisposal::PENDING;
190 parallelRecognizer->OnBlocked();
191 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING_BLOCKED);
192
193 /**
194 * @tc.steps: step5. call OnBlocked function and compare result.
195 * @tc.steps: case4: disposal is PENDING, current is not nullptr
196 * @tc.expected: step5. result equals.
197 */
198 parallelRecognizer->currentBatchRecognizer_ = clickRecognizerPtr;
199 parallelRecognizer->disposal_ = GestureDisposal::NONE;
200 parallelRecognizer->OnBlocked();
201 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING_BLOCKED);
202
203 /**
204 * @tc.steps: step5. call OnBlocked function and compare result.
205 * @tc.steps: case4: disposal is PENDING, current is not nullptr
206 * @tc.expected: step5. result equals.
207 */
208 parallelRecognizer->currentBatchRecognizer_ = clickRecognizerPtr;
209 parallelRecognizer->disposal_ = GestureDisposal::PENDING;
210 parallelRecognizer->OnBlocked();
211 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING_BLOCKED);
212 }
213
214 /**
215 * @tc.name: ParallelRecognizerTest002
216 * @tc.desc: Test ParallelRecognizer function: HandleEvent
217 * @tc.type: FUNC
218 */
219 HWTEST_F(ParallelRecognizerTestNg, ParallelRecognizerTest002, TestSize.Level1)
220 {
221 /**
222 * @tc.steps: step1. create ParallelRecognizer.
223 */
224 std::vector<RefPtr<NGGestureRecognizer>> recognizers = {};
225 RefPtr<ParallelRecognizer> parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
226 RefPtr<ClickRecognizer> clickRecognizerPtr = AceType::MakeRefPtr<ClickRecognizer>(FINGER_NUMBER, COUNT);
227
228 /**
229 * @tc.steps: step2. call HandleEvent function and compare result.
230 * @tc.steps: case1: refereeState is READY, recognizers is empty
231 * @tc.expected: step2. result equals.
232 */
233 parallelRecognizer->refereeState_ = RefereeState::READY;
234 TouchEvent touchEvent;
235 auto result = parallelRecognizer->HandleEvent(touchEvent);
236 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::DETECTING);
237 EXPECT_EQ(result, true);
238
239 /**
240 * @tc.steps: step2. call HandleEvent function and compare result.
241 * @tc.steps: case2: refereeState is PENDING, recognizers have nullptr
242 * @tc.expected: step2. result equals.
243 */
244 parallelRecognizer->refereeState_ = RefereeState::PENDING;
245 parallelRecognizer->recognizers_.clear();
246 parallelRecognizer->recognizers_.push_back(nullptr);
247 result = parallelRecognizer->HandleEvent(touchEvent);
248 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING);
249 EXPECT_EQ(result, true);
250
251 /**
252 * @tc.steps: step2. call HandleEvent function and compare result.
253 * @tc.steps: case3: refereeState is PENDING, recognizers have ptr, not check
254 * @tc.expected: step2. result equals.
255 */
256 parallelRecognizer->refereeState_ = RefereeState::PENDING;
257 parallelRecognizer->recognizers_.clear();
258 parallelRecognizer->recognizers_.push_back(clickRecognizerPtr);
259 result = parallelRecognizer->HandleEvent(touchEvent);
260 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING);
261 EXPECT_EQ(result, true);
262
263 /**
264 * @tc.steps: step2. call HandleEvent function and compare result.
265 * @tc.steps: case4: refereeState is PENDING, recognizers have ptr, check
266 * @tc.expected: step2. result equals.
267 */
268 clickRecognizerPtr->touchPoints_[touchEvent.id] = touchEvent;
269 parallelRecognizer->refereeState_ = RefereeState::PENDING;
270 parallelRecognizer->recognizers_.clear();
271 parallelRecognizer->recognizers_.push_back(clickRecognizerPtr);
272 result = parallelRecognizer->HandleEvent(touchEvent);
273 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING);
274 EXPECT_EQ(result, true);
275 }
276
277 /**
278 * @tc.name: ParallelRecognizerHandleEventTest001
279 * @tc.desc: Test ParallelRecognizer function: HandleEvent
280 * @tc.type: FUNC
281 */
282 HWTEST_F(ParallelRecognizerTestNg, ParallelRecognizerHandleEventTest001, TestSize.Level1)
283 {
284 /**
285 * @tc.steps: step1. create ParallelRecognizer.
286 */
287 std::vector<RefPtr<NGGestureRecognizer>> recognizers = {};
288 RefPtr<ParallelRecognizer> parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
289 RefPtr<ClickRecognizer> clickRecognizerPtr = AceType::MakeRefPtr<ClickRecognizer>(FINGER_NUMBER, COUNT);
290
291 /**
292 * @tc.steps: step2. call HandleEvent function and compare result.
293 * @tc.steps: case1: refereeState is READY, recognizers is empty
294 * @tc.expected: step2. result equals.
295 */
296 parallelRecognizer->refereeState_ = RefereeState::READY;
297 TouchEvent touchEvent;
298 AxisEvent axisEvent;
299 auto result = parallelRecognizer->HandleEvent(axisEvent);
300 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::DETECTING);
301 EXPECT_EQ(result, true);
302
303 /**
304 * @tc.steps: step2. call HandleEvent function and compare result.
305 * @tc.steps: case2: refereeState is PENDING, recognizers have nullptr
306 * @tc.expected: step2. result equals.
307 */
308 parallelRecognizer->refereeState_ = RefereeState::PENDING;
309 parallelRecognizer->recognizers_.clear();
310 parallelRecognizer->recognizers_.push_back(nullptr);
311 result = parallelRecognizer->HandleEvent(axisEvent);
312 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING);
313 EXPECT_EQ(result, true);
314
315 /**
316 * @tc.steps: step2. call HandleEvent function and compare result.
317 * @tc.steps: case3: refereeState is PENDING, recognizers have ptr, not check
318 * @tc.expected: step2. result equals.
319 */
320 parallelRecognizer->refereeState_ = RefereeState::PENDING;
321 parallelRecognizer->recognizers_.clear();
322 parallelRecognizer->recognizers_.push_back(clickRecognizerPtr);
323 result = parallelRecognizer->HandleEvent(axisEvent);
324 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING);
325 EXPECT_EQ(result, true);
326
327 /**
328 * @tc.steps: step2. call HandleEvent function and compare result.
329 * @tc.steps: case4: refereeState is PENDING, recognizers have ptr, check
330 * @tc.expected: step2. result equals.
331 */
332 clickRecognizerPtr->touchPoints_[touchEvent.id] = touchEvent;
333 parallelRecognizer->refereeState_ = RefereeState::PENDING;
334 parallelRecognizer->recognizers_.clear();
335 parallelRecognizer->recognizers_.push_back(clickRecognizerPtr);
336 result = parallelRecognizer->HandleEvent(axisEvent);
337 EXPECT_EQ(parallelRecognizer->refereeState_, RefereeState::PENDING);
338 EXPECT_EQ(result, true);
339 }
340
341 /**
342 * @tc.name: ParallelRecognizerTest003
343 * @tc.desc: Test ParallelRecognizer function: BatchAdjudicate
344 * @tc.type: FUNC
345 */
346 HWTEST_F(ParallelRecognizerTestNg, ParallelRecognizerTest003, TestSize.Level1)
347 {
348 /**
349 * @tc.steps: step1. create ParallelRecognizer.
350 */
351 RefPtr<ClickRecognizer> clickRecognizerPtr = AceType::MakeRefPtr<ClickRecognizer>(FINGER_NUMBER, COUNT);
352 std::vector<RefPtr<NGGestureRecognizer>> recognizers = {};
353 RefPtr<ParallelRecognizer> parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
354
355 /**
356 * @tc.steps: step2. call HandleEvent function and compare result.
357 * @tc.steps: case1: disposal is ACCEPT, refereeState is SUCCEED
358 * @tc.expected: step2. expect return
359 */
360 clickRecognizerPtr->refereeState_ = RefereeState::SUCCEED;
361 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::ACCEPT);
362 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::SUCCEED);
363
364 /**
365 * @tc.steps: step2. call HandleEvent function and compare result.
366 * @tc.steps: case2: disposal is ACCEPT, refereeState is PENDING, refereeState_ is SUCCEED
367 * @tc.expected: step2. expect SUCCESS
368 */
369 clickRecognizerPtr->refereeState_ = RefereeState::PENDING;
370 parallelRecognizer->refereeState_ = RefereeState::SUCCEED;
371 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::ACCEPT);
372 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::SUCCEED);
373
374 /**
375 * @tc.steps: step2. call HandleEvent function and compare result.
376 * @tc.steps: case3: disposal is ACCEPT, refereeState is PENDING, refereeState_ is PENDING_BLOCKED
377 * @tc.expected: step2. expect PENDING
378 */
379 clickRecognizerPtr->refereeState_ = RefereeState::PENDING;
380 parallelRecognizer->refereeState_ = RefereeState::PENDING_BLOCKED;
381 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::ACCEPT);
382 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::PENDING);
383
384 /**
385 * @tc.steps: step2. call HandleEvent function and compare result.
386 * @tc.steps: case4: disposal is REJECT, refereeState is FAIL
387 * @tc.expected: step2. expect FAIL
388 */
389 clickRecognizerPtr->refereeState_ = RefereeState::FAIL;
390 parallelRecognizer->refereeState_ = RefereeState::FAIL;
391 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::REJECT);
392 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::FAIL);
393
394 /**
395 * @tc.steps: step2. call HandleEvent function and compare result.
396 * @tc.steps: case5: disposal is PENDING, refereeState is PENDING, refereeState_ is PENDING
397 * @tc.expected: step2. expect PENDING
398 */
399 clickRecognizerPtr->refereeState_ = RefereeState::PENDING;
400 parallelRecognizer->refereeState_ = RefereeState::PENDING;
401 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::PENDING);
402 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::PENDING);
403
404 /**
405 * @tc.steps: step2. call HandleEvent function and compare result.
406 * @tc.steps: case6: disposal is PENDING, refereeState is READY, refereeState_ is PENDING
407 * @tc.expected: step2. expect PENDING
408 */
409 clickRecognizerPtr->refereeState_ = RefereeState::READY;
410 parallelRecognizer->refereeState_ = RefereeState::PENDING;
411 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::PENDING);
412 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::PENDING);
413
414 /**
415 * @tc.steps: step2. call HandleEvent function and compare result.
416 * @tc.steps: case7: disposal is PENDING, refereeState is READY, refereeState_ is PENDING_BLOCKED
417 * @tc.expected: step2. expect PENDING_CLOCKED
418 */
419 clickRecognizerPtr->refereeState_ = RefereeState::READY;
420 parallelRecognizer->refereeState_ = RefereeState::PENDING_BLOCKED;
421 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::PENDING);
422 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::READY);
423 }
424
425 /**
426 * @tc.name: ParallelRecognizerBatchAdjudicateTest001
427 * @tc.desc: Test ParallelRecognizer function: BatchAdjudicate
428 * @tc.type: FUNC
429 */
430 HWTEST_F(ParallelRecognizerTestNg, ParallelRecognizerBatchAdjudicateTest001, TestSize.Level1)
431 {
432 /**
433 * @tc.steps: step1. create ParallelRecognizer.
434 */
435 RefPtr<ClickRecognizer> clickRecognizerPtr = AceType::MakeRefPtr<ClickRecognizer>(FINGER_NUMBER, COUNT);
436 std::vector<RefPtr<NGGestureRecognizer>> recognizers = {};
437 RefPtr<ParallelRecognizer> parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
438
439 /**
440 * @tc.steps: step2. call HandleEvent function and compare result.
441 * @tc.steps: case1: disposal is ACCEPT, refereeState is SUCCEED
442 * @tc.expected: step2. expect return
443 */
444 clickRecognizerPtr->refereeState_ = RefereeState::SUCCEED;
445 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::ACCEPT);
446 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::SUCCEED);
447
448 /**
449 * @tc.steps: step2. call HandleEvent function and compare result.
450 * @tc.steps: case2: disposal is ACCEPT, refereeState is PENDING, refereeState_ is SUCCEED
451 * @tc.expected: step2. expect SUCCESS
452 */
453 clickRecognizerPtr->refereeState_ = RefereeState::PENDING;
454 parallelRecognizer->refereeState_ = RefereeState::SUCCEED_BLOCKED;
455 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::ACCEPT);
456 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::PENDING);
457
458 /**
459 * @tc.steps: step2. call HandleEvent function and compare result.
460 * @tc.steps: case3: disposal is ACCEPT, refereeState is PENDING, refereeState_ is PENDING_BLOCKED
461 * @tc.expected: step2. expect PENDING
462 */
463 clickRecognizerPtr->refereeState_ = RefereeState::PENDING;
464 parallelRecognizer->refereeState_ = RefereeState::SUCCEED_BLOCKED;
465 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::ACCEPT);
466 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::PENDING);
467
468 /**
469 * @tc.steps: step2. call HandleEvent function and compare result.
470 * @tc.steps: case4: disposal is REJECT, refereeState is FAIL
471 * @tc.expected: step2. expect FAIL
472 */
473 clickRecognizerPtr->refereeState_ = RefereeState::FAIL;
474 parallelRecognizer->refereeState_ = RefereeState::FAIL;
475 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::REJECT);
476 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::FAIL);
477
478 /**
479 * @tc.steps: step2. call HandleEvent function and compare result.
480 * @tc.steps: case5: disposal is PENDING, refereeState is PENDING, refereeState_ is PENDING
481 * @tc.expected: step2. expect PENDING
482 */
483 clickRecognizerPtr->refereeState_ = RefereeState::PENDING;
484 parallelRecognizer->refereeState_ = RefereeState::SUCCEED_BLOCKED;
485 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::PENDING);
486 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::PENDING);
487
488 /**
489 * @tc.steps: step2. call HandleEvent function and compare result.
490 * @tc.steps: case6: disposal is PENDING, refereeState is READY, refereeState_ is PENDING
491 * @tc.expected: step2. expect PENDING
492 */
493 clickRecognizerPtr->refereeState_ = RefereeState::READY;
494 parallelRecognizer->refereeState_ = RefereeState::PENDING;
495 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::PENDING);
496 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::PENDING);
497
498 /**
499 * @tc.steps: step2. call HandleEvent function and compare result.
500 * @tc.steps: case7: disposal is PENDING, refereeState is READY, refereeState_ is PENDING_BLOCKED
501 * @tc.expected: step2. expect PENDING_CLOCKED
502 */
503 clickRecognizerPtr->refereeState_ = RefereeState::READY;
504 parallelRecognizer->refereeState_ = RefereeState::PENDING_BLOCKED;
505 parallelRecognizer->BatchAdjudicate(clickRecognizerPtr, GestureDisposal::PENDING);
506 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::READY);
507 }
508
509 /**
510 * @tc.name: ParallelRecognizerTest004
511 * @tc.desc: Test ParallelRecognizer function: ReconcileFrom
512 * @tc.type: FUNC
513 */
514 HWTEST_F(ParallelRecognizerTestNg, ParallelRecognizerTest004, TestSize.Level1)
515 {
516 /**
517 * @tc.steps: step1. create ParallelRecognizer.
518 */
519 RefPtr<ClickRecognizer> clickRecognizerPtr = AceType::MakeRefPtr<ClickRecognizer>(FINGER_NUMBER, COUNT);
520 std::vector<RefPtr<NGGestureRecognizer>> recognizers = {};
521 RefPtr<ParallelRecognizer> parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
522 RefPtr<ParallelRecognizer> parallelRecognizerPtr = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
523 bool result = false;
524
525 /**
526 * @tc.steps: step2. call ReconcileFrom function and compare result.
527 * @tc.steps: case1: normal case
528 * @tc.expected: step2. result equals.
529 */
530 result = parallelRecognizer->ReconcileFrom(parallelRecognizerPtr);
531 EXPECT_EQ(result, true);
532
533 /**
534 * @tc.steps: step2. call ReconcileFrom function and compare result.
535 * @tc.steps: case2: recognizerPtr is nullptr
536 * @tc.expected: step2. result equals.
537 */
538 result = parallelRecognizer->ReconcileFrom(nullptr);
539 EXPECT_EQ(result, false);
540
541 /**
542 * @tc.steps: step2. call ReconcileFrom function and compare result.
543 * @tc.steps: case3: recognizers_ = {nullptr};
544 * @tc.expected: step2. result equals.
545 */
546 parallelRecognizer->recognizers_ = { nullptr };
547 result = parallelRecognizer->ReconcileFrom(parallelRecognizerPtr);
548 EXPECT_EQ(result, false);
549
550 /**
551 * @tc.steps: step2. call ReconcileFrom function and compare result.
552 * @tc.steps: case4: recognizers_ = {};
553 * @tc.expected: step2. result equals.
554 */
555 parallelRecognizer->recognizers_ = {};
556 result = parallelRecognizer->ReconcileFrom(parallelRecognizerPtr);
557 EXPECT_EQ(result, true);
558
559 /**
560 * @tc.steps: step2. call ReconcileFrom function and compare result.
561 * @tc.steps: case5: curr->priorityMask_ != priorityMask_
562 * @tc.expected: step2. result equals.
563 */
564 parallelRecognizer->priorityMask_ = GestureMask::Normal;
565 parallelRecognizerPtr->priorityMask_ = GestureMask::Begin;
566 result = parallelRecognizer->ReconcileFrom(parallelRecognizerPtr);
567 EXPECT_EQ(result, false);
568
569 /**
570 * @tc.steps: step2. call ReconcileFrom function and compare result.
571 * @tc.steps: case6: size and Mask is same, child is nullptr
572 * @tc.expected: step2. result equals.
573 */
574 parallelRecognizer->priorityMask_ = parallelRecognizerPtr->priorityMask_;
575 parallelRecognizer->recognizers_.clear();
576 parallelRecognizerPtr->recognizers_.clear();
577 parallelRecognizer->recognizers_.push_back(nullptr);
578 parallelRecognizerPtr->recognizers_.push_back(nullptr);
579 result = parallelRecognizer->ReconcileFrom(parallelRecognizerPtr);
580 EXPECT_EQ(result, false);
581
582 /**
583 * @tc.steps: step2. call ReconcileFrom function and compare result.
584 * @tc.steps: case7: size and Mask is same, child is ptr
585 * @tc.expected: step2. result equals.
586 */
587 parallelRecognizer->recognizers_.clear();
588 parallelRecognizerPtr->recognizers_.clear();
589 parallelRecognizer->recognizers_.push_back(clickRecognizerPtr);
590 parallelRecognizerPtr->recognizers_.push_back(clickRecognizerPtr);
591 result = parallelRecognizer->ReconcileFrom(parallelRecognizerPtr);
592 EXPECT_EQ(result, true);
593
594 /**
595 * @tc.steps: step2. call ReconcileFrom function and compare result.
596 * @tc.steps: case8: size and Mask is same, child is ptr and nullptr
597 * @tc.expected: step2. result equals.
598 */
599 parallelRecognizer->recognizers_.clear();
600 parallelRecognizerPtr->recognizers_.clear();
601 parallelRecognizer->recognizers_.push_back(clickRecognizerPtr);
602 parallelRecognizerPtr->recognizers_.push_back(nullptr);
603 result = parallelRecognizer->ReconcileFrom(parallelRecognizerPtr);
604 EXPECT_EQ(result, false);
605 }
606
607 /**
608 * @tc.name: ParallelRecognizerTest005
609 * @tc.desc: Test ParallelRecognizer function: CleanRecognizerState
610 * @tc.type: FUNC
611 */
612 HWTEST_F(ParallelRecognizerTestNg, ParallelRecognizerTest005, TestSize.Level1)
613 {
614 /**
615 * @tc.steps: step1. create ParallelRecognizer.
616 */
617 RefPtr<ClickRecognizer> clickRecognizerPtr = AceType::MakeRefPtr<ClickRecognizer>(FINGER_NUMBER, COUNT);
618 std::vector<RefPtr<NGGestureRecognizer>> recognizers = {clickRecognizerPtr};
619 RefPtr<ParallelRecognizer> parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(recognizers);
620
621 /**
622 * @tc.steps: step3. set child recognizer state and call cleanRecognizerState function and compare result.
623 * @tc.steps: case1: touchPoints size is 1, clean success.
624 * @tc.expected: step3. clickRecognizer state set ready.
625 */
626 clickRecognizerPtr->refereeState_ = RefereeState::SUCCEED;
627 parallelRecognizer->CleanRecognizerState();
628 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::READY);
629
630 /**
631 * @tc.steps: step3. set child recognizer state and call cleanRecognizerState function and compare result.
632 * @tc.steps: case2: touchPoints size is 2, clean fail.
633 * @tc.expected: step3. clickRecognizer state set ready.
634 */
635 clickRecognizerPtr->touchPoints_[0] = {};
636 clickRecognizerPtr->touchPoints_[1] = {};
637 clickRecognizerPtr->refereeState_ = RefereeState::SUCCEED;
638 parallelRecognizer->CleanRecognizerState();
639 EXPECT_EQ(clickRecognizerPtr->refereeState_, RefereeState::SUCCEED);
640 }
641 } // namespace OHOS::Ace::NG