motion_event_generic_unittest.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 The Chromium Authors. All rights reserved. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "testing/gtest/include/gtest/gtest.h" 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "ui/events/gesture_detection/motion_event_generic.h" 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovnamespace ui { 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovTEST(MotionEventGenericTest, Basic) { 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base::TimeTicks event_time = base::TimeTicks::Now(); 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov MotionEventGeneric event( 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov MotionEvent::ACTION_DOWN, event_time, PointerProperties()); 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(1U, event.GetPointerCount()); 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(0U, event.GetHistorySize()); 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(event_time, event.GetEventTime()); 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.PushPointer(PointerProperties(8.3f, 4.7f)); 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT_EQ(2U, event.GetPointerCount()); 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(8.3f, event.GetX(1)); 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(4.7f, event.GetY(1)); 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.PushPointer(PointerProperties(2.3f, -3.7f)); 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT_EQ(3U, event.GetPointerCount()); 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(2.3f, event.GetX(2)); 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(-3.7f, event.GetY(2)); 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_id(1); 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(1, event.GetId()); 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_action(MotionEvent::ACTION_POINTER_DOWN); 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(MotionEvent::ACTION_POINTER_DOWN, event.GetAction()); 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event_time += base::TimeDelta::FromMilliseconds(5); 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_event_time(event_time); 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(event_time, event.GetEventTime()); 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_button_state(MotionEvent::BUTTON_PRIMARY); 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(MotionEvent::BUTTON_PRIMARY, event.GetButtonState()); 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_action_index(1); 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(1, event.GetActionIndex()); 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovTEST(MotionEventGenericTest, Clone) { 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov MotionEventGeneric event(MotionEvent::ACTION_DOWN, 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base::TimeTicks::Now(), 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PointerProperties(8.3f, 4.7f)); 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_id(1); 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_button_state(MotionEvent::BUTTON_PRIMARY); 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov scoped_ptr<MotionEvent> clone = event.Clone(); 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT_TRUE(clone); 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(event, *clone); 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovTEST(MotionEventGenericTest, Cancel) { 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov MotionEventGeneric event(MotionEvent::ACTION_UP, 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base::TimeTicks::Now(), 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PointerProperties(8.7f, 4.3f)); 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_id(2); 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_button_state(MotionEvent::BUTTON_SECONDARY); 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov scoped_ptr<MotionEvent> cancel = event.Cancel(); 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event.set_action(MotionEvent::ACTION_CANCEL); 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT_TRUE(cancel); 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(event, *cancel); 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovTEST(MotionEventGenericTest, FindPointerIndexOfId) { 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov base::TimeTicks event_time = base::TimeTicks::Now(); 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PointerProperties pointer; 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pointer.id = 0; 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov MotionEventGeneric event0(MotionEvent::ACTION_DOWN, event_time, pointer); 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(0, event0.FindPointerIndexOfId(0)); 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(-1, event0.FindPointerIndexOfId(1)); 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(-1, event0.FindPointerIndexOfId(-1)); 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov MotionEventGeneric event1(event0); 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pointer.id = 7; 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event1.PushPointer(pointer); 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(0, event1.FindPointerIndexOfId(0)); 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(1, event1.FindPointerIndexOfId(7)); 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(-1, event1.FindPointerIndexOfId(6)); 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(-1, event1.FindPointerIndexOfId(1)); 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov MotionEventGeneric event2(event1); 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pointer.id = 3; 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov event2.PushPointer(pointer); 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(0, event2.FindPointerIndexOfId(0)); 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(1, event2.FindPointerIndexOfId(7)); 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(2, event2.FindPointerIndexOfId(3)); 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EXPECT_EQ(-1, event2.FindPointerIndexOfId(1)); 94 EXPECT_EQ(-1, event2.FindPointerIndexOfId(2)); 95} 96 97} // namespace ui 98