Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / ui / events / gesture_detection / motion_event_generic_unittest.cc
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