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
TEST(QuicEpollClockTest,ApproximateNowInUsec)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
TEST(QuicEpollClockTest,NowInUsec)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
TEST(QuicEpollClockTest,WallNow)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