| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/events/event_constants.h" |
| #include "ui/events/gesture_detection/motion_event_generic.h" |
| |
| namespace ui { |
| |
| TEST(MotionEventGenericTest, Basic) { |
| base::TimeTicks event_time = base::TimeTicks::Now(); |
| MotionEventGeneric event( |
| MotionEvent::ACTION_DOWN, event_time, PointerProperties()); |
| EXPECT_EQ(1U, event.GetPointerCount()); |
| EXPECT_EQ(0U, event.GetHistorySize()); |
| EXPECT_EQ(event_time, event.GetEventTime()); |
| |
| event.PushPointer(PointerProperties(8.3f, 4.7f)); |
| ASSERT_EQ(2U, event.GetPointerCount()); |
| EXPECT_EQ(8.3f, event.GetX(1)); |
| EXPECT_EQ(4.7f, event.GetY(1)); |
| |
| event.PushPointer(PointerProperties(2.3f, -3.7f)); |
| ASSERT_EQ(3U, event.GetPointerCount()); |
| EXPECT_EQ(2.3f, event.GetX(2)); |
| EXPECT_EQ(-3.7f, event.GetY(2)); |
| |
| event.set_id(1); |
| EXPECT_EQ(1, event.GetId()); |
| |
| event.set_action(MotionEvent::ACTION_POINTER_DOWN); |
| EXPECT_EQ(MotionEvent::ACTION_POINTER_DOWN, event.GetAction()); |
| |
| event_time += base::TimeDelta::FromMilliseconds(5); |
| event.set_event_time(event_time); |
| EXPECT_EQ(event_time, event.GetEventTime()); |
| |
| event.set_button_state(MotionEvent::BUTTON_PRIMARY); |
| EXPECT_EQ(MotionEvent::BUTTON_PRIMARY, event.GetButtonState()); |
| |
| event.set_flags(EF_ALT_DOWN | EF_SHIFT_DOWN); |
| EXPECT_EQ(EF_ALT_DOWN | EF_SHIFT_DOWN, event.GetFlags()); |
| |
| event.set_action_index(1); |
| EXPECT_EQ(1, event.GetActionIndex()); |
| } |
| |
| TEST(MotionEventGenericTest, Clone) { |
| MotionEventGeneric event(MotionEvent::ACTION_DOWN, |
| base::TimeTicks::Now(), |
| PointerProperties(8.3f, 4.7f)); |
| event.set_id(1); |
| event.set_button_state(MotionEvent::BUTTON_PRIMARY); |
| |
| scoped_ptr<MotionEvent> clone = event.Clone(); |
| ASSERT_TRUE(clone); |
| EXPECT_EQ(event, *clone); |
| } |
| |
| TEST(MotionEventGenericTest, Cancel) { |
| MotionEventGeneric event(MotionEvent::ACTION_UP, |
| base::TimeTicks::Now(), |
| PointerProperties(8.7f, 4.3f)); |
| event.set_id(2); |
| event.set_button_state(MotionEvent::BUTTON_SECONDARY); |
| |
| scoped_ptr<MotionEvent> cancel = event.Cancel(); |
| event.set_action(MotionEvent::ACTION_CANCEL); |
| ASSERT_TRUE(cancel); |
| EXPECT_EQ(event, *cancel); |
| } |
| |
| TEST(MotionEventGenericTest, FindPointerIndexOfId) { |
| base::TimeTicks event_time = base::TimeTicks::Now(); |
| PointerProperties pointer; |
| pointer.id = 0; |
| MotionEventGeneric event0(MotionEvent::ACTION_DOWN, event_time, pointer); |
| EXPECT_EQ(0, event0.FindPointerIndexOfId(0)); |
| EXPECT_EQ(-1, event0.FindPointerIndexOfId(1)); |
| EXPECT_EQ(-1, event0.FindPointerIndexOfId(-1)); |
| |
| MotionEventGeneric event1(event0); |
| pointer.id = 7; |
| event1.PushPointer(pointer); |
| EXPECT_EQ(0, event1.FindPointerIndexOfId(0)); |
| EXPECT_EQ(1, event1.FindPointerIndexOfId(7)); |
| EXPECT_EQ(-1, event1.FindPointerIndexOfId(6)); |
| EXPECT_EQ(-1, event1.FindPointerIndexOfId(1)); |
| |
| MotionEventGeneric event2(event1); |
| pointer.id = 3; |
| event2.PushPointer(pointer); |
| EXPECT_EQ(0, event2.FindPointerIndexOfId(0)); |
| EXPECT_EQ(1, event2.FindPointerIndexOfId(7)); |
| EXPECT_EQ(2, event2.FindPointerIndexOfId(3)); |
| EXPECT_EQ(-1, event2.FindPointerIndexOfId(1)); |
| EXPECT_EQ(-1, event2.FindPointerIndexOfId(2)); |
| } |
| |
| } // namespace ui |