Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(466)

Unified Diff: src/platform/power_manager/xidle_unittest.cc

Issue 1035001: Fix off-by-one bug for the negative transition in XIdle::AddIdleTimeout, which (Closed)
Patch Set: Update to address Dan's comments Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
}
« src/platform/power_manager/xidle-example.cc ('K') | « src/platform/power_manager/xidle-example.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698