Chromium Code Reviews| Index: chrome/browser/media/router/discovery/dial/dial_media_sink_service_unittest.cc |
| diff --git a/chrome/browser/media/router/discovery/dial/dial_media_sink_service_unittest.cc b/chrome/browser/media/router/discovery/dial/dial_media_sink_service_unittest.cc |
| index cf542a83254f980a0d8d90d34d6bd3d22e73241a..2897f236744d8d24c903ad7d9aaa019d9eff28d5 100644 |
| --- a/chrome/browser/media/router/discovery/dial/dial_media_sink_service_unittest.cc |
| +++ b/chrome/browser/media/router/discovery/dial/dial_media_sink_service_unittest.cc |
| @@ -3,6 +3,7 @@ |
| // found in the LICENSE file. |
| #include "chrome/browser/media/router/discovery/dial/dial_media_sink_service.h" |
| +#include "base/run_loop.h" |
| #include "base/test/mock_callback.h" |
| #include "chrome/browser/media/router/discovery/dial/dial_device_data.h" |
| #include "chrome/browser/media/router/discovery/dial/dial_registry.h" |
| @@ -56,6 +57,9 @@ class TestDialRegistry : public DialRegistry { |
| MOCK_METHOD1(RegisterObserver, void(DialRegistry::Observer* observer)); |
| MOCK_METHOD1(UnregisterObserver, void(DialRegistry::Observer* observer)); |
| + |
| + MOCK_METHOD0(StartPeriodicDiscovery, void()); |
| + MOCK_METHOD0(StopPeriodicDiscovery, void()); |
| }; |
| class MockDeviceDescriptionService : public DeviceDescriptionService { |
| @@ -88,6 +92,8 @@ class TestDialMediaSinkService : public DialMediaSinkService { |
| } |
| private: |
| + ~TestDialMediaSinkService() override {} |
|
Kevin M
2017/05/03 21:07:27
Is this necessary? The object will be deleted from
zhaobin
2017/05/04 23:52:36
Code removed.
|
| + |
| TestDialRegistry* test_dial_registry_; |
| MockDeviceDescriptionService* mock_description_service_; |
| }; |
| @@ -95,23 +101,27 @@ class TestDialMediaSinkService : public DialMediaSinkService { |
| class DialMediaSinkServiceTest : public ::testing::Test { |
| public: |
| DialMediaSinkServiceTest() |
| - : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), |
| - mock_description_service_(mock_success_cb_.Get(), mock_error_cb_.Get()), |
| - media_sink_service_(mock_sink_discovered_cb_.Get(), |
| - profile_.GetRequestContext(), |
| - &test_dial_registry_, |
| - &mock_description_service_) {} |
| - |
| - DialMediaSinkService* media_sink_service() { return &media_sink_service_; } |
| + : mock_description_service_(mock_success_cb_.Get(), mock_error_cb_.Get()), |
| + media_sink_service_( |
| + new TestDialMediaSinkService(mock_sink_discovered_cb_.Get(), |
| + profile_.GetRequestContext(), |
| + &test_dial_registry_, |
| + &mock_description_service_)) {} |
| + |
| + DialMediaSinkService* media_sink_service() { |
|
Kevin M
2017/05/03 21:07:27
Getter method isn't necessary? Can just use arrow
zhaobin
2017/05/04 23:52:36
Done.
|
| + return media_sink_service_.get(); |
| + } |
| void TestFetchCompleted(const std::vector<MediaSinkInternal>& old_sinks, |
| const std::vector<MediaSinkInternal>& new_sinks) { |
| + base::RunLoop run_loop; |
|
Kevin M
2017/05/03 21:07:27
Nit..
*The runloop doesn't have to be in scope wh
zhaobin
2017/05/04 23:52:36
Done.
|
| media_sink_service()->mrp_sinks_ = |
| std::set<MediaSinkInternal>(old_sinks.begin(), old_sinks.end()); |
| media_sink_service()->current_sinks_ = |
| std::set<MediaSinkInternal>(new_sinks.begin(), new_sinks.end()); |
| EXPECT_CALL(mock_sink_discovered_cb_, Run(new_sinks)); |
| media_sink_service()->OnFetchCompleted(); |
|
Kevin M
2017/05/03 21:07:27
Also, see my previous comment about Timer dependen
zhaobin
2017/05/04 23:52:36
This aims to test OnFetchCompleted() function only
|
| + run_loop.RunUntilIdle(); |
| } |
| protected: |
| @@ -130,11 +140,13 @@ class DialMediaSinkServiceTest : public ::testing::Test { |
| TestDialRegistry test_dial_registry_; |
| MockDeviceDescriptionService mock_description_service_; |
| - TestDialMediaSinkService media_sink_service_; |
| + scoped_refptr<TestDialMediaSinkService> media_sink_service_; |
|
Kevin M
2017/05/03 21:07:27
DISALLOW_COPY_AND_ASSIGN(DialMediaSinkServiceTest)
zhaobin
2017/05/04 23:52:36
Done.
|
| }; |
| TEST_F(DialMediaSinkServiceTest, TestStart) { |
| - EXPECT_CALL(test_dial_registry_, RegisterObserver(&media_sink_service_)); |
| + base::RunLoop run_loop; |
| + EXPECT_CALL(test_dial_registry_, RegisterObserver(media_sink_service())); |
| + EXPECT_CALL(test_dial_registry_, StartPeriodicDiscovery()); |
| media_sink_service()->Start(); |
| DialRegistry::DeviceList deviceList; |
| @@ -151,7 +163,8 @@ TEST_F(DialMediaSinkServiceTest, TestStart) { |
| EXPECT_CALL(mock_description_service_, GetDeviceDescriptions(deviceList, _)); |
| media_sink_service()->OnDialDeviceEvent(deviceList); |
| - EXPECT_TRUE(media_sink_service_.finish_timer_->IsRunning()); |
| + EXPECT_TRUE(media_sink_service()->finish_timer_->IsRunning()); |
|
Kevin M
2017/05/03 21:07:27
No need to use a getter function; you can use the
zhaobin
2017/05/04 23:52:36
Done.
|
| + run_loop.RunUntilIdle(); |
| } |
| TEST_F(DialMediaSinkServiceTest, TestOnDeviceDescriptionAvailable) { |
| @@ -177,14 +190,16 @@ TEST_F(DialMediaSinkServiceTest, TestOnDeviceDescriptionAvailable) { |
| EXPECT_EQ(size_t(1), media_sink_service()->current_sinks_.size()); |
| } |
| -TEST_F(DialMediaSinkServiceTest, TestFetchCompleted) { |
| +TEST_F(DialMediaSinkServiceTest, TestFetchCompleted_SameSink) { |
| std::vector<MediaSinkInternal> old_sinks; |
| std::vector<MediaSinkInternal> new_sinks = CreateDialMediaSinks(); |
| TestFetchCompleted(old_sinks, new_sinks); |
| // Same sink |
| + base::RunLoop run_loop; |
| EXPECT_CALL(mock_sink_discovered_cb_, Run(new_sinks)).Times(0); |
| media_sink_service()->OnFetchCompleted(); |
| + run_loop.RunUntilIdle(); |
| } |
| TEST_F(DialMediaSinkServiceTest, TestFetchCompleted_OneNewSink) { |