OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 "ui/aura/event.h" | |
6 #include "testing/gtest/include/gtest/gtest.h" | |
7 | |
8 #if defined(USE_X11) | |
9 #include <X11/Xlib.h> | |
10 #include "ui/base/x/x11_util.h" | |
11 #endif | |
12 | |
13 namespace aura { | |
14 namespace test { | |
15 | |
16 TEST(EventTest, NoNativeEvent) { | |
17 KeyEvent keyev(ui::ET_KEY_PRESSED, ui::VKEY_SPACE, 0); | |
18 EXPECT_FALSE(keyev.HasNativeEvent()); | |
19 } | |
20 | |
21 TEST(EventTest, NativeEvent) { | |
22 #if defined(OS_WIN) | |
23 MSG native_event = { NULL, WM_KEYUP, ui::VKEY_A, 0 }; | |
24 KeyEvent keyev(native_event, false); | |
25 EXPECT_TRUE(keyev.HasNativeEvent()); | |
26 #elif defined(USE_X11) | |
27 scoped_ptr<XEvent> native_event(new XEvent); | |
28 ui::InitXKeyEventForTesting(ui::ET_KEY_RELEASED, | |
29 ui::VKEY_A, | |
30 0, | |
31 native_event.get()); | |
32 KeyEvent keyev(native_event.get(), false); | |
33 EXPECT_TRUE(keyev.HasNativeEvent()); | |
34 #endif | |
35 } | |
36 | |
37 TEST(EventTest, GetCharacter) { | |
38 // Check if Control+Enter returns 10. | |
39 KeyEvent keyev1(ui::ET_KEY_PRESSED, | |
40 ui::VKEY_RETURN, | |
41 ui::EF_CONTROL_DOWN); | |
42 EXPECT_EQ(10, keyev1.GetCharacter()); | |
43 EXPECT_EQ(13, keyev1.GetUnmodifiedCharacter()); | |
44 // Check if Enter returns 13. | |
45 KeyEvent keyev2(ui::ET_KEY_PRESSED, | |
46 ui::VKEY_RETURN, | |
47 0); | |
48 EXPECT_EQ(13, keyev2.GetCharacter()); | |
49 EXPECT_EQ(13, keyev2.GetUnmodifiedCharacter()); | |
50 | |
51 #if defined(USE_X11) | |
52 // For X11, test the functions with native_event() as well. crbug.com/107837 | |
53 scoped_ptr<XEvent> native_event(new XEvent); | |
54 | |
55 ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED, | |
56 ui::VKEY_RETURN, | |
57 ui::EF_CONTROL_DOWN, | |
58 native_event.get()); | |
59 KeyEvent keyev3(native_event.get(), false); | |
60 EXPECT_EQ(10, keyev3.GetCharacter()); | |
61 EXPECT_EQ(13, keyev3.GetUnmodifiedCharacter()); | |
62 | |
63 ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED, | |
64 ui::VKEY_RETURN, | |
65 0, | |
66 native_event.get()); | |
67 KeyEvent keyev4(native_event.get(), false); | |
68 EXPECT_EQ(13, keyev4.GetCharacter()); | |
69 EXPECT_EQ(13, keyev4.GetUnmodifiedCharacter()); | |
70 #endif | |
71 } | |
72 | |
73 TEST(EventTest, ClickCount) { | |
74 const gfx::Point origin(0, 0); | |
75 MouseEvent mouseev(ui::ET_MOUSE_PRESSED, origin, origin, 0); | |
76 for (int i = 1; i <=3 ; ++i) { | |
77 mouseev.SetClickCount(i); | |
78 EXPECT_EQ(i, mouseev.GetClickCount()); | |
79 } | |
80 } | |
81 | |
82 TEST(EventTest, Repeated) { | |
83 const gfx::Point origin(0, 0); | |
84 MouseEvent mouse_ev1(ui::ET_MOUSE_PRESSED, origin, origin, 0); | |
85 MouseEvent mouse_ev2(ui::ET_MOUSE_PRESSED, origin, origin, 0); | |
86 MouseEvent::TestApi test_ev1(&mouse_ev1); | |
87 MouseEvent::TestApi test_ev2(&mouse_ev2); | |
88 | |
89 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); | |
90 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); | |
91 base::TimeDelta later = start + base::TimeDelta::FromMilliseconds(1000); | |
92 | |
93 // Close point. | |
94 test_ev1.set_location(gfx::Point(0, 0)); | |
95 test_ev2.set_location(gfx::Point(1, 0)); | |
96 test_ev1.set_time_stamp(start); | |
97 test_ev2.set_time_stamp(soon); | |
98 EXPECT_TRUE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); | |
99 | |
100 // Too far. | |
101 test_ev1.set_location(gfx::Point(0, 0)); | |
102 test_ev2.set_location(gfx::Point(10, 0)); | |
103 test_ev1.set_time_stamp(start); | |
104 test_ev2.set_time_stamp(soon); | |
105 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); | |
106 | |
107 // Too long a time between clicks. | |
108 test_ev1.set_location(gfx::Point(0, 0)); | |
109 test_ev2.set_location(gfx::Point(0, 0)); | |
110 test_ev1.set_time_stamp(start); | |
111 test_ev2.set_time_stamp(later); | |
112 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); | |
113 } | |
114 | |
115 } // namespace test | |
116 } // namespace aura | |
OLD | NEW |