• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 "test/unittest/core/gestures/pan_recognizer_test_utils.h"
18 
19 #include "core/components_ng/gestures/recognizers/gesture_recognizer.h"
20 #include "core/event/ace_events.h"
21 #include "core/gestures/gesture_info.h"
22 
23 using namespace testing;
24 using namespace testing::ext;
25 
26 namespace OHOS::Ace::NG {
27 namespace {
28 struct PanRecognizerDistanceTestCase {
29     double originDistance_ = 0.0;
30     SourceTool downSourceTool = SourceTool::UNKNOWN;
31     double moveDistance = 0.0;
32     PanRecognizer::GestureAcceptResult expectedState = PanRecognizer::GestureAcceptResult::ACCEPT;
PanRecognizerDistanceTestCaseOHOS::Ace::NG::__anon481fae240111::PanRecognizerDistanceTestCase33     PanRecognizerDistanceTestCase(double originDistance, SourceTool downSourceTool, double moveDistance,
34         PanRecognizer::GestureAcceptResult expectedState)
35         : originDistance_(originDistance), downSourceTool(downSourceTool), moveDistance(moveDistance),
36         expectedState(expectedState)
37     {}
38 };
39 
40 struct PanRecognizerDistanceMapTestCase : public PanRecognizerDistanceTestCase {
41     SourceTool createSourceTool = SourceTool::UNKNOWN;
PanRecognizerDistanceMapTestCaseOHOS::Ace::NG::__anon481fae240111::PanRecognizerDistanceMapTestCase42     PanRecognizerDistanceMapTestCase(double originDistance, SourceTool downSourceTool, double moveDistance,
43         PanRecognizer::GestureAcceptResult expectedState, SourceTool createSourceTool)
44         : PanRecognizerDistanceTestCase(originDistance, downSourceTool, moveDistance, expectedState),
45         createSourceTool(createSourceTool)
46     {}
47 };
48 
49 const std::vector<PanRecognizerDistanceTestCase> PAN_RECOGNIZER_DISTANCE_TEST_CASES = {
50     PanRecognizerDistanceTestCase(-1, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING),
51     PanRecognizerDistanceTestCase(-1, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING),
52     PanRecognizerDistanceTestCase(-1, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT),
53     PanRecognizerDistanceTestCase(-1, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING),
54     PanRecognizerDistanceTestCase(-1, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::DETECTING),
55     PanRecognizerDistanceTestCase(-1, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT),
56     PanRecognizerDistanceTestCase(-1, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING),
57     PanRecognizerDistanceTestCase(-1, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING),
58     PanRecognizerDistanceTestCase(-1, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::ACCEPT),
59 
60     PanRecognizerDistanceTestCase(0, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::ACCEPT),
61     PanRecognizerDistanceTestCase(0, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::ACCEPT),
62     PanRecognizerDistanceTestCase(0, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT),
63     PanRecognizerDistanceTestCase(0, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::ACCEPT),
64     PanRecognizerDistanceTestCase(0, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::ACCEPT),
65     PanRecognizerDistanceTestCase(0, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT),
66     PanRecognizerDistanceTestCase(0, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::ACCEPT),
67     PanRecognizerDistanceTestCase(0, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::ACCEPT),
68     PanRecognizerDistanceTestCase(0, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::ACCEPT),
69 
70     PanRecognizerDistanceTestCase(1, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING),
71     PanRecognizerDistanceTestCase(1, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::ACCEPT),
72     PanRecognizerDistanceTestCase(1, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT),
73     PanRecognizerDistanceTestCase(1, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING),
74     PanRecognizerDistanceTestCase(1, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::ACCEPT),
75     PanRecognizerDistanceTestCase(1, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT),
76     PanRecognizerDistanceTestCase(1, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING),
77     PanRecognizerDistanceTestCase(1, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::ACCEPT),
78     PanRecognizerDistanceTestCase(1, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::ACCEPT),
79 };
80 
81 const std::vector<PanRecognizerDistanceMapTestCase> PAN_RECOGNIZER_DISTANCE_MAP_UNKNOWN_TEST_CASES = {
82     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
83         SourceTool::UNKNOWN),
84     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
85         SourceTool::UNKNOWN),
86     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
87         SourceTool::UNKNOWN),
88     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
89         SourceTool::UNKNOWN),
90     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
91         SourceTool::UNKNOWN),
92     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
93         SourceTool::UNKNOWN),
94     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::DETECTING,
95         SourceTool::UNKNOWN),
96     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
97         SourceTool::UNKNOWN),
98     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
99         SourceTool::UNKNOWN),
100     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
101         SourceTool::UNKNOWN),
102     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
103         SourceTool::UNKNOWN),
104     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
105         SourceTool::UNKNOWN),
106     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
107         SourceTool::UNKNOWN),
108     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
109         SourceTool::UNKNOWN),
110     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
111         SourceTool::UNKNOWN),
112     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
113         SourceTool::UNKNOWN),
114     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
115         SourceTool::UNKNOWN),
116     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
117         SourceTool::UNKNOWN),
118     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
119         SourceTool::UNKNOWN),
120     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
121         SourceTool::UNKNOWN),
122 
123     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::ACCEPT,
124         SourceTool::UNKNOWN),
125     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::ACCEPT,
126         SourceTool::UNKNOWN),
127     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
128         SourceTool::UNKNOWN),
129     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
130         SourceTool::UNKNOWN),
131     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
132         SourceTool::UNKNOWN),
133     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::ACCEPT,
134         SourceTool::UNKNOWN),
135     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::ACCEPT,
136         SourceTool::UNKNOWN),
137     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
138         SourceTool::UNKNOWN),
139     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
140         SourceTool::UNKNOWN),
141     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
142         SourceTool::UNKNOWN),
143     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
144         SourceTool::UNKNOWN),
145     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
146         SourceTool::UNKNOWN),
147     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
148         SourceTool::UNKNOWN),
149     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
150         SourceTool::UNKNOWN),
151     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
152         SourceTool::UNKNOWN),
153     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::ACCEPT,
154         SourceTool::UNKNOWN),
155     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::ACCEPT,
156         SourceTool::UNKNOWN),
157     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
158         SourceTool::UNKNOWN),
159     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
160         SourceTool::UNKNOWN),
161     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
162         SourceTool::UNKNOWN),
163 
164     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
165         SourceTool::UNKNOWN),
166     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::ACCEPT,
167         SourceTool::UNKNOWN),
168     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
169         SourceTool::UNKNOWN),
170     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
171         SourceTool::UNKNOWN),
172     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
173         SourceTool::UNKNOWN),
174     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
175         SourceTool::UNKNOWN),
176     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::ACCEPT,
177         SourceTool::UNKNOWN),
178     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
179         SourceTool::UNKNOWN),
180     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
181         SourceTool::UNKNOWN),
182     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
183         SourceTool::UNKNOWN),
184     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
185         SourceTool::UNKNOWN),
186     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
187         SourceTool::UNKNOWN),
188     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
189         SourceTool::UNKNOWN),
190     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
191         SourceTool::UNKNOWN),
192     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
193         SourceTool::UNKNOWN),
194     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
195         SourceTool::UNKNOWN),
196     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::ACCEPT,
197         SourceTool::UNKNOWN),
198     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
199         SourceTool::UNKNOWN),
200     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
201         SourceTool::UNKNOWN),
202     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
203         SourceTool::UNKNOWN),
204 
205     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
206         SourceTool::UNKNOWN),
207     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
208         SourceTool::UNKNOWN),
209     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
210         SourceTool::UNKNOWN),
211     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::DETECTING,
212         SourceTool::UNKNOWN),
213     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
214         SourceTool::UNKNOWN),
215     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
216         SourceTool::UNKNOWN),
217     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::DETECTING,
218         SourceTool::UNKNOWN),
219     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::DETECTING,
220         SourceTool::UNKNOWN),
221     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::DETECTING,
222         SourceTool::UNKNOWN),
223     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
224         SourceTool::UNKNOWN),
225     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
226         SourceTool::UNKNOWN),
227     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
228         SourceTool::UNKNOWN),
229     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
230         SourceTool::UNKNOWN),
231     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
232         SourceTool::UNKNOWN),
233     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
234         SourceTool::UNKNOWN),
235     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
236         SourceTool::UNKNOWN),
237     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
238         SourceTool::UNKNOWN),
239     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::DETECTING,
240         SourceTool::UNKNOWN),
241     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::DETECTING,
242         SourceTool::UNKNOWN),
243     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
244         SourceTool::UNKNOWN),
245 };
246 
247 const std::vector<PanRecognizerDistanceMapTestCase> PAN_RECOGNIZER_DISTANCE_MAP_FINGER_TEST_CASES = {
248     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
249         SourceTool::FINGER),
250     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
251         SourceTool::FINGER),
252     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
253         SourceTool::FINGER),
254     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
255         SourceTool::FINGER),
256     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
257         SourceTool::FINGER),
258     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
259         SourceTool::FINGER),
260     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::DETECTING,
261         SourceTool::FINGER),
262     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
263         SourceTool::FINGER),
264     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
265         SourceTool::FINGER),
266     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
267         SourceTool::FINGER),
268     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
269         SourceTool::FINGER),
270     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
271         SourceTool::FINGER),
272     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
273         SourceTool::FINGER),
274     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
275         SourceTool::FINGER),
276     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
277         SourceTool::FINGER),
278     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
279         SourceTool::FINGER),
280     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
281         SourceTool::FINGER),
282     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
283         SourceTool::FINGER),
284     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
285         SourceTool::FINGER),
286     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
287         SourceTool::FINGER),
288 
289     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
290         SourceTool::FINGER),
291     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
292         SourceTool::FINGER),
293     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
294         SourceTool::FINGER),
295     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
296         SourceTool::FINGER),
297     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
298         SourceTool::FINGER),
299     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::ACCEPT,
300         SourceTool::FINGER),
301     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::ACCEPT,
302         SourceTool::FINGER),
303     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
304         SourceTool::FINGER),
305     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
306         SourceTool::FINGER),
307     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
308         SourceTool::FINGER),
309     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
310         SourceTool::FINGER),
311     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
312         SourceTool::FINGER),
313     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
314         SourceTool::FINGER),
315     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
316         SourceTool::FINGER),
317     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
318         SourceTool::FINGER),
319     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
320         SourceTool::FINGER),
321     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
322         SourceTool::FINGER),
323     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
324         SourceTool::FINGER),
325     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
326         SourceTool::FINGER),
327     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
328         SourceTool::FINGER),
329 
330     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
331         SourceTool::FINGER),
332     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
333         SourceTool::FINGER),
334     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
335         SourceTool::FINGER),
336     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
337         SourceTool::FINGER),
338     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
339         SourceTool::FINGER),
340     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
341         SourceTool::FINGER),
342     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::ACCEPT,
343         SourceTool::FINGER),
344     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
345         SourceTool::FINGER),
346     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
347         SourceTool::FINGER),
348     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
349         SourceTool::FINGER),
350     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
351         SourceTool::FINGER),
352     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
353         SourceTool::FINGER),
354     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
355         SourceTool::FINGER),
356     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
357         SourceTool::FINGER),
358     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
359         SourceTool::FINGER),
360     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
361         SourceTool::FINGER),
362     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
363         SourceTool::FINGER),
364     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
365         SourceTool::FINGER),
366     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
367         SourceTool::FINGER),
368     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
369         SourceTool::FINGER),
370 
371     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
372         SourceTool::FINGER),
373     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
374         SourceTool::FINGER),
375     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
376         SourceTool::FINGER),
377     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
378         SourceTool::FINGER),
379     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
380         SourceTool::FINGER),
381     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
382         SourceTool::FINGER),
383     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::DETECTING,
384         SourceTool::FINGER),
385     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::DETECTING,
386         SourceTool::FINGER),
387     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::DETECTING,
388         SourceTool::FINGER),
389     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
390         SourceTool::FINGER),
391     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
392         SourceTool::FINGER),
393     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
394         SourceTool::FINGER),
395     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
396         SourceTool::FINGER),
397     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
398         SourceTool::FINGER),
399     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
400         SourceTool::FINGER),
401     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
402         SourceTool::FINGER),
403     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
404         SourceTool::FINGER),
405     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
406         SourceTool::FINGER),
407     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
408         SourceTool::FINGER),
409     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
410         SourceTool::FINGER),
411 };
412 
413 const std::vector<PanRecognizerDistanceMapTestCase> PAN_RECOGNIZER_DISTANCE_MAP_PEN_TEST_CASES = {
414     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
415         SourceTool::PEN),
416     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
417         SourceTool::PEN),
418     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
419         SourceTool::PEN),
420     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
421         SourceTool::PEN),
422     PanRecognizerDistanceMapTestCase(-1, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
423         SourceTool::PEN),
424     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
425         SourceTool::PEN),
426     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::DETECTING,
427         SourceTool::PEN),
428     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
429         SourceTool::PEN),
430     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
431         SourceTool::PEN),
432     PanRecognizerDistanceMapTestCase(-1, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
433         SourceTool::PEN),
434     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
435         SourceTool::PEN),
436     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
437         SourceTool::PEN),
438     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
439         SourceTool::PEN),
440     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
441         SourceTool::PEN),
442     PanRecognizerDistanceMapTestCase(-1, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
443         SourceTool::PEN),
444     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
445         SourceTool::PEN),
446     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
447         SourceTool::PEN),
448     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
449         SourceTool::PEN),
450     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
451         SourceTool::PEN),
452     PanRecognizerDistanceMapTestCase(-1, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
453         SourceTool::PEN),
454 
455     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
456         SourceTool::PEN),
457     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
458         SourceTool::PEN),
459     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
460         SourceTool::PEN),
461     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
462         SourceTool::PEN),
463     PanRecognizerDistanceMapTestCase(0, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
464         SourceTool::PEN),
465     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
466         SourceTool::PEN),
467     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::DETECTING,
468         SourceTool::PEN),
469     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
470         SourceTool::PEN),
471     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
472         SourceTool::PEN),
473     PanRecognizerDistanceMapTestCase(0, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
474         SourceTool::PEN),
475     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
476         SourceTool::PEN),
477     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
478         SourceTool::PEN),
479     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
480         SourceTool::PEN),
481     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
482         SourceTool::PEN),
483     PanRecognizerDistanceMapTestCase(0, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
484         SourceTool::PEN),
485     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
486         SourceTool::PEN),
487     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
488         SourceTool::PEN),
489     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
490         SourceTool::PEN),
491     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
492         SourceTool::PEN),
493     PanRecognizerDistanceMapTestCase(0, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
494         SourceTool::PEN),
495 
496     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
497         SourceTool::PEN),
498     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
499         SourceTool::PEN),
500     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
501         SourceTool::PEN),
502     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
503         SourceTool::PEN),
504     PanRecognizerDistanceMapTestCase(1, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
505         SourceTool::PEN),
506     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
507         SourceTool::PEN),
508     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::DETECTING,
509         SourceTool::PEN),
510     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
511         SourceTool::PEN),
512     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
513         SourceTool::PEN),
514     PanRecognizerDistanceMapTestCase(1, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
515         SourceTool::PEN),
516     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
517         SourceTool::PEN),
518     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::ACCEPT,
519         SourceTool::PEN),
520     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
521         SourceTool::PEN),
522     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
523         SourceTool::PEN),
524     PanRecognizerDistanceMapTestCase(1, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
525         SourceTool::PEN),
526     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
527         SourceTool::PEN),
528     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
529         SourceTool::PEN),
530     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
531         SourceTool::PEN),
532     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
533         SourceTool::PEN),
534     PanRecognizerDistanceMapTestCase(1, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
535         SourceTool::PEN),
536 
537     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
538         SourceTool::PEN),
539     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
540         SourceTool::PEN),
541     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
542         SourceTool::PEN),
543     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
544         SourceTool::PEN),
545     PanRecognizerDistanceMapTestCase(100, SourceTool::UNKNOWN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
546         SourceTool::PEN),
547     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 0, PanRecognizer::GestureAcceptResult::DETECTING,
548         SourceTool::PEN),
549     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 1, PanRecognizer::GestureAcceptResult::DETECTING,
550         SourceTool::PEN),
551     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
552         SourceTool::PEN),
553     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
554         SourceTool::PEN),
555     PanRecognizerDistanceMapTestCase(100, SourceTool::FINGER, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
556         SourceTool::PEN),
557     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 0, PanRecognizer::GestureAcceptResult::DETECTING,
558         SourceTool::PEN),
559     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 1, PanRecognizer::GestureAcceptResult::DETECTING,
560         SourceTool::PEN),
561     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 5, PanRecognizer::GestureAcceptResult::DETECTING,
562         SourceTool::PEN),
563     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 8, PanRecognizer::GestureAcceptResult::DETECTING,
564         SourceTool::PEN),
565     PanRecognizerDistanceMapTestCase(100, SourceTool::PEN, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
566         SourceTool::PEN),
567     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 0, PanRecognizer::GestureAcceptResult::DETECTING,
568         SourceTool::PEN),
569     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 1, PanRecognizer::GestureAcceptResult::DETECTING,
570         SourceTool::PEN),
571     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 5, PanRecognizer::GestureAcceptResult::ACCEPT,
572         SourceTool::PEN),
573     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 8, PanRecognizer::GestureAcceptResult::ACCEPT,
574         SourceTool::PEN),
575     PanRecognizerDistanceMapTestCase(100, SourceTool::TOUCHPAD, 100, PanRecognizer::GestureAcceptResult::ACCEPT,
576         SourceTool::PEN),
577 };
578 } // namespace
579 
580 class PanRecognizerDistanceTestNg : public GesturesCommonTestNg {
581 public:
582     static void SetUpTestSuite();
583     static void TearDownTestSuite();
584 };
585 
SetUpTestSuite()586 void PanRecognizerDistanceTestNg::SetUpTestSuite()
587 {
588     MockPipelineContext::SetUp();
589 }
590 
TearDownTestSuite()591 void PanRecognizerDistanceTestNg::TearDownTestSuite()
592 {
593     MockPipelineContext::TearDown();
594 }
595 
596 /**
597  * @tc.name: PanRecognizerPanDistanceTest001
598  * @tc.desc: Test PanRecognizer: APITest
599  * @tc.type: FUNC
600  */
601 HWTEST_F(PanRecognizerDistanceTestNg, PanRecognizerPanDistanceTest001, TestSize.Level1)
602 {
603     int32_t caseNum = 0;
604     for (const auto &testCase : PAN_RECOGNIZER_DISTANCE_TEST_CASES) {
605         /**
606          * @tc.steps: step1. create PanRecognizer.
607          */
608         PanDirection panDirection;
609         panDirection.type = PanDirection::ALL;
610         RefPtr<PanRecognizer> panRecognizer =
611             AceType::MakeRefPtr<PanRecognizer>(1, panDirection, testCase.originDistance_);
612         ASSERT_NE(panRecognizer, nullptr);
613         panRecognizer->ResetDistanceMap();
614         /**
615          * @tc.steps: step2. DispatchTouchEvent.
616          * @tc.expected: step2. refereeState_ equals.
617          */
618         Dimension dimension = Dimension(testCase.moveDistance, DimensionUnit::VP);
619         panRecognizer->averageDistance_ = Offset(0, dimension.ConvertToPx());
620         panRecognizer->deviceTool_ = testCase.downSourceTool;
621         PanRecognizer::GestureAcceptResult result;
622         result = panRecognizer->IsPanGestureAccept();
623         EXPECT_EQ(result, testCase.expectedState);
624         caseNum++;
625     }
626 }
627 
628 /**
629  * @tc.name: PanRecognizerPanDistanceMapTest001
630  * @tc.desc: Test PanRecognizer: APITest
631  * @tc.type: FUNC
632  */
633 HWTEST_F(PanRecognizerDistanceTestNg, PanRecognizerPanDistanceMapTest001, TestSize.Level1)
634 {
635     int32_t caseNum = 0;
636     for (const auto &testCase : PAN_RECOGNIZER_DISTANCE_MAP_UNKNOWN_TEST_CASES) {
637         PanDistanceMap distanceMap = { { SourceTool::UNKNOWN, DEFAULT_PAN_DISTANCE.ConvertToPx() },
638             { SourceTool::PEN, DEFAULT_PEN_PAN_DISTANCE.ConvertToPx() } };
639         distanceMap[testCase.createSourceTool] = testCase.originDistance_;
640         /**
641          * @tc.steps: step1. create PanRecognizer.
642          */
643         PanDirection panDirection;
644         panDirection.type = PanDirection::ALL;
645         RefPtr<PanRecognizer> panRecognizer = AceType::MakeRefPtr<PanRecognizer>(1, panDirection, distanceMap);
646         ASSERT_NE(panRecognizer, nullptr);
647         panRecognizer->ResetDistanceMap();
648         /**
649          * @tc.steps: step2. DispatchTouchEvent.
650          * @tc.expected: step2. refereeState_ equals.
651          */
652 
653         Dimension dimension = Dimension(testCase.moveDistance, DimensionUnit::VP);
654         panRecognizer->averageDistance_ = Offset(0, dimension.ConvertToPx());
655         panRecognizer->deviceTool_ = testCase.downSourceTool;
656         PanRecognizer::GestureAcceptResult result;
657         result = panRecognizer->IsPanGestureAccept();
658         EXPECT_EQ(result, testCase.expectedState);
659         caseNum++;
660     }
661 }
662 
663 /**
664  * @tc.name: PanRecognizerPanDistanceMapTest002
665  * @tc.desc: Test PanRecognizer: APITest
666  * @tc.type: FUNC
667  */
668 HWTEST_F(PanRecognizerDistanceTestNg, PanRecognizerPanDistanceMapTest002, TestSize.Level1)
669 {
670     int32_t caseNum = 0;
671     for (const auto &testCase : PAN_RECOGNIZER_DISTANCE_MAP_FINGER_TEST_CASES) {
672         PanDistanceMap distanceMap = { { SourceTool::UNKNOWN, DEFAULT_PAN_DISTANCE.ConvertToPx() },
673             { SourceTool::PEN, DEFAULT_PEN_PAN_DISTANCE.ConvertToPx() } };
674         distanceMap[testCase.createSourceTool] = testCase.originDistance_;
675         /**
676          * @tc.steps: step1. create PanRecognizer.
677          */
678         PanDirection panDirection;
679         panDirection.type = PanDirection::ALL;
680         RefPtr<PanRecognizer> panRecognizer = AceType::MakeRefPtr<PanRecognizer>(1, panDirection, distanceMap);
681         ASSERT_NE(panRecognizer, nullptr);
682         panRecognizer->ResetDistanceMap();
683         /**
684          * @tc.steps: step2. DispatchTouchEvent.
685          * @tc.expected: step2. refereeState_ equals.
686          */
687         Dimension dimension = Dimension(testCase.moveDistance, DimensionUnit::VP);
688         panRecognizer->averageDistance_ = Offset(0, dimension.ConvertToPx());
689         panRecognizer->deviceTool_ = testCase.downSourceTool;
690         PanRecognizer::GestureAcceptResult result;
691         result = panRecognizer->IsPanGestureAccept();
692         EXPECT_EQ(result, testCase.expectedState);
693         caseNum++;
694     }
695 }
696 
697 /**
698  * @tc.name: PanRecognizerPanDistanceMapTest003
699  * @tc.desc: Test PanRecognizer: APITest
700  * @tc.type: FUNC
701  */
702 HWTEST_F(PanRecognizerDistanceTestNg, PanRecognizerPanDistanceMapTest003, TestSize.Level1)
703 {
704     int32_t caseNum = 0;
705     for (const auto &testCase : PAN_RECOGNIZER_DISTANCE_MAP_PEN_TEST_CASES) {
706         PanDistanceMap distanceMap = { { SourceTool::UNKNOWN, DEFAULT_PAN_DISTANCE.ConvertToPx() },
707             { SourceTool::PEN, DEFAULT_PEN_PAN_DISTANCE.ConvertToPx() } };
708         distanceMap[testCase.createSourceTool] = testCase.originDistance_ > 0 ?
709             testCase.originDistance_ : DEFAULT_PEN_PAN_DISTANCE.ConvertToPx();
710         /**
711          * @tc.steps: step1. create PanRecognizer.
712          */
713         PanDirection panDirection;
714         panDirection.type = PanDirection::ALL;
715         RefPtr<PanRecognizer> panRecognizer = AceType::MakeRefPtr<PanRecognizer>(1, panDirection, distanceMap);
716         ASSERT_NE(panRecognizer, nullptr);
717         panRecognizer->ResetDistanceMap();
718         /**
719          * @tc.steps: step2. DispatchTouchEvent.
720          * @tc.expected: step2. refereeState_ equals.
721          */
722         Dimension dimension = Dimension(testCase.moveDistance, DimensionUnit::VP);
723         panRecognizer->averageDistance_ = Offset(0, dimension.ConvertToPx());
724         panRecognizer->deviceTool_ = testCase.downSourceTool;
725         PanRecognizer::GestureAcceptResult result;
726         result = panRecognizer->IsPanGestureAccept();
727         EXPECT_EQ(result, testCase.expectedState);
728         caseNum++;
729     }
730 }
731 /**
732  * @tc.name: PanRecognizerPanDistanceMapTest004
733  * @tc.desc: Test GestureEventHub SetPanEvent Distance
734  * @tc.type: FUNC
735  */
736 HWTEST_F(PanRecognizerDistanceTestNg, PanRecognizerPanDistanceMapTest004, TestSize.Level1)
737 {
738     /**
739     * @tc.steps: step1. create GestureEventHub.
740     */
741     auto frameNode = FrameNode::CreateFrameNode("myButton", 100, AceType::MakeRefPtr<Pattern>());
742     auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
743     /**
744      * @tc.steps: step2. SetPanEvent EVENT_PAN_GESTURE_LEFT|EVENT_PAN_GESTURE_UP
745      */
746     PanDirection panDirection;
747     panDirection.type = PanDirection::RIGHT | PanDirection::UP;
748     auto panEvent = AceType::MakeRefPtr<PanEvent>(nullptr, nullptr, nullptr, nullptr);
749     PanDistanceMap distanceMap = { { SourceTool::UNKNOWN, 1 } };
750     gestureEventHub->AddPanEvent(panEvent, panDirection, 1, distanceMap);
751     /**
752      * @tc.steps: step3. Calculate pan recognizer distance.
753      */
754     auto panEventActuator = gestureEventHub->panEventActuator_;
755     ASSERT_NE(panEventActuator, nullptr);
756     auto panRecognizer = panEventActuator->panRecognizer_;
757     ASSERT_NE(panRecognizer, nullptr);
758     EXPECT_EQ(panRecognizer->GetDistance(), 1);
759 }
760 } // namespace OHOS::Ace::NG