Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: ui/events/gesture_detection/motion_event_generic_unittest.cc

Issue 1287103004: Sync ui/events to chromium @ https://codereview.chromium.org/1210203002 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: rebased Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // MSVC++ requires this to be set before any other includes to get M_PI.
6 #define _USE_MATH_DEFINES
7
8 #include <cmath>
9
5 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
6 #include "ui/events/event_constants.h" 11 #include "ui/events/event_constants.h"
7 #include "ui/events/gesture_detection/motion_event_generic.h" 12 #include "ui/events/gesture_detection/motion_event_generic.h"
13 #include "ui/events/test/motion_event_test_utils.h"
8 14
9 namespace ui { 15 namespace ui {
10 16
11 TEST(MotionEventGenericTest, Basic) { 17 TEST(MotionEventGenericTest, Basic) {
12 base::TimeTicks event_time = base::TimeTicks::Now(); 18 base::TimeTicks event_time = base::TimeTicks::Now();
13 MotionEventGeneric event( 19 MotionEventGeneric event(
14 MotionEvent::ACTION_DOWN, event_time, PointerProperties()); 20 MotionEvent::ACTION_DOWN, event_time, PointerProperties());
15 EXPECT_EQ(1U, event.GetPointerCount()); 21 EXPECT_EQ(1U, event.GetPointerCount());
16 EXPECT_EQ(0U, event.GetHistorySize()); 22 EXPECT_EQ(0U, event.GetHistorySize());
17 EXPECT_EQ(event_time, event.GetEventTime()); 23 EXPECT_EQ(event_time, event.GetEventTime());
18 24
19 event.PushPointer(PointerProperties(8.3f, 4.7f)); 25 DCHECK_NE(0U, event.GetUniqueEventId());
26 event.set_unique_event_id(123456U);
27 EXPECT_EQ(123456U, event.GetUniqueEventId());
28
29 event.PushPointer(PointerProperties(8.3f, 4.7f, 0.9f));
20 ASSERT_EQ(2U, event.GetPointerCount()); 30 ASSERT_EQ(2U, event.GetPointerCount());
21 EXPECT_EQ(8.3f, event.GetX(1)); 31 EXPECT_EQ(8.3f, event.GetX(1));
22 EXPECT_EQ(4.7f, event.GetY(1)); 32 EXPECT_EQ(4.7f, event.GetY(1));
23 33
24 event.PushPointer(PointerProperties(2.3f, -3.7f)); 34 event.PushPointer(PointerProperties(2.3f, -3.7f, 5.8f));
25 ASSERT_EQ(3U, event.GetPointerCount()); 35 ASSERT_EQ(3U, event.GetPointerCount());
26 EXPECT_EQ(2.3f, event.GetX(2)); 36 EXPECT_EQ(2.3f, event.GetX(2));
27 EXPECT_EQ(-3.7f, event.GetY(2)); 37 EXPECT_EQ(-3.7f, event.GetY(2));
28 38
29 event.set_id(1); 39 event.pointer(0).id = 3;
30 EXPECT_EQ(1, event.GetId()); 40 EXPECT_EQ(3, event.GetPointerId(0));
31 41
32 event.set_action(MotionEvent::ACTION_POINTER_DOWN); 42 event.set_action(MotionEvent::ACTION_POINTER_DOWN);
33 EXPECT_EQ(MotionEvent::ACTION_POINTER_DOWN, event.GetAction()); 43 EXPECT_EQ(MotionEvent::ACTION_POINTER_DOWN, event.GetAction());
34 44
35 event_time += base::TimeDelta::FromMilliseconds(5); 45 event_time += base::TimeDelta::FromMilliseconds(5);
36 event.set_event_time(event_time); 46 event.set_event_time(event_time);
37 EXPECT_EQ(event_time, event.GetEventTime()); 47 EXPECT_EQ(event_time, event.GetEventTime());
38 48
39 event.set_button_state(MotionEvent::BUTTON_PRIMARY); 49 event.set_button_state(MotionEvent::BUTTON_PRIMARY);
40 EXPECT_EQ(MotionEvent::BUTTON_PRIMARY, event.GetButtonState()); 50 EXPECT_EQ(MotionEvent::BUTTON_PRIMARY, event.GetButtonState());
41 51
42 event.set_flags(EF_ALT_DOWN | EF_SHIFT_DOWN); 52 event.set_flags(EF_ALT_DOWN | EF_SHIFT_DOWN);
43 EXPECT_EQ(EF_ALT_DOWN | EF_SHIFT_DOWN, event.GetFlags()); 53 EXPECT_EQ(EF_ALT_DOWN | EF_SHIFT_DOWN, event.GetFlags());
44 54
45 event.set_action_index(1); 55 event.set_action_index(1);
46 EXPECT_EQ(1, event.GetActionIndex()); 56 EXPECT_EQ(1, event.GetActionIndex());
57
58 event.set_action(MotionEvent::ACTION_MOVE);
59 EXPECT_EQ(MotionEvent::ACTION_MOVE, event.GetAction());
60
61 PointerProperties historical_pointer0(1.2f, 2.4f, 1.f);
62 PointerProperties historical_pointer1(2.4f, 4.8f, 2.f);
63 PointerProperties historical_pointer2(4.8f, 9.6f, 3.f);
64 MotionEventGeneric historical_event(
65 MotionEvent::ACTION_MOVE,
66 event_time - base::TimeDelta::FromMilliseconds(5),
67 historical_pointer0);
68 historical_event.PushPointer(historical_pointer1);
69 historical_event.PushPointer(historical_pointer2);
70
71 event.PushHistoricalEvent(historical_event.Clone());
72 EXPECT_EQ(1U, event.GetHistorySize());
73 EXPECT_EQ(event_time - base::TimeDelta::FromMilliseconds(5),
74 event.GetHistoricalEventTime(0));
75 EXPECT_EQ(1.2f, event.GetHistoricalX(0, 0));
76 EXPECT_EQ(2.4f, event.GetHistoricalY(0, 0));
77 EXPECT_EQ(1.f, event.GetHistoricalTouchMajor(0, 0));
78 EXPECT_EQ(2.4f, event.GetHistoricalX(1, 0));
79 EXPECT_EQ(4.8f, event.GetHistoricalY(1, 0));
80 EXPECT_EQ(2.f, event.GetHistoricalTouchMajor(1, 0));
81 EXPECT_EQ(4.8f, event.GetHistoricalX(2, 0));
82 EXPECT_EQ(9.6f, event.GetHistoricalY(2, 0));
83 EXPECT_EQ(3.f, event.GetHistoricalTouchMajor(2, 0));
47 } 84 }
48 85
49 TEST(MotionEventGenericTest, Clone) { 86 TEST(MotionEventGenericTest, Clone) {
50 MotionEventGeneric event(MotionEvent::ACTION_DOWN, 87 MotionEventGeneric event(MotionEvent::ACTION_DOWN,
51 base::TimeTicks::Now(), 88 base::TimeTicks::Now(),
52 PointerProperties(8.3f, 4.7f)); 89 PointerProperties(8.3f, 4.7f, 2.f));
53 event.set_id(1);
54 event.set_button_state(MotionEvent::BUTTON_PRIMARY); 90 event.set_button_state(MotionEvent::BUTTON_PRIMARY);
55 91
56 scoped_ptr<MotionEvent> clone = event.Clone(); 92 scoped_ptr<MotionEvent> clone = event.Clone();
57 ASSERT_TRUE(clone); 93 ASSERT_TRUE(clone);
58 EXPECT_EQ(event, *clone); 94 EXPECT_EQ(event.GetUniqueEventId(), clone->GetUniqueEventId());
95 EXPECT_EQ(test::ToString(event), test::ToString(*clone));
96 }
97
98 TEST(MotionEventGenericTest, CloneWithHistory) {
99 base::TimeTicks event_time = base::TimeTicks::Now();
100 base::TimeTicks historical_event_time =
101 event_time - base::TimeDelta::FromMilliseconds(5);
102
103 PointerProperties pointer(8.3f, 4.7f, 10.1f);
104 MotionEventGeneric event(MotionEvent::ACTION_MOVE, event_time, pointer);
105
106 PointerProperties historical_pointer(3.4f, -4.3f, 11.5);
107 scoped_ptr<MotionEvent> historical_event(new MotionEventGeneric(
108 MotionEvent::ACTION_MOVE, historical_event_time, historical_pointer));
109
110 event.PushHistoricalEvent(historical_event.Pass());
111 EXPECT_EQ(1U, event.GetHistorySize());
112
113 scoped_ptr<MotionEvent> clone = event.Clone();
114 ASSERT_TRUE(clone);
115 EXPECT_EQ(event.GetUniqueEventId(), clone->GetUniqueEventId());
116 EXPECT_EQ(test::ToString(event), test::ToString(*clone));
59 } 117 }
60 118
61 TEST(MotionEventGenericTest, Cancel) { 119 TEST(MotionEventGenericTest, Cancel) {
62 MotionEventGeneric event(MotionEvent::ACTION_UP, 120 MotionEventGeneric event(MotionEvent::ACTION_UP,
63 base::TimeTicks::Now(), 121 base::TimeTicks::Now(),
64 PointerProperties(8.7f, 4.3f)); 122 PointerProperties(8.7f, 4.3f, 1.f));
65 event.set_id(2);
66 event.set_button_state(MotionEvent::BUTTON_SECONDARY); 123 event.set_button_state(MotionEvent::BUTTON_SECONDARY);
67 124
68 scoped_ptr<MotionEvent> cancel = event.Cancel(); 125 scoped_ptr<MotionEvent> cancel = event.Cancel();
69 event.set_action(MotionEvent::ACTION_CANCEL); 126 event.set_action(MotionEvent::ACTION_CANCEL);
70 ASSERT_TRUE(cancel); 127 ASSERT_TRUE(cancel);
71 EXPECT_EQ(event, *cancel); 128 EXPECT_NE(event.GetUniqueEventId(), cancel->GetUniqueEventId());
129 EXPECT_EQ(test::ToString(event), test::ToString(*cancel));
72 } 130 }
73 131
74 TEST(MotionEventGenericTest, FindPointerIndexOfId) { 132 TEST(MotionEventGenericTest, FindPointerIndexOfId) {
75 base::TimeTicks event_time = base::TimeTicks::Now(); 133 base::TimeTicks event_time = base::TimeTicks::Now();
76 PointerProperties pointer; 134 PointerProperties pointer;
77 pointer.id = 0; 135 pointer.id = 0;
78 MotionEventGeneric event0(MotionEvent::ACTION_DOWN, event_time, pointer); 136 MotionEventGeneric event0(MotionEvent::ACTION_DOWN, event_time, pointer);
79 EXPECT_EQ(0, event0.FindPointerIndexOfId(0)); 137 EXPECT_EQ(0, event0.FindPointerIndexOfId(0));
80 EXPECT_EQ(-1, event0.FindPointerIndexOfId(1)); 138 EXPECT_EQ(-1, event0.FindPointerIndexOfId(1));
81 EXPECT_EQ(-1, event0.FindPointerIndexOfId(-1)); 139 EXPECT_EQ(-1, event0.FindPointerIndexOfId(-1));
82 140
83 MotionEventGeneric event1(event0); 141 MotionEventGeneric event1(event0);
84 pointer.id = 7; 142 pointer.id = 7;
85 event1.PushPointer(pointer); 143 EXPECT_EQ(1u, event1.PushPointer(pointer));
86 EXPECT_EQ(0, event1.FindPointerIndexOfId(0)); 144 EXPECT_EQ(0, event1.FindPointerIndexOfId(0));
87 EXPECT_EQ(1, event1.FindPointerIndexOfId(7)); 145 EXPECT_EQ(1, event1.FindPointerIndexOfId(7));
88 EXPECT_EQ(-1, event1.FindPointerIndexOfId(6)); 146 EXPECT_EQ(-1, event1.FindPointerIndexOfId(6));
89 EXPECT_EQ(-1, event1.FindPointerIndexOfId(1)); 147 EXPECT_EQ(-1, event1.FindPointerIndexOfId(1));
90 148
91 MotionEventGeneric event2(event1); 149 MotionEventGeneric event2(event1);
92 pointer.id = 3; 150 pointer.id = 3;
93 event2.PushPointer(pointer); 151 EXPECT_EQ(2u, event2.PushPointer(pointer));
94 EXPECT_EQ(0, event2.FindPointerIndexOfId(0)); 152 EXPECT_EQ(0, event2.FindPointerIndexOfId(0));
95 EXPECT_EQ(1, event2.FindPointerIndexOfId(7)); 153 EXPECT_EQ(1, event2.FindPointerIndexOfId(7));
96 EXPECT_EQ(2, event2.FindPointerIndexOfId(3)); 154 EXPECT_EQ(2, event2.FindPointerIndexOfId(3));
97 EXPECT_EQ(-1, event2.FindPointerIndexOfId(1)); 155 EXPECT_EQ(-1, event2.FindPointerIndexOfId(1));
98 EXPECT_EQ(-1, event2.FindPointerIndexOfId(2)); 156 EXPECT_EQ(-1, event2.FindPointerIndexOfId(2));
99 } 157 }
100 158
159 TEST(MotionEventGenericTest, RemovePointerAt) {
160 base::TimeTicks event_time = base::TimeTicks::Now();
161 PointerProperties pointer;
162 pointer.id = 0;
163 MotionEventGeneric event(MotionEvent::ACTION_DOWN, event_time, pointer);
164
165 pointer.id = 7;
166 EXPECT_EQ(1u, event.PushPointer(pointer));
167 EXPECT_EQ(2u, event.GetPointerCount());
168
169 // Remove from the end.
170 event.RemovePointerAt(1);
171 EXPECT_EQ(1u, event.GetPointerCount());
172 EXPECT_EQ(-1, event.FindPointerIndexOfId(7));
173 EXPECT_EQ(0, event.FindPointerIndexOfId(0));
174
175 EXPECT_EQ(1u, event.PushPointer(pointer));
176 EXPECT_EQ(2u, event.GetPointerCount());
177
178 // Remove from the beginning.
179 event.RemovePointerAt(0);
180 EXPECT_EQ(1u, event.GetPointerCount());
181 EXPECT_EQ(0, event.FindPointerIndexOfId(7));
182 EXPECT_EQ(-1, event.FindPointerIndexOfId(0));
183 }
184
185 TEST(MotionEventGenericTest, AxisAndOrientation) {
186 {
187 PointerProperties properties;
188 float radius_x = 10;
189 float radius_y = 5;
190 float rotation_angle_deg = 0;
191 properties.SetAxesAndOrientation(radius_x, radius_y, rotation_angle_deg);
192 EXPECT_EQ(20, properties.touch_major);
193 EXPECT_EQ(10, properties.touch_minor);
194 EXPECT_NEAR(-M_PI_2, properties.orientation, 0.001);
195 }
196 {
197 PointerProperties properties;
198 float radius_x = 5;
199 float radius_y = 10;
200 float rotation_angle_deg = 0;
201 properties.SetAxesAndOrientation(radius_x, radius_y, rotation_angle_deg);
202 EXPECT_EQ(20, properties.touch_major);
203 EXPECT_EQ(10, properties.touch_minor);
204 EXPECT_NEAR(0, properties.orientation, 0.001);
205 }
206 {
207 PointerProperties properties;
208 float radius_x = 10;
209 float radius_y = 5;
210 float rotation_angle_deg = 179.99f;
211 properties.SetAxesAndOrientation(radius_x, radius_y, rotation_angle_deg);
212 EXPECT_EQ(20, properties.touch_major);
213 EXPECT_EQ(10, properties.touch_minor);
214 EXPECT_NEAR(M_PI_2, properties.orientation, 0.001);
215 }
216 {
217 PointerProperties properties;
218 float radius_x = 10;
219 float radius_y = 5;
220 float rotation_angle_deg = 90;
221 properties.SetAxesAndOrientation(radius_x, radius_y, rotation_angle_deg);
222 EXPECT_EQ(20, properties.touch_major);
223 EXPECT_EQ(10, properties.touch_minor);
224 EXPECT_NEAR(0, properties.orientation, 0.001);
225 }
226 }
227
228 TEST(MotionEventGenericTest, ToString) {
229 base::TimeTicks event_time = base::TimeTicks::Now();
230 base::TimeTicks historical_event_time0 =
231 event_time - base::TimeDelta::FromMilliseconds(10);
232 base::TimeTicks historical_event_time1 =
233 event_time - base::TimeDelta::FromMilliseconds(5);
234
235 PointerProperties pointer0(1, 2, 3);
236 pointer0.id = 7;
237 pointer0.pressure = 10;
238 pointer0.touch_minor = 15;
239 pointer0.touch_major = 20;
240 pointer0.orientation = 1;
241
242 PointerProperties pointer1(4, 5, 6);
243 pointer1.id = 3;
244 pointer0.pressure = 25;
245 pointer0.touch_minor = 30;
246 pointer0.touch_major = 35;
247 pointer0.orientation = -1;
248
249 MotionEventGeneric event(MotionEvent::ACTION_MOVE, event_time, pointer0);
250 event.PushPointer(pointer1);
251
252 pointer0.x += 50;
253 pointer1.x -= 50;
254 scoped_ptr<MotionEventGeneric> historical_event0(new MotionEventGeneric(
255 MotionEvent::ACTION_MOVE, historical_event_time0, pointer0));
256 historical_event0->PushPointer(pointer1);
257
258 pointer0.x += 100;
259 pointer1.x -= 100;
260 scoped_ptr<MotionEventGeneric> historical_event1(new MotionEventGeneric(
261 MotionEvent::ACTION_MOVE, historical_event_time1, pointer0));
262 historical_event1->PushPointer(pointer1);
263
264 event.PushHistoricalEvent(historical_event0.Pass());
265 event.PushHistoricalEvent(historical_event1.Pass());
266 ASSERT_EQ(2U, event.GetHistorySize());
267 ASSERT_EQ(2U, event.GetPointerCount());
268
269 // Do a basic smoke exercise of event stringification to ensure things don't
270 // explode in the process.
271 std::string event_string = test::ToString(event);
272 EXPECT_FALSE(event_string.empty());
273 }
274
101 } // namespace ui 275 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/gesture_detection/motion_event_generic.cc ('k') | ui/events/gesture_detection/scale_gesture_detector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698