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

Unified Diff: base/timer/timer_unittest.cc

Issue 2557663002: GetTimeToCallback() returns estimated time to callback. (Closed)
Patch Set: 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
« base/timer/timer.h ('K') | « 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 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;
« base/timer/timer.h ('K') | « base/timer/timer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698