|  | // Copyright (c) 2012 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 "net/quic/quic_clock_skew_detector.h" | 
|  |  | 
|  | #include "net/third_party/quic/test_tools/mock_clock.h" | 
|  | #include "net/third_party/quic/test_tools/mock_random.h" | 
|  | #include "testing/gtest/include/gtest/gtest.h" | 
|  |  | 
|  | namespace net { | 
|  | namespace test { | 
|  | namespace { | 
|  |  | 
|  | class QuicClockSkewDetectorTest : public ::testing::Test { | 
|  | protected: | 
|  | QuicClockSkewDetectorTest() | 
|  | : start_ticks_time_(base::TimeTicks::Now()), | 
|  | start_wall_time_(base::Time::Now()), | 
|  | detector_(start_ticks_time_, start_wall_time_) {} | 
|  |  | 
|  | base::TimeTicks start_ticks_time_; | 
|  | base::Time start_wall_time_; | 
|  | QuicClockSkewDetector detector_; | 
|  | }; | 
|  |  | 
|  | TEST_F(QuicClockSkewDetectorTest, NoChange) { | 
|  | EXPECT_FALSE( | 
|  | detector_.ClockSkewDetected(start_ticks_time_, start_wall_time_)); | 
|  | } | 
|  |  | 
|  | TEST_F(QuicClockSkewDetectorTest, NoOffset) { | 
|  | base::TimeDelta delta = base::TimeDelta::FromSeconds(57); | 
|  | EXPECT_FALSE(detector_.ClockSkewDetected(start_ticks_time_ + delta, | 
|  | start_wall_time_ + delta)); | 
|  | } | 
|  |  | 
|  | TEST_F(QuicClockSkewDetectorTest, SmallOffset) { | 
|  | base::TimeDelta delta = base::TimeDelta::FromMilliseconds(57); | 
|  | EXPECT_FALSE( | 
|  | detector_.ClockSkewDetected(start_ticks_time_, start_wall_time_ + delta)); | 
|  | } | 
|  |  | 
|  | TEST_F(QuicClockSkewDetectorTest, ManySmallOffset) { | 
|  | for (int i = 0; i < 10; ++i) { | 
|  | base::TimeDelta delta = base::TimeDelta::FromMilliseconds(500); | 
|  | EXPECT_FALSE(detector_.ClockSkewDetected(start_ticks_time_, | 
|  | start_wall_time_ + i * delta)); | 
|  | } | 
|  | } | 
|  |  | 
|  | TEST_F(QuicClockSkewDetectorTest, LargeOffset) { | 
|  | base::TimeDelta delta = base::TimeDelta::FromMilliseconds(1001); | 
|  | EXPECT_TRUE( | 
|  | detector_.ClockSkewDetected(start_ticks_time_, start_wall_time_ + delta)); | 
|  | } | 
|  |  | 
|  | TEST_F(QuicClockSkewDetectorTest, LargeOffsetThenSmallOffset) { | 
|  | base::TimeDelta delta = base::TimeDelta::FromMilliseconds(1001); | 
|  | EXPECT_TRUE( | 
|  | detector_.ClockSkewDetected(start_ticks_time_, start_wall_time_ + delta)); | 
|  | base::TimeDelta small_delta = base::TimeDelta::FromMilliseconds(571001); | 
|  | EXPECT_FALSE(detector_.ClockSkewDetected( | 
|  | start_ticks_time_ + small_delta, start_wall_time_ + delta + small_delta)); | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  | }  // namespace test | 
|  | }  // namespace net |