Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3120)

Unified Diff: base/timer/timer_unittest.cc

Issue 2557663002: GetTimeToCallback() returns estimated time to callback. (Closed)
Patch Set: Removed an old file that sneaked in the patchest. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/timer/timer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « base/timer/timer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698