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

Unified Diff: chrome/browser/media/router/media_controller_impl_unittest.cc

Issue 949293004: Add media router common classes and unittests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Chunkier CL Created 5 years, 10 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: chrome/browser/media/router/media_controller_impl_unittest.cc
diff --git a/chrome/browser/media/router/media_controller_impl_unittest.cc b/chrome/browser/media/router/media_controller_impl_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c115dc9b5fdeabb172183843bcc6ede9e54df516
--- /dev/null
+++ b/chrome/browser/media/router/media_controller_impl_unittest.cc
@@ -0,0 +1,106 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/media/router/media_controller_impl.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using testing::ContainerEq;
+using testing::Eq;
+using testing::IsEmpty;
+using testing::Eq;
+using testing::Mock;
+
+namespace media_router {
+
+class MockMediaControllerObserver : public MediaController::Observer {
+ public:
+ MockMediaControllerObserver() {}
+ virtual ~MockMediaControllerObserver() {}
+
+ MOCK_METHOD2(OnMediaStatusChange, void(
+ const MediaController* controller, const MediaStatus& current_status));
+ MOCK_METHOD2(OnMediaControlsCapabilitiesChange, void(
+ const MediaController* controller,
+ MediaControlsCapabilities current_capabilities));
+};
+
+class MediaControllerImplTest : public ::testing::Test {
+ protected:
+ MediaControllerImplTest() : controller_("route0") {}
+ ~MediaControllerImplTest() override {}
+
+ MediaControllerImpl controller_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MediaControllerImplTest);
+};
+
+TEST_F(MediaControllerImplTest, NotifyObserversOnMediaStatusChange) {
+ MockMediaControllerObserver observer1, observer2;
+
+ controller_.AddObserver(&observer1);
+ controller_.AddObserver(&observer2);
+
+ MediaStatus status("route1");
+ EXPECT_CALL(observer1,
+ OnMediaStatusChange(Eq(&controller_), Eq(status))).Times(1);
+ EXPECT_CALL(observer2,
+ OnMediaStatusChange(Eq(&controller_), Eq(status))).Times(1);
+ controller_.set_media_status(status);
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2));
+
+ controller_.RemoveObserver(&observer2);
+
+ // Only observer1 gets updates since observer2 was removed from controller.
+ MediaStatus status2("route2");
+ EXPECT_CALL(observer1,
+ OnMediaStatusChange(Eq(&controller_), Eq(status2))).Times(1);
+ controller_.set_media_status(status2);
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
+
+ // No updates since status did not change.
+ controller_.set_media_status(status2);
+
+ controller_.RemoveObserver(&observer1);
+}
+
+TEST_F(MediaControllerImplTest, NotifyObserversOnMediaControlsChange) {
+ MockMediaControllerObserver observer1, observer2;
+
+ controller_.AddObserver(&observer1);
+ controller_.AddObserver(&observer2);
+
+ MediaControlsCapabilities capabilities = MEDIA_COMMAND_PAUSE;
+
+ EXPECT_CALL(observer1, OnMediaControlsCapabilitiesChange(
+ Eq(&controller_), Eq(capabilities)))
+ .Times(1);
+ EXPECT_CALL(observer2, OnMediaControlsCapabilitiesChange(
+ Eq(&controller_), Eq(capabilities)))
+ .Times(1);
+
+ controller_.set_media_controls_capabilities(capabilities);
+
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer2));
+
+ controller_.RemoveObserver(&observer2);
+
+ // Only observer1 gets updates since observer2 was removed from controller.
+ capabilities = MEDIA_COMMAND_PAUSE | MEDIA_COMMAND_PLAY;
+ EXPECT_CALL(observer1, OnMediaControlsCapabilitiesChange(
+ Eq(&controller_), Eq(capabilities)))
+ .Times(1);
+ controller_.set_media_controls_capabilities(capabilities);
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
+
+ // No updates since status did not change.
+ controller_.set_media_controls_capabilities(capabilities);
+
+ controller_.RemoveObserver(&observer1);
+}
+
+} // namespace media_router

Powered by Google App Engine
This is Rietveld 408576698