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