| 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
|
|
|