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