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 TapGestureTestNg : public GesturesCommonTestNg {
22 public:
23     static void SetUpTestSuite();
24     static void TearDownTestSuite();
25 };
26 
SetUpTestSuite()27 void TapGestureTestNg::SetUpTestSuite()
28 {
29     MockPipelineContext::SetUp();
30 }
31 
TearDownTestSuite()32 void TapGestureTestNg::TearDownTestSuite()
33 {
34     MockPipelineContext::TearDown();
35 }
36 
37 /**
38  * @tc.name: TapGestureTest001
39  * @tc.desc: Test TapGesture CreateRecognizer function
40  */
41 HWTEST_F(TapGestureTestNg, TapGestureTest001, TestSize.Level1)
42 {
43     /**
44      * @tc.steps: step1. create TapGestureGesture.
45      */
46     TapGestureModelNG tapGestureModelNG;
47     tapGestureModelNG.Create(COUNT, FINGER_NUMBER);
48 
49     RefPtr<GestureProcessor> gestureProcessor;
50     gestureProcessor = NG::ViewStackProcessor::GetInstance()->GetOrCreateGestureProcessor();
51     auto tapGestureNG = AceType::DynamicCast<NG::TapGesture>(gestureProcessor->TopGestureNG());
52     EXPECT_EQ(tapGestureNG->count_, COUNT);
53 
54     TapGesture tapGesture = TapGesture(COUNT, FINGER_NUMBER);
55     EXPECT_EQ(tapGesture.count_, COUNT);
56     /**
57      * @tc.steps: step2. call CreateRecognizer function and compare result
58      * @tc.steps: case1: not have onActionId
59      */
60     tapGesture.priority_ = GesturePriority::Low;
61     tapGesture.gestureMask_ = GestureMask::Normal;
62     auto tapRecognizer = AceType::DynamicCast<ClickRecognizer>(tapGesture.CreateRecognizer());
63     EXPECT_NE(tapRecognizer, nullptr);
64     EXPECT_EQ(tapRecognizer->GetPriority(), GesturePriority::Low);
65     EXPECT_EQ(tapRecognizer->GetPriorityMask(), GestureMask::Normal);
66 
67     /**
68      * @tc.steps: step2. call CreateRecognizer function and compare result
69      * @tc.steps: case2: have onActionId
70      */
71     std::unique_ptr<GestureEventFunc> onActionId;
72     tapGesture.onActionId_ = std::move(onActionId);
73     tapRecognizer = AceType::DynamicCast<ClickRecognizer>(tapGesture.CreateRecognizer());
74     EXPECT_EQ(tapRecognizer->GetPriority(), GesturePriority::Low);
75     EXPECT_EQ(tapRecognizer->GetPriorityMask(), GestureMask::Normal);
76 }
77 
78 /**
79  * @tc.name: TapGestureTest002
80  * @tc.desc: Test TapGesture CreateRecognizer function
81  */
82 HWTEST_F(TapGestureTestNg, TapGestureTest002, TestSize.Level1)
83 {
84     /**
85      * @tc.steps: step1. create TapGestureGesture.
86      */
87     TapGestureModelNG tapGestureModelNG;
88     tapGestureModelNG.Create(COUNT, FINGER_NUMBER);
89 
90     RefPtr<GestureProcessor> gestureProcessor;
91     gestureProcessor = NG::ViewStackProcessor::GetInstance()->GetOrCreateGestureProcessor();
92     auto tapGestureNG = AceType::DynamicCast<NG::TapGesture>(gestureProcessor->TopGestureNG());
93     EXPECT_EQ(tapGestureNG->count_, COUNT);
94 
95     TapGesture tapGesture = TapGesture(COUNT, FINGER_NUMBER);
96     EXPECT_EQ(tapGesture.count_, COUNT);
97     /**
98      * @tc.steps: step2. call CreateRecognizer function and compare result
99      * @tc.steps: case1: not have onActionId
100      */
101     tapGesture.priority_ = GesturePriority::Low;
102     tapGesture.gestureMask_ = GestureMask::Normal;
__anon5d91799d0102(GestureEvent& info) 103     auto onActionStart = [](GestureEvent& info) { return true; };
104     tapGesture.SetOnActionId(onActionStart);
105     auto tapRecognizer = AceType::DynamicCast<ClickRecognizer>(tapGesture.CreateRecognizer());
106     EXPECT_NE(tapRecognizer, nullptr);
107     EXPECT_EQ(tapRecognizer->GetPriority(), GesturePriority::Low);
108     EXPECT_EQ(tapRecognizer->GetPriorityMask(), GestureMask::Normal);
109 
110     /**
111      * @tc.steps: step2. call CreateRecognizer function and compare result
112      * @tc.steps: case2: have onActionId
113      */
114     std::unique_ptr<GestureEventFunc> onActionId;
115     tapGesture.onActionId_ = std::move(onActionId);
116     tapRecognizer = AceType::DynamicCast<ClickRecognizer>(tapGesture.CreateRecognizer());
117     EXPECT_EQ(tapRecognizer->GetPriority(), GesturePriority::Low);
118     EXPECT_EQ(tapRecognizer->GetPriorityMask(), GestureMask::Normal);
119 }
120 
121 /**
122  * @tc.name: GestureTest001
123  * @tc.desc: Test TapGesture CreateRecognizer function
124  */
125 HWTEST_F(TapGestureTestNg, GestureTest001, TestSize.Level1)
126 {
127     GestureModelNG gestureModelNG;
128     gestureModelNG.Create(0, 0);
129     gestureModelNG.Finish();
130     gestureModelNG.Pop();
131 
132     RefPtr<GestureProcessor> gestureProcessor;
133     gestureProcessor = NG::ViewStackProcessor::GetInstance()->GetOrCreateGestureProcessor();
134     EXPECT_EQ(gestureProcessor->priority_, GesturePriority::Low);
135     EXPECT_EQ(gestureProcessor->gestureMask_, GestureMask::Normal);
136 
137     PanGestureModelNG panGestureModelNG;
138     int32_t fingersNum = DEFAULT_PAN_FINGER;
139     double distanceNum = DEFAULT_PAN_DISTANCE.ConvertToPx();
140     PanDirection panDirection;
141     panGestureModelNG.Create(fingersNum, panDirection, distanceNum);
142     auto panGestureNG = AceType::DynamicCast<NG::PanGesture>(gestureProcessor->TopGestureNG());
143     EXPECT_EQ(panGestureNG->distance_, distanceNum);
144 
145     RefPtr<PanGestureOption> refPanGestureOption = AceType::MakeRefPtr<PanGestureOption>();
146     panGestureModelNG.SetPanGestureOption(refPanGestureOption);
147 
148     TimeoutGestureModelNG timeoutGestureModelNG;
149     timeoutGestureModelNG.GetGestureProcessor();
150 
151     SwipeGestureModelNG swipeGestureModelNG;
152     fingersNum = DEFAULT_SLIDE_FINGER;
153     double speedNum = DEFAULT_SLIDE_SPEED;
154     SwipeDirection slideDirection;
155     swipeGestureModelNG.Create(fingersNum, slideDirection, speedNum);
156     auto swipeGestureNG = AceType::DynamicCast<NG::SwipeGesture>(gestureProcessor->TopGestureNG());
157     EXPECT_EQ(swipeGestureNG->speed_, speedNum);
158 }
159 } // namespace OHOS::Ace::NG