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

Side by Side 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 unified diff | Download patch
« base/timer/timer.h ('K') | « base/timer/timer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/timer/timer.h" 5 #include "base/timer/timer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 false); 591 false);
592 EXPECT_FALSE(timer.IsRunning()); 592 EXPECT_FALSE(timer.IsRunning());
593 timer.Reset(); 593 timer.Reset();
594 EXPECT_TRUE(timer.IsRunning()); 594 EXPECT_TRUE(timer.IsRunning());
595 timer.Stop(); 595 timer.Stop();
596 EXPECT_FALSE(timer.IsRunning()); 596 EXPECT_FALSE(timer.IsRunning());
597 timer.Reset(); 597 timer.Reset();
598 EXPECT_TRUE(timer.IsRunning()); 598 EXPECT_TRUE(timer.IsRunning());
599 } 599 }
600 600
601 //-----------------------------------------------------------------------------
602
603 TEST(TimerTest, RetainRepeatGetTimeToCallback) {
604 MessageLoop loop;
605 Timer timer(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback),
606 true);
607 EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
608 timer.Reset();
609 EXPECT_NE(TimeDelta::Max(), timer.GetTimeToCallback());
610 timer.Stop();
611 EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
612 timer.Reset();
613 EXPECT_NE(TimeDelta::Max(), timer.GetTimeToCallback());
614 }
615
616 TEST(TimerTest, RetainNonRepeatGetTimeToCallback) {
617 MessageLoop loop;
618 Timer timer(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback),
619 false);
620 EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
621 timer.Reset();
622 EXPECT_NE(TimeDelta::Max(), timer.GetTimeToCallback());
623 timer.Stop();
624 EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
625 timer.Reset();
626 EXPECT_NE(TimeDelta::Max(), timer.GetTimeToCallback());
627 }
628
629 TEST(TimerTest, OneShotTimerWithTickClockGetTimeToCallback) {
630 scoped_refptr<TestMockTimeTaskRunner> task_runner(
631 new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
632 std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
633 MessageLoop message_loop;
634 message_loop.SetTaskRunner(task_runner);
635 Receiver receiver;
636 OneShotTimer timer(tick_clock.get());
637 EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
638 timer.Start(FROM_HERE, TimeDelta::FromSeconds(2),
639 Bind(&Receiver::OnCalled, Unretained(&receiver)));
640 EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
641 task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
642 EXPECT_EQ(TimeDelta::FromSeconds(1), timer.GetTimeToCallback());
643 task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
644 EXPECT_TRUE(receiver.WasCalled());
645 EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
646 }
647
648 TEST(TimerTest, RepeatingTimerWithTickClockTimeToCallback) {
649 scoped_refptr<TestMockTimeTaskRunner> task_runner(
650 new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
651 std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
652 MessageLoop message_loop;
653 message_loop.SetTaskRunner(task_runner);
654 Receiver receiver;
655 RepeatingTimer timer(tick_clock.get());
656 timer.Start(FROM_HERE, TimeDelta::FromSeconds(2),
657 Bind(&Receiver::OnCalled, Unretained(&receiver)));
658 EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
659 task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
660 EXPECT_EQ(TimeDelta::FromSeconds(1), timer.GetTimeToCallback());
661 task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
662 EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
663 }
664
601 namespace { 665 namespace {
602 666
603 bool g_callback_happened1 = false; 667 bool g_callback_happened1 = false;
604 bool g_callback_happened2 = false; 668 bool g_callback_happened2 = false;
605 669
606 void ClearAllCallbackHappened() { 670 void ClearAllCallbackHappened() {
607 g_callback_happened1 = false; 671 g_callback_happened1 = false;
608 g_callback_happened2 = false; 672 g_callback_happened2 = false;
609 } 673 }
610 674
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 Bind(&SetCallbackHappened1)); 709 Bind(&SetCallbackHappened1));
646 timer.Reset(); 710 timer.Reset();
647 // Since Reset happened before task ran, the user_task must not be cleared: 711 // Since Reset happened before task ran, the user_task must not be cleared:
648 ASSERT_FALSE(timer.user_task().is_null()); 712 ASSERT_FALSE(timer.user_task().is_null());
649 RunLoop().Run(); 713 RunLoop().Run();
650 EXPECT_TRUE(g_callback_happened1); 714 EXPECT_TRUE(g_callback_happened1);
651 } 715 }
652 } 716 }
653 717
654 } // namespace base 718 } // namespace base
OLDNEW
« 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