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.
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"
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());
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));
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));
30 EXPECT_EQ(1, event.GetId());
32 event.set_action(MotionEvent::ACTION_POINTER_DOWN);
33 EXPECT_EQ(MotionEvent::ACTION_POINTER_DOWN, event.GetAction());
35 event_time += base::TimeDelta::FromMilliseconds(5);
36 event.set_event_time(event_time);
37 EXPECT_EQ(event_time, event.GetEventTime());
39 event.set_button_state(MotionEvent::BUTTON_PRIMARY);
40 EXPECT_EQ(MotionEvent::BUTTON_PRIMARY, event.GetButtonState());
42 event.set_flags(EF_ALT_DOWN | EF_SHIFT_DOWN);
43 EXPECT_EQ(EF_ALT_DOWN | EF_SHIFT_DOWN, event.GetFlags());
45 event.set_action_index(1);
46 EXPECT_EQ(1, event.GetActionIndex());
49 TEST(MotionEventGenericTest, Clone) {
50 MotionEventGeneric event(MotionEvent::ACTION_DOWN,
51 base::TimeTicks::Now(),
52 PointerProperties(8.3f, 4.7f));
54 event.set_button_state(MotionEvent::BUTTON_PRIMARY);
56 scoped_ptr<MotionEvent> clone = event.Clone();
58 EXPECT_EQ(event, *clone);
61 TEST(MotionEventGenericTest, Cancel) {
62 MotionEventGeneric event(MotionEvent::ACTION_UP,
63 base::TimeTicks::Now(),
64 PointerProperties(8.7f, 4.3f));
66 event.set_button_state(MotionEvent::BUTTON_SECONDARY);
68 scoped_ptr<MotionEvent> cancel = event.Cancel();
69 event.set_action(MotionEvent::ACTION_CANCEL);
71 EXPECT_EQ(event, *cancel);
74 TEST(MotionEventGenericTest, FindPointerIndexOfId) {
75 base::TimeTicks event_time = base::TimeTicks::Now();
76 PointerProperties pointer;
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));
83 MotionEventGeneric event1(event0);
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));
91 MotionEventGeneric event2(event1);
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));