| Index: base/timer/timer_unittest.cc
|
| diff --git a/base/timer/timer_unittest.cc b/base/timer/timer_unittest.cc
|
| index 7c3c1079d72f54be9585287c4ace5473c9c7b5f2..58029bef801e6d2b25b82b511558c381b9fb6ad9 100644
|
| --- a/base/timer/timer_unittest.cc
|
| +++ b/base/timer/timer_unittest.cc
|
| @@ -623,6 +623,75 @@ TEST(TimerTest, RetainNonRepeatIsRunning) {
|
| EXPECT_TRUE(timer.IsRunning());
|
| }
|
|
|
| +//-----------------------------------------------------------------------------
|
| +
|
| +TEST(TimerTest, RetainRepeatGetTimeToCallback) {
|
| + scoped_refptr<TestMockTimeTaskRunner> task_runner(
|
| + new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
|
| + std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
|
| + MessageLoop message_loop;
|
| + message_loop.SetTaskRunner(task_runner);
|
| + Timer timer(true, true, tick_clock.get());
|
| + timer.Start(FROM_HERE, TimeDelta::FromSeconds(2), Bind(&TimerTestCallback));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
|
| + task_runner->FastForwardBy(TimeDelta::FromSeconds(2));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
|
| + timer.Stop();
|
| + task_runner->FastForwardBy(TimeDelta::FromSeconds(2));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(0), timer.GetTimeToCallback());
|
| + task_runner->FastForwardBy(TimeDelta::FromSeconds(2));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(-2), timer.GetTimeToCallback());
|
| +}
|
| +
|
| +TEST(TimerTest, RetainNonRepeatGetTimeToCallback) {
|
| + scoped_refptr<TestMockTimeTaskRunner> task_runner(
|
| + new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
|
| + std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
|
| + MessageLoop message_loop;
|
| + message_loop.SetTaskRunner(task_runner);
|
| + Timer timer(true, false, tick_clock.get());
|
| + timer.Start(FROM_HERE, TimeDelta::FromSeconds(2), Bind(&TimerTestCallback));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
|
| + task_runner->FastForwardBy(TimeDelta::FromSeconds(3));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(-1), timer.GetTimeToCallback());
|
| +}
|
| +
|
| +TEST(TimerTest, OneShotTimerWithTickClockGetTimeToCallback) {
|
| + scoped_refptr<TestMockTimeTaskRunner> task_runner(
|
| + new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
|
| + std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
|
| + MessageLoop message_loop;
|
| + message_loop.SetTaskRunner(task_runner);
|
| + Receiver receiver;
|
| + OneShotTimer timer(tick_clock.get());
|
| + EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
|
| + timer.Start(FROM_HERE, TimeDelta::FromSeconds(2),
|
| + Bind(&Receiver::OnCalled, Unretained(&receiver)));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
|
| + task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(1), timer.GetTimeToCallback());
|
| + task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
|
| + EXPECT_TRUE(receiver.WasCalled());
|
| + EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
|
| +}
|
| +
|
| +TEST(TimerTest, RepeatingTimerWithTickClockTimeToCallback) {
|
| + scoped_refptr<TestMockTimeTaskRunner> task_runner(
|
| + new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
|
| + std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
|
| + MessageLoop message_loop;
|
| + message_loop.SetTaskRunner(task_runner);
|
| + Receiver receiver;
|
| + RepeatingTimer timer(tick_clock.get());
|
| + timer.Start(FROM_HERE, TimeDelta::FromSeconds(2),
|
| + Bind(&Receiver::OnCalled, Unretained(&receiver)));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
|
| + task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(1), timer.GetTimeToCallback());
|
| + task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
|
| + EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
|
| +}
|
| +
|
| namespace {
|
|
|
| bool g_callback_happened1 = false;
|
|
|