Index: chrome/browser/media/router/discovery/dial/dial_media_sink_cache_service_unittest.cc |
diff --git a/chrome/browser/media/router/discovery/dial/dial_media_sink_cache_service_unittest.cc b/chrome/browser/media/router/discovery/dial/dial_media_sink_cache_service_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9f488ae5b1d3466e8f4037579d73d62d1f67a374 |
--- /dev/null |
+++ b/chrome/browser/media/router/discovery/dial/dial_media_sink_cache_service_unittest.cc |
@@ -0,0 +1,106 @@ |
+// Copyright 2017 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/discovery/dial/dial_media_sink_cache_service.h" |
+#include "chrome/browser/media/router/discovery/dial/mock_device_description_service.h" |
+#include "chrome/test/base/testing_profile.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+using ::testing::_; |
+ |
+namespace media_router { |
+ |
+class DialMediaSinkCacheServiceTest : public ::testing::Test { |
+ public: |
+ void TearDown() override { cache_service_.cached_sinks_.clear(); } |
+ |
+ void AddTestDialMediaSinks() { |
+ MediaSink sink1("sink1", "sink_name_1", MediaSink::IconType::CAST); |
+ DialSinkExtraData extra_data1("192.168.1.1", "model_name1", |
+ "https://example1.com"); |
+ MediaSinkInternal dial_sink1(sink1, extra_data1); |
+ GURL gurl1 = GURL("https://device1"); |
+ base::Time last_update_time1 = |
+ base::Time::Now() - 3 * base::TimeDelta::FromSeconds(60); |
+ AddTestDialMediaSink(dial_sink1, gurl1, last_update_time1); |
+ |
+ MediaSink sink2("sink2", "sink_name_2", MediaSink::IconType::CAST); |
+ DialSinkExtraData extra_data2("192.168.1.2", "model_name2", |
+ "https://example2.com"); |
+ MediaSinkInternal dial_sink2(sink2, extra_data2); |
+ GURL gurl2 = GURL("https://device2"); |
+ base::Time last_update_time2 = base::Time::Now(); |
+ AddTestDialMediaSink(dial_sink2, gurl2, last_update_time2); |
+ } |
+ |
+ void AddTestDialMediaSink(const MediaSinkInternal& media_sink, |
+ const GURL& description_url, |
+ base::Time last_update_time) { |
+ CachedDialMediaSink dial_sink; |
+ dial_sink.sink = media_sink; |
+ dial_sink.last_update_time = last_update_time; |
+ cache_service_.cached_sinks_.insert( |
+ std::make_pair(media_sink.sink().id(), dial_sink)); |
+ } |
+ |
+ DialMediaSinkCacheService* cache_service() { return &cache_service_; } |
+ |
+ protected: |
+ const content::TestBrowserThreadBundle thread_bundle_; |
+ TestingProfile profile_; |
+ DialMediaSinkCacheService cache_service_; |
+}; |
+ |
+TEST_F(DialMediaSinkCacheServiceTest, GetAliveSinks) { |
+ auto sinks = cache_service()->GetAliveSinks(); |
+ ASSERT_TRUE(sinks.empty()); |
+ |
+ AddTestDialMediaSinks(); |
+ |
+ sinks = cache_service()->GetAliveSinks(); |
+ EXPECT_EQ(size_t(1), sinks.size()); |
+} |
+ |
+TEST_F(DialMediaSinkCacheServiceTest, TestAddOrUpdateSink) { |
+ std::string sink_id = "sink_id"; |
+ std::string sink_name = "sink_name"; |
+ std::string sink_name_updated = "sink_name_updated"; |
+ |
+ DialDeviceData device_data; |
+ device_data.set_device_description_url(GURL("http://192.168.1.1")); |
+ |
+ ParsedDialDeviceDescription desc1; |
+ desc1.unique_id = sink_id; |
+ desc1.friendly_name = sink_name; |
+ cache_service()->MayAddOrUpdateSink(device_data, desc1); |
+ |
+ auto sinks = cache_service()->GetAliveSinks(); |
+ EXPECT_EQ(size_t(1), sinks.size()); |
+ EXPECT_EQ(sink_id, sinks[0].sink().id()); |
+ EXPECT_EQ(sink_name, sinks[0].sink().name()); |
+ |
+ device_data.set_device_description_url(GURL("http://192.168.1.2")); |
+ |
+ ParsedDialDeviceDescription desc2; |
+ desc2.unique_id = sink_id; |
+ desc2.friendly_name = sink_name_updated; |
+ cache_service()->MayAddOrUpdateSink(device_data, desc2); |
+ sinks = cache_service()->GetAliveSinks(); |
+ EXPECT_EQ(size_t(1), sinks.size()); |
+ EXPECT_EQ(sink_id, sinks[0].sink().id()); |
+ EXPECT_EQ(sink_name_updated, sinks[0].sink().name()); |
+ |
+ device_data.set_device_description_url(GURL("http://192.168.1.2")); |
+ |
+ ParsedDialDeviceDescription desc3; |
+ desc3.unique_id = sink_id; |
+ desc3.friendly_name = sink_name_updated; |
+ cache_service()->MayAddOrUpdateSink(device_data, desc3); |
+ sinks = cache_service()->GetAliveSinks(); |
+ EXPECT_EQ(size_t(1), sinks.size()); |
+} |
+ |
+} // namespace media_router |