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; |