1 // Copyright 2014 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 "components/domain_reliability/dispatcher.h" 6 7 #include "base/bind.h" 8 #include "components/domain_reliability/test_util.h" 9 #include "testing/gtest/include/gtest/gtest.h" 10 11 namespace domain_reliability { 12 namespace { 13 14 using base::TimeDelta; 15 using base::TimeTicks; 16 17 class DomainReliabilityDispatcherTest : public testing::Test { 18 public: 19 DomainReliabilityDispatcherTest() : dispatcher_(&time_) {} 20 21 protected: 22 MockTime time_; 23 DomainReliabilityDispatcher dispatcher_; 24 }; 25 26 TEST_F(DomainReliabilityDispatcherTest, Create) { 27 } 28 29 TEST_F(DomainReliabilityDispatcherTest, TaskDoesntRunEarly) { 30 TimeDelta delay = TimeDelta::FromSeconds(1); 31 TestCallback callback; 32 33 dispatcher_.ScheduleTask(callback.callback(), 2 * delay, 3 * delay); 34 time_.Advance(delay); 35 dispatcher_.RunEligibleTasks(); 36 EXPECT_FALSE(callback.called()); 37 } 38 39 TEST_F(DomainReliabilityDispatcherTest, TaskRunsWhenEligible) { 40 TimeDelta delay = TimeDelta::FromSeconds(1); 41 TestCallback callback; 42 43 dispatcher_.ScheduleTask(callback.callback(), 2 * delay, 3 * delay); 44 time_.Advance(2 * delay); 45 EXPECT_FALSE(callback.called()); 46 dispatcher_.RunEligibleTasks(); 47 EXPECT_TRUE(callback.called()); 48 time_.Advance(delay); 49 } 50 51 TEST_F(DomainReliabilityDispatcherTest, TaskRunsAtDeadline) { 52 TimeDelta delay = TimeDelta::FromSeconds(1); 53 TestCallback callback; 54 55 dispatcher_.ScheduleTask(callback.callback(), 2 * delay, 3 * delay); 56 time_.Advance(2 * delay); 57 EXPECT_FALSE(callback.called()); 58 time_.Advance(delay); 59 EXPECT_TRUE(callback.called()); 60 } 61 62 } // namespace 63 } // namespace domain_reliability 64