Index: base/timer/timer_unittest.cc |
diff --git a/base/timer/timer_unittest.cc b/base/timer/timer_unittest.cc |
index 1c49269bfe95111f2cb94f55fbad2a65dec9e20c..6e6226a2c78900a551795a4a72a354b232ec1efb 100644 |
--- a/base/timer/timer_unittest.cc |
+++ b/base/timer/timer_unittest.cc |
@@ -598,6 +598,70 @@ TEST(TimerTest, RetainNonRepeatIsRunning) { |
EXPECT_TRUE(timer.IsRunning()); |
} |
+//----------------------------------------------------------------------------- |
+ |
+TEST(TimerTest, RetainRepeatGetTimeToCallback) { |
+ MessageLoop loop; |
+ Timer timer(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback), |
+ true); |
+ EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback()); |
+ timer.Reset(); |
+ EXPECT_NE(TimeDelta::Max(), timer.GetTimeToCallback()); |
+ timer.Stop(); |
+ EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback()); |
+ timer.Reset(); |
+ EXPECT_NE(TimeDelta::Max(), timer.GetTimeToCallback()); |
+} |
+ |
+TEST(TimerTest, RetainNonRepeatGetTimeToCallback) { |
+ MessageLoop loop; |
+ Timer timer(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback), |
+ false); |
+ EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback()); |
+ timer.Reset(); |
+ EXPECT_NE(TimeDelta::Max(), timer.GetTimeToCallback()); |
+ timer.Stop(); |
+ EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback()); |
+ timer.Reset(); |
+ EXPECT_NE(TimeDelta::Max(), 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; |