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