OLD | NEW |
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. | 5 // MSVC++ requires this to be set before any other includes to get M_PI. |
6 #define _USE_MATH_DEFINES | 6 #define _USE_MATH_DEFINES |
7 | 7 |
8 #include <cmath> | 8 #include <cmath> |
9 | 9 |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 | 101 |
102 TouchEvent release1 = TouchWithType(ET_TOUCH_RELEASED, ids[1]); | 102 TouchEvent release1 = TouchWithType(ET_TOUCH_RELEASED, ids[1]); |
103 EXPECT_TRUE(event.OnTouch(release1)); | 103 EXPECT_TRUE(event.OnTouch(release1)); |
104 event.CleanupRemovedTouchPoints(release1); | 104 event.CleanupRemovedTouchPoints(release1); |
105 EXPECT_EQ(2U, event.GetPointerCount()); | 105 EXPECT_EQ(2U, event.GetPointerCount()); |
106 | 106 |
107 EXPECT_EQ(ids[0], event.GetPointerId(0)); | 107 EXPECT_EQ(ids[0], event.GetPointerId(0)); |
108 EXPECT_EQ(ids[2], event.GetPointerId(1)); | 108 EXPECT_EQ(ids[2], event.GetPointerId(1)); |
109 | 109 |
110 // Test cloning of pointer count and id information. | 110 // Test cloning of pointer count and id information. |
111 // TODO(mustaq): Make a separate clone test | 111 // TODO(mustaq): Make a separate clone test, crbug.com/450655 |
112 scoped_ptr<MotionEvent> clone = event.Clone(); | 112 scoped_ptr<MotionEvent> clone = event.Clone(); |
113 EXPECT_EQ(2U, clone->GetPointerCount()); | 113 EXPECT_EQ(2U, clone->GetPointerCount()); |
114 EXPECT_EQ(ids[0], clone->GetPointerId(0)); | 114 EXPECT_EQ(ids[0], clone->GetPointerId(0)); |
115 EXPECT_EQ(ids[2], clone->GetPointerId(1)); | 115 EXPECT_EQ(ids[2], clone->GetPointerId(1)); |
116 EXPECT_EQ(test::ToString(event), test::ToString(*clone)); | 116 EXPECT_EQ(test::ToString(event), test::ToString(*clone)); |
117 | 117 |
118 TouchEvent release0 = TouchWithType(ET_TOUCH_RELEASED, ids[0]); | 118 TouchEvent release0 = TouchWithType(ET_TOUCH_RELEASED, ids[0]); |
119 EXPECT_TRUE(event.OnTouch(release0)); | 119 EXPECT_TRUE(event.OnTouch(release0)); |
120 event.CleanupRemovedTouchPoints(release0); | 120 event.CleanupRemovedTouchPoints(release0); |
121 EXPECT_EQ(1U, event.GetPointerCount()); | 121 EXPECT_EQ(1U, event.GetPointerCount()); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 EXPECT_TRUE(event.OnTouch(press1)); | 200 EXPECT_TRUE(event.OnTouch(press1)); |
201 | 201 |
202 EXPECT_EQ(2U, event.GetPointerCount()); | 202 EXPECT_EQ(2U, event.GetPointerCount()); |
203 EXPECT_FLOAT_EQ(x, event.GetX(1)); | 203 EXPECT_FLOAT_EQ(x, event.GetX(1)); |
204 EXPECT_FLOAT_EQ(y, event.GetY(1)); | 204 EXPECT_FLOAT_EQ(y, event.GetY(1)); |
205 EXPECT_FLOAT_EQ(raw_x, event.GetRawX(1)); | 205 EXPECT_FLOAT_EQ(raw_x, event.GetRawX(1)); |
206 EXPECT_FLOAT_EQ(raw_y, event.GetRawY(1)); | 206 EXPECT_FLOAT_EQ(raw_y, event.GetRawY(1)); |
207 | 207 |
208 // Test cloning of pointer location information. | 208 // Test cloning of pointer location information. |
209 scoped_ptr<MotionEvent> clone = event.Clone(); | 209 scoped_ptr<MotionEvent> clone = event.Clone(); |
210 { | 210 EXPECT_EQ(test::ToString(event), test::ToString(*clone)); |
211 EXPECT_EQ(test::ToString(event), test::ToString(*clone)); | 211 EXPECT_EQ(2U, clone->GetPointerCount()); |
212 EXPECT_EQ(2U, clone->GetPointerCount()); | 212 EXPECT_FLOAT_EQ(x, clone->GetX(1)); |
213 EXPECT_FLOAT_EQ(x, clone->GetX(1)); | 213 EXPECT_FLOAT_EQ(y, clone->GetY(1)); |
214 EXPECT_FLOAT_EQ(y, clone->GetY(1)); | 214 EXPECT_FLOAT_EQ(raw_x, clone->GetRawX(1)); |
215 EXPECT_FLOAT_EQ(raw_x, clone->GetRawX(1)); | 215 EXPECT_FLOAT_EQ(raw_y, clone->GetRawY(1)); |
216 EXPECT_FLOAT_EQ(raw_y, clone->GetRawY(1)); | |
217 } | |
218 | 216 |
219 x = 27.9f; | 217 x = 27.9f; |
220 y = 22.3f; | 218 y = 22.3f; |
221 raw_x = x + kRawOffsetX; | 219 raw_x = x + kRawOffsetX; |
222 raw_y = y + kRawOffsetY; | 220 raw_y = y + kRawOffsetY; |
223 TouchEvent move1 = | 221 TouchEvent move1 = |
224 TouchWithPosition(ET_TOUCH_MOVED, ids[1], x, y, raw_x, raw_y); | 222 TouchWithPosition(ET_TOUCH_MOVED, ids[1], x, y, raw_x, raw_y); |
225 EXPECT_TRUE(event.OnTouch(move1)); | 223 EXPECT_TRUE(event.OnTouch(move1)); |
226 | 224 |
227 EXPECT_FLOAT_EQ(x, event.GetX(1)); | 225 EXPECT_FLOAT_EQ(x, event.GetX(1)); |
(...skipping 12 matching lines...) Expand all Loading... |
240 EXPECT_FLOAT_EQ(x, event.GetX(0)); | 238 EXPECT_FLOAT_EQ(x, event.GetX(0)); |
241 EXPECT_FLOAT_EQ(y, event.GetY(0)); | 239 EXPECT_FLOAT_EQ(y, event.GetY(0)); |
242 EXPECT_FLOAT_EQ(raw_x, event.GetRawX(0)); | 240 EXPECT_FLOAT_EQ(raw_x, event.GetRawX(0)); |
243 EXPECT_FLOAT_EQ(raw_y, event.GetRawY(0)); | 241 EXPECT_FLOAT_EQ(raw_y, event.GetRawY(0)); |
244 } | 242 } |
245 | 243 |
246 TEST(MotionEventAuraTest, TapParams) { | 244 TEST(MotionEventAuraTest, TapParams) { |
247 // Test that touch params are stored correctly. | 245 // Test that touch params are stored correctly. |
248 MotionEventAura event; | 246 MotionEventAura event; |
249 | 247 |
250 int ids[] = {15, 13}; | 248 int ids[] = {15, 13, 25, 23}; |
251 | 249 |
252 float radius_x; | 250 float radius_x; |
253 float radius_y; | 251 float radius_y; |
254 float rotation_angle; | 252 float rotation_angle; |
255 float pressure; | 253 float pressure; |
256 | 254 |
| 255 // Test case: radius_x > radius_y, rotation_angle < 90 |
257 radius_x = 123.45f; | 256 radius_x = 123.45f; |
258 radius_y = 67.89f; | 257 radius_y = 67.89f; |
259 rotation_angle = 23.f; | 258 rotation_angle = 23.f; |
260 pressure = 0.123f; | 259 pressure = 0.123f; |
261 TouchEvent press0 = TouchWithTapParams( | 260 TouchEvent press0 = TouchWithTapParams( |
262 ET_TOUCH_PRESSED, ids[0], radius_x, radius_y, rotation_angle, pressure); | 261 ET_TOUCH_PRESSED, ids[0], radius_x, radius_y, rotation_angle, pressure); |
263 EXPECT_TRUE(event.OnTouch(press0)); | 262 EXPECT_TRUE(event.OnTouch(press0)); |
264 | 263 |
265 EXPECT_EQ(1U, event.GetPointerCount()); | 264 EXPECT_EQ(1U, event.GetPointerCount()); |
266 EXPECT_FLOAT_EQ(radius_x, event.GetTouchMajor(0) / 2); | 265 EXPECT_FLOAT_EQ(radius_x, event.GetTouchMajor(0) / 2); |
267 EXPECT_FLOAT_EQ(radius_y, event.GetTouchMinor(0) / 2); | 266 EXPECT_FLOAT_EQ(radius_y, event.GetTouchMinor(0) / 2); |
268 EXPECT_FLOAT_EQ(rotation_angle, event.GetOrientation(0) * 180 / M_PI + 90); | 267 EXPECT_FLOAT_EQ(rotation_angle, event.GetOrientation(0) * 180 / M_PI + 90); |
269 EXPECT_FLOAT_EQ(pressure, event.GetPressure(0)); | 268 EXPECT_FLOAT_EQ(pressure, event.GetPressure(0)); |
270 | 269 |
| 270 // Test case: radius_x < radius_y, rotation_angle < 90 |
271 radius_x = 67.89f; | 271 radius_x = 67.89f; |
272 radius_y = 123.45f; | 272 radius_y = 123.45f; |
273 rotation_angle = 46.f; | 273 rotation_angle = 46.f; |
274 pressure = 0.456f; | 274 pressure = 0.456f; |
275 TouchEvent press1 = TouchWithTapParams( | 275 TouchEvent press1 = TouchWithTapParams( |
276 ET_TOUCH_PRESSED, ids[1], radius_x, radius_y, rotation_angle, pressure); | 276 ET_TOUCH_PRESSED, ids[1], radius_x, radius_y, rotation_angle, pressure); |
277 EXPECT_TRUE(event.OnTouch(press1)); | 277 EXPECT_TRUE(event.OnTouch(press1)); |
278 | 278 |
279 EXPECT_EQ(2U, event.GetPointerCount()); | 279 EXPECT_EQ(2U, event.GetPointerCount()); |
280 EXPECT_FLOAT_EQ(radius_y, event.GetTouchMajor(1) / 2); | 280 EXPECT_FLOAT_EQ(radius_y, event.GetTouchMajor(1) / 2); |
281 EXPECT_FLOAT_EQ(radius_x, event.GetTouchMinor(1) / 2); | 281 EXPECT_FLOAT_EQ(radius_x, event.GetTouchMinor(1) / 2); |
282 EXPECT_FLOAT_EQ(rotation_angle, event.GetOrientation(1) * 180 / M_PI); | 282 EXPECT_FLOAT_EQ(rotation_angle, event.GetOrientation(1) * 180 / M_PI); |
283 EXPECT_FLOAT_EQ(pressure, event.GetPressure(1)); | 283 EXPECT_FLOAT_EQ(pressure, event.GetPressure(1)); |
284 | 284 |
285 // Test cloning of tap params | 285 // Test cloning of tap params |
| 286 // TODO(mustaq): Make a separate clone test, crbug.com/450655 |
286 scoped_ptr<MotionEvent> clone = event.Clone(); | 287 scoped_ptr<MotionEvent> clone = event.Clone(); |
287 { | 288 EXPECT_EQ(test::ToString(event), test::ToString(*clone)); |
288 EXPECT_EQ(test::ToString(event), test::ToString(*clone)); | 289 EXPECT_EQ(2U, clone->GetPointerCount()); |
289 EXPECT_EQ(2U, clone->GetPointerCount()); | 290 EXPECT_FLOAT_EQ(radius_y, clone->GetTouchMajor(1) / 2); |
290 EXPECT_FLOAT_EQ(radius_y, clone->GetTouchMajor(1) / 2); | 291 EXPECT_FLOAT_EQ(radius_x, clone->GetTouchMinor(1) / 2); |
291 EXPECT_FLOAT_EQ(radius_x, clone->GetTouchMinor(1) / 2); | 292 EXPECT_FLOAT_EQ(rotation_angle, clone->GetOrientation(1) * 180 / M_PI); |
292 EXPECT_FLOAT_EQ(rotation_angle, clone->GetOrientation(1) * 180 / M_PI); | 293 EXPECT_FLOAT_EQ(pressure, clone->GetPressure(1)); |
293 EXPECT_FLOAT_EQ(pressure, clone->GetPressure(1)); | |
294 } | |
295 | 294 |
| 295 // TODO(mustaq): The move test seems out-of-scope here, crbug.com/450655 |
296 radius_x = 76.98f; | 296 radius_x = 76.98f; |
297 radius_y = 321.54f; | 297 radius_y = 321.54f; |
298 rotation_angle = 64.f; | 298 rotation_angle = 64.f; |
299 pressure = 0.654f; | 299 pressure = 0.654f; |
300 TouchEvent move1 = TouchWithTapParams( | 300 TouchEvent move1 = TouchWithTapParams( |
301 ET_TOUCH_MOVED, ids[1], radius_x, radius_y, rotation_angle, pressure); | 301 ET_TOUCH_MOVED, ids[1], radius_x, radius_y, rotation_angle, pressure); |
302 move1.set_location(gfx::Point(20, 21)); | 302 move1.set_location(gfx::Point(20, 21)); |
303 EXPECT_TRUE(event.OnTouch(move1)); | 303 EXPECT_TRUE(event.OnTouch(move1)); |
304 | 304 |
305 EXPECT_EQ(2U, event.GetPointerCount()); | 305 EXPECT_EQ(2U, event.GetPointerCount()); |
306 EXPECT_FLOAT_EQ(radius_y, event.GetTouchMajor(1) / 2); | 306 EXPECT_FLOAT_EQ(radius_y, event.GetTouchMajor(1) / 2); |
307 EXPECT_FLOAT_EQ(radius_x, event.GetTouchMinor(1) / 2); | 307 EXPECT_FLOAT_EQ(radius_x, event.GetTouchMinor(1) / 2); |
308 EXPECT_FLOAT_EQ(rotation_angle, event.GetOrientation(1) * 180 / M_PI); | 308 EXPECT_FLOAT_EQ(rotation_angle, event.GetOrientation(1) * 180 / M_PI); |
309 EXPECT_FLOAT_EQ(pressure, event.GetPressure(1)); | 309 EXPECT_FLOAT_EQ(pressure, event.GetPressure(1)); |
| 310 |
| 311 // Test case: radius_x > radius_y, rotation_angle > 90 |
| 312 radius_x = 123.45f; |
| 313 radius_y = 67.89f; |
| 314 rotation_angle = 92.f; |
| 315 pressure = 0.789f; |
| 316 TouchEvent press2 = TouchWithTapParams( |
| 317 ET_TOUCH_PRESSED, ids[2], radius_x, radius_y, rotation_angle, pressure); |
| 318 EXPECT_TRUE(event.OnTouch(press2)); |
| 319 |
| 320 EXPECT_EQ(3U, event.GetPointerCount()); |
| 321 EXPECT_FLOAT_EQ(radius_x, event.GetTouchMajor(2) / 2); |
| 322 EXPECT_FLOAT_EQ(radius_y, event.GetTouchMinor(2) / 2); |
| 323 EXPECT_FLOAT_EQ(rotation_angle, event.GetOrientation(2) * 180 / M_PI + 90); |
| 324 EXPECT_FLOAT_EQ(pressure, event.GetPressure(2)); |
| 325 |
| 326 // Test case: radius_x < radius_y, rotation_angle > 90 |
| 327 radius_x = 67.89f; |
| 328 radius_y = 123.45f; |
| 329 rotation_angle = 135.f; |
| 330 pressure = 0.012f; |
| 331 TouchEvent press3 = TouchWithTapParams( |
| 332 ET_TOUCH_PRESSED, ids[3], radius_x, radius_y, rotation_angle, pressure); |
| 333 EXPECT_TRUE(event.OnTouch(press3)); |
| 334 |
| 335 EXPECT_EQ(4U, event.GetPointerCount()); |
| 336 EXPECT_FLOAT_EQ(radius_y, event.GetTouchMajor(3) / 2); |
| 337 EXPECT_FLOAT_EQ(radius_x, event.GetTouchMinor(3) / 2); |
| 338 EXPECT_FLOAT_EQ(rotation_angle, event.GetOrientation(3) * 180 / M_PI + 180); |
| 339 EXPECT_FLOAT_EQ(pressure, event.GetPressure(3)); |
310 } | 340 } |
311 | 341 |
312 TEST(MotionEventAuraTest, Timestamps) { | 342 TEST(MotionEventAuraTest, Timestamps) { |
313 // Test that timestamp information is stored and converted correctly. | 343 // Test that timestamp information is stored and converted correctly. |
314 MotionEventAura event; | 344 MotionEventAura event; |
315 int ids[] = {7, 13}; | 345 int ids[] = {7, 13}; |
316 int times_in_ms[] = {59436, 60263, 82175}; | 346 int times_in_ms[] = {59436, 60263, 82175}; |
317 | 347 |
318 TouchEvent press0 = TouchWithTime( | 348 TouchEvent press0 = TouchWithTime( |
319 ui::ET_TOUCH_PRESSED, ids[0], times_in_ms[0]); | 349 ui::ET_TOUCH_PRESSED, ids[0], times_in_ms[0]); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 EXPECT_TRUE(event.OnTouch(TouchWithType(ET_TOUCH_PRESSED, id))); | 474 EXPECT_TRUE(event.OnTouch(TouchWithType(ET_TOUCH_PRESSED, id))); |
445 TouchEvent move0 = TouchWithPosition(ET_TOUCH_PRESSED, id, 10, 20, 10, 20); | 475 TouchEvent move0 = TouchWithPosition(ET_TOUCH_PRESSED, id, 10, 20, 10, 20); |
446 EXPECT_TRUE(event.OnTouch(move0)); | 476 EXPECT_TRUE(event.OnTouch(move0)); |
447 | 477 |
448 TouchEvent move1 = TouchWithPosition(ET_TOUCH_MOVED, id, 11, 21, 11, 21); | 478 TouchEvent move1 = TouchWithPosition(ET_TOUCH_MOVED, id, 11, 21, 11, 21); |
449 EXPECT_TRUE(event.OnTouch(move1)); | 479 EXPECT_TRUE(event.OnTouch(move1)); |
450 EXPECT_FALSE(event.OnTouch(move1)); | 480 EXPECT_FALSE(event.OnTouch(move1)); |
451 } | 481 } |
452 | 482 |
453 } // namespace ui | 483 } // namespace ui |
OLD | NEW |