Index: components/data_reduction_proxy/core/common/data_reduction_proxy_util_unittest.cc |
diff --git a/components/data_reduction_proxy/core/common/data_reduction_proxy_util_unittest.cc b/components/data_reduction_proxy/core/common/data_reduction_proxy_util_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a08273f71e8589d540790dd7487913c2e5422a0c |
--- /dev/null |
+++ b/components/data_reduction_proxy/core/common/data_reduction_proxy_util_unittest.cc |
@@ -0,0 +1,96 @@ |
+// Copyright 2015 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 "components/data_reduction_proxy/core/common/data_reduction_proxy_util.h" |
+ |
+#include <stdint.h> |
+ |
+#include <string> |
+ |
+#include "base/time/time.h" |
+#include "components/data_reduction_proxy/proto/client_config.pb.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace data_reduction_proxy { |
+ |
+namespace { |
+ |
+const char kFutureTime[] = "31 Dec 2020 23:59:59.001"; |
+ |
+} // namespace |
+ |
+class DataReductionProxyClientProtobufParserTest : public testing::Test { |
+ protected: |
+ void SetUp() override { |
+ EXPECT_TRUE(base::Time::FromUTCString(kFutureTime, &future_time_)); |
+ } |
+ |
+ const base::Time& GetFutureTime() const { return future_time_; } |
+ |
+ private: |
+ base::Time future_time_; |
+}; |
+ |
+TEST_F(DataReductionProxyClientProtobufParserTest, TimeDeltaToFromDuration) { |
+ const struct { |
+ std::string test_name; |
+ base::TimeDelta time_delta; |
+ int64_t seconds; |
+ int32_t nanos; |
+ } tests[] = { |
+ { |
+ "Second", base::TimeDelta::FromSeconds(1), 1, 0, |
+ }, |
+ { |
+ "-1 Second", base::TimeDelta::FromSeconds(-1), -1, 0, |
+ }, |
+ { |
+ "1.5 Seconds", base::TimeDelta::FromMilliseconds(1500), 1, |
+ base::Time::kNanosecondsPerSecond / 2, |
+ }, |
+ }; |
+ |
+ for (const auto& test : tests) { |
+ Duration duration; |
+ protobuf_parser::TimeDeltaToDuration(test.time_delta, &duration); |
+ EXPECT_EQ(test.seconds, duration.seconds()) << test.test_name; |
+ EXPECT_EQ(test.nanos, duration.nanos()) << test.test_name; |
+ duration.set_seconds(test.seconds); |
+ duration.set_nanos(test.nanos); |
+ EXPECT_EQ(test.time_delta, protobuf_parser::DurationToTimeDelta(duration)) |
+ << test.test_name; |
+ } |
+} |
+ |
+TEST_F(DataReductionProxyClientProtobufParserTest, TimeStampToFromTime) { |
+ const struct { |
+ std::string test_name; |
+ base::Time time; |
+ int64_t seconds; |
+ int32_t nanos; |
+ } tests[] = { |
+ { |
+ "Second", base::Time::UnixEpoch() + base::TimeDelta::FromSeconds(1), |
+ 1, 0, |
+ }, |
+ { |
+ "1.5 Seconds", |
+ base::Time::UnixEpoch() + base::TimeDelta::FromMilliseconds(1500), 1, |
+ base::Time::kNanosecondsPerSecond / 2, |
+ }, |
+ }; |
+ |
+ for (const auto& test : tests) { |
+ Timestamp timestamp; |
+ protobuf_parser::TimeToTimestamp(test.time, ×tamp); |
+ EXPECT_EQ(test.seconds, timestamp.seconds()) << test.test_name; |
+ EXPECT_EQ(test.nanos, timestamp.nanos()) << test.test_name; |
+ timestamp.set_seconds(test.seconds); |
+ timestamp.set_nanos(test.nanos); |
+ EXPECT_EQ(test.time, protobuf_parser::TimestampToTime(timestamp)) |
+ << test.test_name; |
+ } |
+} |
+ |
+} // namespace data_reduction_proxy |