• 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 "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