Index: components/download/internal/proto_conversions_unittest.cc |
diff --git a/components/download/internal/proto_conversions_unittest.cc b/components/download/internal/proto_conversions_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..04198c5b54b34018237f09f87f4d8b3108c0ace8 |
--- /dev/null |
+++ b/components/download/internal/proto_conversions_unittest.cc |
@@ -0,0 +1,152 @@ |
+// 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 <utility> |
+ |
+#include "base/guid.h" |
+#include "base/memory/ptr_util.h" |
+#include "components/download/internal/entry.h" |
+#include "components/download/internal/proto_conversions.h" |
+#include "components/download/internal/test/entry_utils.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace { |
+std::string TEST_URL = "https://google.com"; |
+ |
+} // namespace |
+ |
+namespace download { |
+ |
+class ProtoConversionsTest : public testing::Test, public ProtoConversions { |
+ public: |
+ ~ProtoConversionsTest() override {} |
+}; |
+ |
+TEST_F(ProtoConversionsTest, StateConversion) { |
+ Entry::State states[] = {Entry::State::NEW, Entry::State::AVAILABLE, |
+ Entry::State::ACTIVE, Entry::State::PAUSED, |
+ Entry::State::COMPLETE, Entry::State::WATCHDOG}; |
+ for (auto state : states) { |
+ ASSERT_EQ(state, RequestStateFromProto(RequestStateToProto(state))); |
+ } |
+} |
+ |
+TEST_F(ProtoConversionsTest, DownloadClientConversion) { |
+ DownloadClient clients[] = {DownloadClient::INVALID, DownloadClient::TEST, |
+ DownloadClient::OFFLINE_PAGE_PREFETCH, |
+ DownloadClient::BOUNDARY}; |
+ for (auto client : clients) { |
+ ASSERT_EQ(client, DownloadClientFromProto(DownloadClientToProto(client))); |
+ } |
+} |
+ |
+TEST_F(ProtoConversionsTest, NetworkRequirementsConversion) { |
+ SchedulingParams::NetworkRequirements values[] = { |
+ SchedulingParams::NetworkRequirements::NONE, |
+ SchedulingParams::NetworkRequirements::OPTIMISTIC, |
+ SchedulingParams::NetworkRequirements::UNMETERED}; |
+ for (auto value : values) { |
+ ASSERT_EQ(value, |
+ NetworkRequirementsFromProto(NetworkRequirementsToProto(value))); |
+ } |
+} |
+ |
+TEST_F(ProtoConversionsTest, BatteryRequirementsConversion) { |
+ SchedulingParams::BatteryRequirements values[] = { |
+ SchedulingParams::BatteryRequirements::BATTERY_INSENSITIVE, |
+ SchedulingParams::BatteryRequirements::BATTERY_SENSITIVE}; |
+ for (auto value : values) { |
+ ASSERT_EQ(value, |
+ BatteryRequirementsFromProto(BatteryRequirementsToProto(value))); |
+ } |
+} |
+ |
+TEST_F(ProtoConversionsTest, SchedulingPriorityConversion) { |
+ SchedulingParams::Priority values[] = { |
+ SchedulingParams::Priority::LOW, SchedulingParams::Priority::NORMAL, |
+ SchedulingParams::Priority::HIGH, SchedulingParams::Priority::UI, |
+ SchedulingParams::Priority::DEFAULT}; |
+ for (auto value : values) { |
+ ASSERT_EQ(value, |
+ SchedulingPriorityFromProto(SchedulingPriorityToProto(value))); |
+ } |
+} |
+ |
+TEST_F(ProtoConversionsTest, SchedulingParamsConversion) { |
+ SchedulingParams expected; |
+ expected.cancel_time = base::Time::Now(); |
+ expected.priority = SchedulingParams::Priority::DEFAULT; |
+ expected.network_requirements = |
+ SchedulingParams::NetworkRequirements::OPTIMISTIC; |
+ expected.battery_requirements = |
+ SchedulingParams::BatteryRequirements::BATTERY_SENSITIVE; |
+ |
+ protodb::SchedulingParams proto; |
+ SchedulingParamsToProto(expected, &proto); |
+ SchedulingParams actual = SchedulingParamsFromProto(proto); |
+ EXPECT_EQ(expected.cancel_time, actual.cancel_time); |
+ EXPECT_EQ(SchedulingParams::Priority::DEFAULT, actual.priority); |
+ EXPECT_EQ(SchedulingParams::NetworkRequirements::OPTIMISTIC, |
+ actual.network_requirements); |
+ EXPECT_EQ(SchedulingParams::BatteryRequirements::BATTERY_SENSITIVE, |
+ actual.battery_requirements); |
+} |
+ |
+TEST_F(ProtoConversionsTest, RequestParamsWithHeadersConversion) { |
+ RequestParams expected; |
+ expected.url = GURL(TEST_URL); |
+ expected.method = "GET"; |
+ expected.request_headers.SetHeader("key1", "value1"); |
+ expected.request_headers.SetHeader("key2", "value2"); |
+ |
+ protodb::RequestParams proto; |
+ RequestParamsToProto(expected, &proto); |
+ RequestParams actual = RequestParamsFromProto(proto); |
+ |
+ EXPECT_EQ(expected.url, actual.url); |
+ EXPECT_EQ(expected.method, actual.method); |
+ |
+ std::string out; |
+ actual.request_headers.GetHeader("key1", &out); |
+ EXPECT_EQ("value1", out); |
+ actual.request_headers.GetHeader("key2", &out); |
+ EXPECT_EQ("value2", out); |
+ EXPECT_EQ(expected.request_headers.ToString(), |
+ actual.request_headers.ToString()); |
+} |
+ |
+TEST_F(ProtoConversionsTest, EntryConversion) { |
+ Entry expected = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); |
+ Entry actual = EntryFromProto(EntryToProto(expected)); |
+ EXPECT_TRUE(test::CompareEntry(&expected, &actual)); |
+ |
+ expected = test::BuildEntry( |
+ DownloadClient::TEST, base::GenerateGUID(), base::Time::Now(), |
+ SchedulingParams::NetworkRequirements::OPTIMISTIC, |
+ SchedulingParams::BatteryRequirements::BATTERY_SENSITIVE, |
+ SchedulingParams::Priority::HIGH, GURL(TEST_URL), "GET", |
+ Entry::State::ACTIVE); |
+ actual = EntryFromProto(EntryToProto(expected)); |
+ EXPECT_TRUE(test::CompareEntry(&expected, &actual)); |
+} |
+ |
+TEST_F(ProtoConversionsTest, EntryVectorConversion) { |
+ std::vector<Entry> expected; |
+ expected.push_back( |
+ test::BuildEntry(DownloadClient::TEST, base::GenerateGUID())); |
+ expected.push_back(test::BuildEntry(DownloadClient::OFFLINE_PAGE_PREFETCH, |
+ base::GenerateGUID())); |
+ expected.push_back(test::BuildEntry( |
+ DownloadClient::TEST, base::GenerateGUID(), base::Time::Now(), |
+ SchedulingParams::NetworkRequirements::OPTIMISTIC, |
+ SchedulingParams::BatteryRequirements::BATTERY_SENSITIVE, |
+ SchedulingParams::Priority::HIGH, GURL(TEST_URL), "GET", |
+ Entry::State::ACTIVE)); |
+ |
+ auto actual = EntryVectorFromProto( |
+ EntryVectorToProto(base::MakeUnique<std::vector<Entry>>(expected))); |
+ EXPECT_TRUE(test::CompareEntryList(expected, *actual)); |
+} |
+ |
+} // namespace download |