Chromium Code Reviews| Index: src/platform/power_manager/xidle_unittest.cc |
| diff --git a/src/platform/power_manager/xidle_unittest.cc b/src/platform/power_manager/xidle_unittest.cc |
| index ef6a8c5eafda5fd2d4cbb420a8ee70f670487ddc..16f07a5c0139b347b5ef4a172de6a49eb61621b2 100644 |
| --- a/src/platform/power_manager/xidle_unittest.cc |
| +++ b/src/platform/power_manager/xidle_unittest.cc |
| @@ -4,22 +4,64 @@ |
| #include <gtest/gtest.h> |
| #include <unistd.h> |
| +#include <X11/extensions/XTest.h> |
| +#include <cstdio> |
| -#include <base/command_line.h> |
| -#include <base/logging.h> |
| - |
| +#include "base/command_line.h" |
| +#include "base/logging.h" |
| #include "power_manager/xidle.h" |
| namespace power_manager { |
| -class XIdleTest : public ::testing::Test { }; |
| +class XIdleTest : public ::testing::Test { |
| + protected: |
| + virtual void SetUp() { |
| + display_ = XOpenDisplay(NULL); |
| + ASSERT_TRUE(idle_.Init(display_)); |
| + } |
| + virtual void TearDown() { |
| + idle_.ClearTimeouts(); |
| + XCloseDisplay(display_); |
| + } |
| + Display *display_; |
| + power_manager::XIdle idle_; |
| +}; |
| + |
| +static void FakeMotionEvent(Display* display) { |
| + 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
|
| + XSync(display, false); |
| +} |
| + |
| +TEST_F(XIdleTest, GetIdleTimeTest) { |
| + int64 idle_time = kint64max; |
| + ASSERT_TRUE(idle_.GetIdleTime(&idle_time)); |
| + ASSERT_NE(idle_time, kint64max); |
| +} |
| + |
| +TEST_F(XIdleTest, GetIdleTimeWhenNonIdleTest) { |
| + int64 idle_time = kint64max; |
| + FakeMotionEvent(display_); |
| + ASSERT_TRUE(idle_.GetIdleTime(&idle_time)); |
| + ASSERT_LT(idle_time, 50); |
| +} |
| -TEST(XIdleTest, GetIdleTimeTest) { |
| +TEST_F(XIdleTest, MonitorTest) { |
| int64 idle_time = kint64max; |
| - power_manager::XIdle idle; |
| - if (idle.Init()) { |
| - ASSERT_TRUE(idle.GetIdleTime(&idle_time)); |
| - ASSERT_NE(kint64max, idle_time); |
| + bool is_idle; |
| + FakeMotionEvent(display_); |
| + idle_.AddIdleTimeout(50); |
| + idle_.AddIdleTimeout(100); |
| + for (int i = 0; i < 10; i++) { |
| + ASSERT_TRUE(idle_.GetIdleTime(&idle_time)); |
| + ASSERT_LT(idle_time, 50); |
| + ASSERT_TRUE(idle_.Monitor(&is_idle, &idle_time)); |
| + ASSERT_GT(idle_time, 49); |
| + ASSERT_LT(idle_time, 100); |
| + ASSERT_TRUE(is_idle); |
| + FakeMotionEvent(display_); |
| + ASSERT_TRUE(idle_.Monitor(&is_idle, &idle_time)); |
| + ASSERT_LT(idle_time, 50); |
| + ASSERT_FALSE(is_idle); |
| } |
| } |