OLD | NEW |
---|---|
1 // Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <gtest/gtest.h> | 5 #include <gtest/gtest.h> |
6 #include <unistd.h> | 6 #include <unistd.h> |
7 #include <X11/extensions/XTest.h> | |
8 #include <cstdio> | |
7 | 9 |
8 #include <base/command_line.h> | 10 #include "base/command_line.h" |
9 #include <base/logging.h> | 11 #include "base/logging.h" |
10 | |
11 #include "power_manager/xidle.h" | 12 #include "power_manager/xidle.h" |
12 | 13 |
13 namespace power_manager { | 14 namespace power_manager { |
14 | 15 |
15 class XIdleTest : public ::testing::Test { }; | 16 class XIdleTest : public ::testing::Test { |
17 protected: | |
18 virtual void SetUp() { | |
19 display_ = XOpenDisplay(NULL); | |
20 ASSERT_TRUE(idle_.Init(display_)); | |
21 } | |
22 virtual void TearDown() { | |
23 idle_.ClearTimeouts(); | |
24 XCloseDisplay(display_); | |
25 } | |
26 Display *display_; | |
27 power_manager::XIdle idle_; | |
28 }; | |
16 | 29 |
17 TEST(XIdleTest, GetIdleTimeTest) { | 30 static void FakeMotionEvent(Display* display) { |
31 XTestFakeMotionEvent(display, 0, 0, 0, 0); | |
Daniel Erat
2010/03/16 21:40:01
i think that this will warp the user's pointer to
davidjames
2010/03/16 22:27:09
Aha, good catch. I didn't notice the warping becau
| |
32 XSync(display, false); | |
33 } | |
34 | |
35 TEST_F(XIdleTest, GetIdleTimeTest) { | |
18 int64 idle_time = kint64max; | 36 int64 idle_time = kint64max; |
19 power_manager::XIdle idle; | 37 ASSERT_TRUE(idle_.GetIdleTime(&idle_time)); |
20 if (idle.Init()) { | 38 ASSERT_NE(idle_time, kint64max); |
21 ASSERT_TRUE(idle.GetIdleTime(&idle_time)); | 39 } |
22 ASSERT_NE(kint64max, idle_time); | 40 |
41 TEST_F(XIdleTest, GetIdleTimeWhenNonIdleTest) { | |
42 int64 idle_time = kint64max; | |
43 FakeMotionEvent(display_); | |
44 ASSERT_TRUE(idle_.GetIdleTime(&idle_time)); | |
45 ASSERT_LT(idle_time, 50); | |
46 } | |
47 | |
48 TEST_F(XIdleTest, MonitorTest) { | |
49 int64 idle_time = kint64max; | |
50 bool is_idle; | |
51 FakeMotionEvent(display_); | |
52 idle_.AddIdleTimeout(50); | |
53 idle_.AddIdleTimeout(100); | |
54 for (int i = 0; i < 10; i++) { | |
55 ASSERT_TRUE(idle_.GetIdleTime(&idle_time)); | |
56 ASSERT_LT(idle_time, 50); | |
57 ASSERT_TRUE(idle_.Monitor(&is_idle, &idle_time)); | |
58 ASSERT_GT(idle_time, 49); | |
59 ASSERT_LT(idle_time, 100); | |
60 ASSERT_TRUE(is_idle); | |
61 FakeMotionEvent(display_); | |
62 ASSERT_TRUE(idle_.Monitor(&is_idle, &idle_time)); | |
63 ASSERT_LT(idle_time, 50); | |
64 ASSERT_FALSE(is_idle); | |
23 } | 65 } |
24 } | 66 } |
25 | 67 |
26 } // namespace power_manager | 68 } // namespace power_manager |
OLD | NEW |