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/tools/quic/quic_epoll_clock.h" 6 7 #include "net/tools/quic/test_tools/mock_epoll_server.h" 8 #include "testing/gmock/include/gmock/gmock.h" 9 10 namespace net { 11 namespace tools { 12 namespace test { 13 14 TEST(QuicEpollClockTest, ApproximateNowInUsec) { 15 MockEpollServer epoll_server; 16 QuicEpollClock clock(&epoll_server); 17 18 epoll_server.set_now_in_usec(1000000); 19 EXPECT_EQ(1000000, 20 clock.ApproximateNow().Subtract(QuicTime::Zero()).ToMicroseconds()); 21 22 epoll_server.AdvanceBy(5); 23 EXPECT_EQ(1000005, 24 clock.ApproximateNow().Subtract(QuicTime::Zero()).ToMicroseconds()); 25 } 26 27 TEST(QuicEpollClockTest, NowInUsec) { 28 MockEpollServer epoll_server; 29 QuicEpollClock clock(&epoll_server); 30 31 epoll_server.set_now_in_usec(1000000); 32 EXPECT_EQ(1000000, 33 clock.Now().Subtract(QuicTime::Zero()).ToMicroseconds()); 34 35 epoll_server.AdvanceBy(5); 36 EXPECT_EQ(1000005, 37 clock.Now().Subtract(QuicTime::Zero()).ToMicroseconds()); 38 } 39 40 TEST(QuicEpollClockTest, WallNow) { 41 MockEpollServer epoll_server; 42 QuicEpollClock clock(&epoll_server); 43 44 base::Time start = base::Time::Now(); 45 QuicWallTime now = clock.WallNow(); 46 base::Time end = base::Time::Now(); 47 48 // If end > start, then we can check now is between start and end. 49 if (end > start) { 50 EXPECT_LE(static_cast<uint64>(start.ToTimeT()), now.ToUNIXSeconds()); 51 EXPECT_LE(now.ToUNIXSeconds(), static_cast<uint64>(end.ToTimeT())); 52 } 53 } 54 55 } // namespace test 56 } // namespace tools 57 } // namespace net 58