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

Unified Diff: base/power_monitor/power_monitor_unittest.cc

Issue 10959020: SystemMonitor refactoring: move power state monitor into a separate class called PowerMonitor (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Update patch per vandebo's comments Created 8 years, 2 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: base/power_monitor/power_monitor_unittest.cc
diff --git a/remoting/protocol/connection_to_client_unittest.cc b/base/power_monitor/power_monitor_unittest.cc
similarity index 13%
copy from remoting/protocol/connection_to_client_unittest.cc
copy to base/power_monitor/power_monitor_unittest.cc
index 5638728f0a61f90f9c07fb141dbab120b877a774..d55cf7d144491366a8b02c3bc35be2241fe75cae 100644
--- a/remoting/protocol/connection_to_client_unittest.cc
+++ b/base/power_monitor/power_monitor_unittest.cc
@@ -2,105 +2,99 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "remoting/protocol/connection_to_client.h"
+#include "base/power_monitor/power_monitor.h"
-#include "base/bind.h"
#include "base/message_loop.h"
-#include "base/message_loop_proxy.h"
-#include "remoting/base/constants.h"
-#include "remoting/protocol/fake_session.h"
-#include "remoting/protocol/protocol_mock_objects.h"
-#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
-using ::testing::_;
-using ::testing::NotNull;
-using ::testing::StrictMock;
+namespace base {
-namespace remoting {
-namespace protocol {
-
-class ConnectionToClientTest : public testing::Test {
+class PowerTest : public PowerObserver {
public:
- ConnectionToClientTest() {
+ PowerTest()
+ : power_state_changes_(0),
+ suspends_(0),
+ resumes_(0) {
}
- protected:
- virtual void SetUp() OVERRIDE {
- session_ = new FakeSession();
-
- // Allocate a ClientConnection object with the mock objects.
- viewer_.reset(new ConnectionToClient(session_));
- viewer_->set_clipboard_stub(&clipboard_stub_);
- viewer_->set_host_stub(&host_stub_);
- viewer_->set_input_stub(&input_stub_);
- viewer_->SetEventHandler(&handler_);
- EXPECT_CALL(handler_, OnConnectionAuthenticated(viewer_.get()));
- EXPECT_CALL(handler_, OnConnectionChannelsConnected(viewer_.get()));
- session_->event_handler()->OnSessionStateChange(Session::CONNECTED);
- session_->event_handler()->OnSessionStateChange(Session::AUTHENTICATED);
- message_loop_.RunAllPending();
+ // PowerObserver callbacks.
+ virtual void OnPowerStateChange(bool on_battery_power) OVERRIDE {
+ power_state_changes_++;
}
- virtual void TearDown() OVERRIDE {
- viewer_.reset();
- message_loop_.RunAllPending();
+ virtual void OnSuspend() OVERRIDE {
+ suspends_++;
}
- MessageLoop message_loop_;
- MockConnectionToClientEventHandler handler_;
- MockClipboardStub clipboard_stub_;
- MockHostStub host_stub_;
- MockInputStub input_stub_;
- scoped_ptr<ConnectionToClient> viewer_;
+ virtual void OnResume() OVERRIDE {
+ resumes_++;
+ }
- // Owned by |viewer_|.
- FakeSession* session_;
+ // Test status counts.
+ int power_state_changes() { return power_state_changes_; }
+ int suspends() { return suspends_; }
+ int resumes() { return resumes_; }
private:
- DISALLOW_COPY_AND_ASSIGN(ConnectionToClientTest);
+ int power_state_changes_; // Count of OnPowerStateChange notifications.
+ int suspends_; // Count of OnSuspend notifications.
+ int resumes_; // Count of OnResume notifications.
};
-TEST_F(ConnectionToClientTest, SendUpdateStream) {
- scoped_ptr<VideoPacket> packet(new VideoPacket());
- viewer_->video_stub()->ProcessVideoPacket(packet.Pass(), base::Closure());
+class PowerMonitorTest : public testing::Test {
+ protected:
+ PowerMonitorTest() {
+#if defined(OS_MACOSX)
+ // This needs to happen before PowerMonitor's ctor.
+ PowerMonitor::AllocateSystemIOPorts();
+#endif
+ }
+ virtual ~PowerMonitorTest() {}
- message_loop_.RunAllPending();
+ MessageLoop message_loop_;
+ PowerMonitor power_monitor_;
- // Verify that something has been written.
- // TODO(sergeyu): Verify that the correct data has been written.
- ASSERT_TRUE(session_->GetStreamChannel(kVideoChannelName));
- EXPECT_GT(session_->GetStreamChannel(kVideoChannelName)->
- written_data().size(), 0u);
+ DISALLOW_COPY_AND_ASSIGN(PowerMonitorTest);
+};
- // And then close the connection to ConnectionToClient.
- viewer_->Disconnect();
+TEST_F(PowerMonitorTest, PowerNotifications) {
+ const int kObservers = 5;
- message_loop_.RunAllPending();
-}
+ PowerTest test[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++) {
+ power_monitor_.ProcessPowerMessage(PowerMonitor::POWER_STATE_EVENT);
+ EXPECT_EQ(test[0].power_state_changes(), 0);
+ }
-TEST_F(ConnectionToClientTest, NoWriteAfterDisconnect) {
- scoped_ptr<VideoPacket> packet(new VideoPacket());
- viewer_->video_stub()->ProcessVideoPacket(packet.Pass(), base::Closure());
+ // Sending resume when not suspended should have no effect.
+ power_monitor_.ProcessPowerMessage(PowerMonitor::RESUME_EVENT);
+ message_loop_.RunAllPending();
+ EXPECT_EQ(test[0].resumes(), 0);
- // And then close the connection to ConnectionToClient.
- viewer_->Disconnect();
+ // Pretend we suspended.
+ power_monitor_.ProcessPowerMessage(PowerMonitor::SUSPEND_EVENT);
+ message_loop_.RunAllPending();
+ EXPECT_EQ(test[0].suspends(), 1);
- // The test will crash if data writer tries to write data to the
- // channel socket.
- // TODO(sergeyu): Use MockSession to verify that no data is written?
+ // Send a second suspend notification. This should be suppressed.
+ power_monitor_.ProcessPowerMessage(PowerMonitor::SUSPEND_EVENT);
message_loop_.RunAllPending();
-}
+ EXPECT_EQ(test[0].suspends(), 1);
-TEST_F(ConnectionToClientTest, StateChange) {
- EXPECT_CALL(handler_, OnConnectionClosed(viewer_.get(), OK));
- session_->event_handler()->OnSessionStateChange(Session::CLOSED);
+ // Pretend we were awakened.
+ power_monitor_.ProcessPowerMessage(PowerMonitor::RESUME_EVENT);
message_loop_.RunAllPending();
+ EXPECT_EQ(test[0].resumes(), 1);
- EXPECT_CALL(handler_, OnConnectionClosed(viewer_.get(), SESSION_REJECTED));
- session_->set_error(SESSION_REJECTED);
- session_->event_handler()->OnSessionStateChange(Session::FAILED);
+ // Send a duplicate resume notification. This should be suppressed.
+ power_monitor_.ProcessPowerMessage(PowerMonitor::RESUME_EVENT);
message_loop_.RunAllPending();
+ EXPECT_EQ(test[0].resumes(), 1);
}
-} // namespace protocol
-} // namespace remoting
+} // namespace base

Powered by Google App Engine
This is Rietveld 408576698