| 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 189 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 |
| 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, should be isolated |
| 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 |