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

Unified Diff: base/power_monitor/power_monitor_unittest.cc

Issue 17074009: Created multi-process-friendly PowerMonitor interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing windows unit test errors Created 7 years, 5 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
« no previous file with comments | « base/power_monitor/power_monitor_test_base.cc ('k') | base/power_monitor/power_monitor_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/power_monitor/power_monitor_unittest.cc
diff --git a/base/power_monitor/power_monitor_unittest.cc b/base/power_monitor/power_monitor_unittest.cc
index 90f36f0736235800e483cfd61a50ea6f68fe40f4..61b720ed8c400eab44f3855ffebf97555cb603b1 100644
--- a/base/power_monitor/power_monitor_unittest.cc
+++ b/base/power_monitor/power_monitor_unittest.cc
@@ -3,104 +3,78 @@
// found in the LICENSE file.
#include "base/power_monitor/power_monitor.h"
-
-#include "base/message_loop/message_loop.h"
+#include "base/power_monitor/power_monitor_test_base.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace base {
-class PowerTest : public PowerObserver {
- public:
- PowerTest()
- : power_state_changes_(0),
- suspends_(0),
- resumes_(0) {
- }
-
- // PowerObserver callbacks.
- virtual void OnPowerStateChange(bool on_battery_power) OVERRIDE {
- power_state_changes_++;
- }
-
- virtual void OnSuspend() OVERRIDE {
- suspends_++;
- }
-
- virtual void OnResume() OVERRIDE {
- resumes_++;
- }
-
- // Test status counts.
- int power_state_changes() { return power_state_changes_; }
- int suspends() { return suspends_; }
- int resumes() { return resumes_; }
-
- private:
- int power_state_changes_; // Count of OnPowerStateChange notifications.
- int suspends_; // Count of OnSuspend notifications.
- int resumes_; // Count of OnResume notifications.
-};
-
class PowerMonitorTest : public testing::Test {
protected:
PowerMonitorTest() {
-#if defined(OS_MACOSX)
- // This needs to happen before PowerMonitor's ctor.
- PowerMonitor::AllocateSystemIOPorts();
-#endif
- power_monitor_.reset(new PowerMonitor);
- }
-
- void ProcessPowerEvent(PowerMonitor::PowerEvent event_id) {
- power_monitor_->ProcessPowerEvent(event_id);
+ power_monitor_source_ = new PowerMonitorTestSource();
+ power_monitor_.reset(new PowerMonitor(
+ scoped_ptr<PowerMonitorSource>(power_monitor_source_)));
}
+ virtual ~PowerMonitorTest() {};
- virtual ~PowerMonitorTest() {}
+ PowerMonitorTestSource* source() { return power_monitor_source_; }
+ PowerMonitor* monitor() { return power_monitor_.get(); }
- MessageLoop message_loop_;
+ private:
+ PowerMonitorTestSource* power_monitor_source_;
scoped_ptr<PowerMonitor> power_monitor_;
DISALLOW_COPY_AND_ASSIGN(PowerMonitorTest);
};
+// PowerMonitorSource is tightly coupled with the PowerMonitor, so this test
+// Will cover both classes
TEST_F(PowerMonitorTest, PowerNotifications) {
const int kObservers = 5;
- PowerTest test[kObservers];
+ PowerMonitorTestObserver observers[kObservers];
for (int index = 0; index < kObservers; ++index)
- power_monitor_->AddObserver(&test[index]);
-
- // Send a bunch of power changes. Since the battery power hasn't
- // actually changed, we shouldn't get notifications.
- for (int index = 0; index < 5; index++) {
- ProcessPowerEvent(PowerMonitor::POWER_STATE_EVENT);
- EXPECT_EQ(test[0].power_state_changes(), 0);
- }
+ monitor()->AddObserver(&observers[index]);
// Sending resume when not suspended should have no effect.
- ProcessPowerEvent(PowerMonitor::RESUME_EVENT);
- message_loop_.RunUntilIdle();
- EXPECT_EQ(test[0].resumes(), 0);
+ source()->GenerateResumeEvent();
+ EXPECT_EQ(observers[0].resumes(), 0);
// Pretend we suspended.
- ProcessPowerEvent(PowerMonitor::SUSPEND_EVENT);
- message_loop_.RunUntilIdle();
- EXPECT_EQ(test[0].suspends(), 1);
+ source()->GenerateSuspendEvent();
+ // Ensure all observers were notified of the event
+ for (int index = 0; index < kObservers; ++index)
+ EXPECT_EQ(observers[index].suspends(), 1);
// Send a second suspend notification. This should be suppressed.
- ProcessPowerEvent(PowerMonitor::SUSPEND_EVENT);
- message_loop_.RunUntilIdle();
- EXPECT_EQ(test[0].suspends(), 1);
+ source()->GenerateSuspendEvent();
+ EXPECT_EQ(observers[0].suspends(), 1);
// Pretend we were awakened.
- ProcessPowerEvent(PowerMonitor::RESUME_EVENT);
- message_loop_.RunUntilIdle();
- EXPECT_EQ(test[0].resumes(), 1);
+ source()->GenerateResumeEvent();
+ EXPECT_EQ(observers[0].resumes(), 1);
// Send a duplicate resume notification. This should be suppressed.
- ProcessPowerEvent(PowerMonitor::RESUME_EVENT);
- message_loop_.RunUntilIdle();
- EXPECT_EQ(test[0].resumes(), 1);
+ source()->GenerateResumeEvent();
+ EXPECT_EQ(observers[0].resumes(), 1);
+
+ // Pretend the device has gone on battery power
+ source()->GeneratePowerStateEvent(true);
+ EXPECT_EQ(observers[0].power_state_changes(), 1);
+ EXPECT_EQ(observers[0].last_power_state(), true);
+
+ // Repeated indications the device is on battery power should be suppressed.
+ source()->GeneratePowerStateEvent(true);
+ EXPECT_EQ(observers[0].power_state_changes(), 1);
+
+ // Pretend the device has gone off battery power
+ source()->GeneratePowerStateEvent(false);
+ EXPECT_EQ(observers[0].power_state_changes(), 2);
+ EXPECT_EQ(observers[0].last_power_state(), false);
+
+ // Repeated indications the device is off battery power should be suppressed.
+ source()->GeneratePowerStateEvent(false);
+ EXPECT_EQ(observers[0].power_state_changes(), 2);
}
} // namespace base
« no previous file with comments | « base/power_monitor/power_monitor_test_base.cc ('k') | base/power_monitor/power_monitor_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698