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 11namespace domain_reliability { 12namespace { 13 14using base::TimeDelta; 15using base::TimeTicks; 16 17class DomainReliabilityDispatcherTest : public testing::Test { 18 public: 19 DomainReliabilityDispatcherTest() : dispatcher_(&time_) {} 20 21 protected: 22 MockTime time_; 23 DomainReliabilityDispatcher dispatcher_; 24}; 25 26TEST_F(DomainReliabilityDispatcherTest, Create) { 27} 28 29TEST_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 39TEST_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 51TEST_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