1// Copyright (c) 2012 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 "net/quic/quic_time.h" 6#include "net/quic/test_tools/mock_clock.h" 7#include "testing/gtest/include/gtest/gtest.h" 8 9namespace net { 10namespace test { 11 12TEST(QuicTimeDeltaTest, Zero) { 13 EXPECT_TRUE(QuicTime::Delta::Zero().IsZero()); 14 EXPECT_FALSE(QuicTime::Delta::Zero().IsInfinite()); 15 EXPECT_FALSE(QuicTime::Delta::FromMilliseconds(1).IsZero()); 16} 17 18TEST(QuicTimeDeltaTest, Infinite) { 19 EXPECT_TRUE(QuicTime::Delta::Infinite().IsInfinite()); 20 EXPECT_FALSE(QuicTime::Delta::Zero().IsInfinite()); 21 EXPECT_FALSE(QuicTime::Delta::FromMilliseconds(1).IsInfinite()); 22} 23 24TEST(QuicTimeDeltaTest, FromTo) { 25 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(1), 26 QuicTime::Delta::FromMicroseconds(1000)); 27 EXPECT_EQ(QuicTime::Delta::FromSeconds(1), 28 QuicTime::Delta::FromMilliseconds(1000)); 29 EXPECT_EQ(QuicTime::Delta::FromSeconds(1), 30 QuicTime::Delta::FromMicroseconds(1000000)); 31 32 EXPECT_EQ(1, QuicTime::Delta::FromMicroseconds(1000).ToMilliseconds()); 33 EXPECT_EQ(2, QuicTime::Delta::FromMilliseconds(2000).ToSeconds()); 34 EXPECT_EQ(1000, QuicTime::Delta::FromMilliseconds(1).ToMicroseconds()); 35 EXPECT_EQ(1, QuicTime::Delta::FromMicroseconds(1000).ToMilliseconds()); 36 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(2000).ToMicroseconds(), 37 QuicTime::Delta::FromSeconds(2).ToMicroseconds()); 38} 39 40TEST(QuicTimeDeltaTest, Add) { 41 EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2000), 42 QuicTime::Delta::Zero().Add(QuicTime::Delta::FromMilliseconds(2))); 43} 44 45TEST(QuicTimeDeltaTest, Subtract) { 46 EXPECT_EQ(QuicTime::Delta::FromMicroseconds(1000), 47 QuicTime::Delta::FromMilliseconds(2).Subtract( 48 QuicTime::Delta::FromMilliseconds(1))); 49} 50 51TEST(QuicTimeDeltaTest, Multiply) { 52 int i = 2; 53 EXPECT_EQ(QuicTime::Delta::FromMicroseconds(4000), 54 QuicTime::Delta::FromMilliseconds(2).Multiply(i)); 55 double d = 2; 56 EXPECT_EQ(QuicTime::Delta::FromMicroseconds(4000), 57 QuicTime::Delta::FromMilliseconds(2).Multiply(d)); 58} 59 60TEST(QuicTimeDeltaTest, Max) { 61 EXPECT_EQ(QuicTime::Delta::FromMicroseconds(2000), 62 QuicTime::Delta::Max(QuicTime::Delta::FromMicroseconds(1000), 63 QuicTime::Delta::FromMicroseconds(2000))); 64} 65 66TEST(QuicTimeDeltaTest, NotEqual) { 67 EXPECT_TRUE(QuicTime::Delta::FromSeconds(0) != 68 QuicTime::Delta::FromSeconds(1)); 69 EXPECT_FALSE(QuicTime::Delta::FromSeconds(0) != 70 QuicTime::Delta::FromSeconds(0)); 71} 72 73class QuicTimeTest : public ::testing::Test { 74 protected: 75 MockClock clock_; 76}; 77 78TEST_F(QuicTimeTest, Initialized) { 79 EXPECT_FALSE(QuicTime::Zero().IsInitialized()); 80 EXPECT_TRUE(QuicTime::Zero().Add( 81 QuicTime::Delta::FromMicroseconds(1)).IsInitialized()); 82} 83 84TEST_F(QuicTimeTest, Add) { 85 QuicTime time_1 = QuicTime::Zero().Add( 86 QuicTime::Delta::FromMilliseconds(1)); 87 QuicTime time_2 = QuicTime::Zero().Add( 88 QuicTime::Delta::FromMilliseconds(2)); 89 90 QuicTime::Delta diff = time_2.Subtract(time_1); 91 92 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(1), diff); 93 EXPECT_EQ(1000, diff.ToMicroseconds()); 94 EXPECT_EQ(1, diff.ToMilliseconds()); 95} 96 97TEST_F(QuicTimeTest, Subtract) { 98 QuicTime time_1 = QuicTime::Zero().Add( 99 QuicTime::Delta::FromMilliseconds(1)); 100 QuicTime time_2 = QuicTime::Zero().Add( 101 QuicTime::Delta::FromMilliseconds(2)); 102 103 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(1), time_2.Subtract(time_1)); 104} 105 106TEST_F(QuicTimeTest, SubtractDelta) { 107 QuicTime time = QuicTime::Zero().Add( 108 QuicTime::Delta::FromMilliseconds(2)); 109 EXPECT_EQ(QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(1)), 110 time.Subtract(QuicTime::Delta::FromMilliseconds(1))); 111} 112 113TEST_F(QuicTimeTest, Max) { 114 QuicTime time_1 = QuicTime::Zero().Add( 115 QuicTime::Delta::FromMilliseconds(1)); 116 QuicTime time_2 = QuicTime::Zero().Add( 117 QuicTime::Delta::FromMilliseconds(2)); 118 119 EXPECT_EQ(time_2, QuicTime::Max(time_1, time_2)); 120} 121 122TEST_F(QuicTimeTest, MockClock) { 123 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); 124 125 QuicTime now = clock_.ApproximateNow(); 126 QuicTime time = QuicTime::Zero().Add(QuicTime::Delta::FromMicroseconds(1000)); 127 128 EXPECT_EQ(now, time); 129 130 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); 131 now = clock_.ApproximateNow(); 132 133 EXPECT_NE(now, time); 134 135 time = time.Add(QuicTime::Delta::FromMilliseconds(1)); 136 EXPECT_EQ(now, time); 137} 138 139TEST_F(QuicTimeTest, LE) { 140 const QuicTime zero = QuicTime::Zero(); 141 const QuicTime one = zero.Add(QuicTime::Delta::FromSeconds(1)); 142 EXPECT_TRUE(zero <= zero); 143 EXPECT_TRUE(zero <= one); 144 EXPECT_TRUE(one <= one); 145 EXPECT_FALSE(one <= zero); 146} 147 148} // namespace test 149} // namespace net 150