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

Side by Side Diff: chrome/browser/media/router/discovery/media_sink_service_base_unittest.cc

Issue 2878103004: [Media Router] Create MediaSinkServiceBase and make DialMediaSinkService inherit from it (Closed)
Patch Set: rename DialMediaSinkService to DialMediaSinkServiceImpl Created 3 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/media/router/discovery/media_sink_service_base.h"
6 #include "base/test/mock_callback.h"
7 #include "base/timer/mock_timer.h"
8 #include "chrome/browser/media/router/test_helper.h"
9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 using ::testing::_;
13 using ::testing::Return;
14
15 namespace {
16
17 media_router::DialSinkExtraData CreateDialSinkExtraData(
18 const std::string& model_name,
19 const std::string& ip_address,
20 const std::string& app_url) {
21 media_router::DialSinkExtraData dial_extra_data;
22 EXPECT_TRUE(dial_extra_data.ip_address.AssignFromIPLiteral(ip_address));
23 dial_extra_data.model_name = model_name;
24 dial_extra_data.app_url = GURL(app_url);
25 return dial_extra_data;
26 }
27
28 std::vector<media_router::MediaSinkInternal> CreateDialMediaSinks() {
29 media_router::MediaSink sink1("sink1", "sink_name_1",
30 media_router::MediaSink::IconType::CAST);
31 media_router::DialSinkExtraData extra_data1 = CreateDialSinkExtraData(
32 "model_name1", "192.168.1.1", "https://example1.com");
33
34 media_router::MediaSink sink2("sink2", "sink_name_2",
35 media_router::MediaSink::IconType::CAST);
36 media_router::DialSinkExtraData extra_data2 = CreateDialSinkExtraData(
37 "model_name2", "192.168.1.2", "https://example2.com");
38
39 std::vector<media_router::MediaSinkInternal> sinks;
40 sinks.push_back(media_router::MediaSinkInternal(sink1, extra_data1));
41 sinks.push_back(media_router::MediaSinkInternal(sink2, extra_data2));
42 return sinks;
43 }
44
45 } // namespace
46
47 namespace media_router {
48
49 class TestMediaSinkServiceBase : public MediaSinkServiceBase {
50 public:
51 explicit TestMediaSinkServiceBase(const OnSinksDiscoveredCallback& callback)
52 : MediaSinkServiceBase(callback) {}
53
54 void Start() override {}
55 void Stop() override {}
56 };
57
58 class MediaSinkServiceBaseTest : public ::testing::Test {
59 public:
60 MediaSinkServiceBaseTest()
61 : // thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
62 media_sink_service_(
63 new TestMediaSinkServiceBase(mock_sink_discovered_cb_.Get())) {}
64
65 void SetUp() override {
66 mock_timer_ =
67 new base::MockTimer(true /*retain_user_task*/, false /*is_repeating*/);
68 media_sink_service_->SetTimerForTest(base::WrapUnique(mock_timer_));
69 }
70
71 void TestFetchCompleted(const std::vector<MediaSinkInternal>& old_sinks,
72 const std::vector<MediaSinkInternal>& new_sinks) {
73 media_sink_service_->mrp_sinks_ =
74 std::set<MediaSinkInternal>(old_sinks.begin(), old_sinks.end());
75 media_sink_service_->current_sinks_ =
76 std::set<MediaSinkInternal>(new_sinks.begin(), new_sinks.end());
77 EXPECT_CALL(mock_sink_discovered_cb_, Run(new_sinks));
78 media_sink_service_->OnFetchCompleted();
79 }
80
81 protected:
82 base::MockCallback<MediaSinkService::OnSinksDiscoveredCallback>
83 mock_sink_discovered_cb_;
84 base::MockTimer* mock_timer_;
85
86 std::unique_ptr<TestMediaSinkServiceBase> media_sink_service_;
87
88 DISALLOW_COPY_AND_ASSIGN(MediaSinkServiceBaseTest);
89 };
90
91 TEST_F(MediaSinkServiceBaseTest, TestFetchCompleted_SameSink) {
92 std::vector<MediaSinkInternal> old_sinks;
93 std::vector<MediaSinkInternal> new_sinks = CreateDialMediaSinks();
94 TestFetchCompleted(old_sinks, new_sinks);
95
96 // Same sink
97 EXPECT_CALL(mock_sink_discovered_cb_, Run(new_sinks)).Times(0);
98 media_sink_service_->OnFetchCompleted();
99 }
100
101 TEST_F(MediaSinkServiceBaseTest, TestFetchCompleted_OneNewSink) {
102 std::vector<MediaSinkInternal> old_sinks = CreateDialMediaSinks();
103 std::vector<MediaSinkInternal> new_sinks = CreateDialMediaSinks();
104 MediaSink sink3("sink3", "sink_name_3", MediaSink::IconType::CAST);
105 DialSinkExtraData extra_data3 = CreateDialSinkExtraData(
106 "model_name3", "192.168.1.3", "https://example3.com");
107 new_sinks.push_back(MediaSinkInternal(sink3, extra_data3));
108 TestFetchCompleted(old_sinks, new_sinks);
109 }
110
111 TEST_F(MediaSinkServiceBaseTest, TestFetchCompleted_RemovedOneSink) {
112 std::vector<MediaSinkInternal> old_sinks = CreateDialMediaSinks();
113 std::vector<MediaSinkInternal> new_sinks = CreateDialMediaSinks();
114 new_sinks.erase(new_sinks.begin());
115 TestFetchCompleted(old_sinks, new_sinks);
116 }
117
118 TEST_F(MediaSinkServiceBaseTest, TestFetchCompleted_UpdatedOneSink) {
119 std::vector<MediaSinkInternal> old_sinks = CreateDialMediaSinks();
120 std::vector<MediaSinkInternal> new_sinks = CreateDialMediaSinks();
121 new_sinks[0].set_name("sink_name_4");
122 TestFetchCompleted(old_sinks, new_sinks);
123 }
124
125 TEST_F(MediaSinkServiceBaseTest, TestFetchCompleted_Mixed) {
126 std::vector<MediaSinkInternal> old_sinks = CreateDialMediaSinks();
127
128 MediaSink sink1("sink1", "sink_name_1", MediaSink::IconType::CAST);
129 DialSinkExtraData extra_data2 = CreateDialSinkExtraData(
130 "model_name2", "192.168.1.2", "https://example2.com");
131
132 MediaSink sink3("sink3", "sink_name_3", MediaSink::IconType::CAST);
133 DialSinkExtraData extra_data3 = CreateDialSinkExtraData(
134 "model_name3", "192.168.1.3", "https://example3.com");
135
136 std::vector<MediaSinkInternal> new_sinks;
137 new_sinks.push_back(MediaSinkInternal(sink1, extra_data2));
138 new_sinks.push_back(MediaSinkInternal(sink3, extra_data3));
139
140 TestFetchCompleted(old_sinks, new_sinks);
141 }
142
143 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698