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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « 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 605 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 false); 616 false);
617 EXPECT_FALSE(timer.IsRunning()); 617 EXPECT_FALSE(timer.IsRunning());
618 timer.Reset(); 618 timer.Reset();
619 EXPECT_TRUE(timer.IsRunning()); 619 EXPECT_TRUE(timer.IsRunning());
620 timer.Stop(); 620 timer.Stop();
621 EXPECT_FALSE(timer.IsRunning()); 621 EXPECT_FALSE(timer.IsRunning());
622 timer.Reset(); 622 timer.Reset();
623 EXPECT_TRUE(timer.IsRunning()); 623 EXPECT_TRUE(timer.IsRunning());
624 } 624 }
625 625
626 //-----------------------------------------------------------------------------
627
628 TEST(TimerTest, RetainRepeatGetTimeToCallback) {
629 scoped_refptr<TestMockTimeTaskRunner> task_runner(
630 new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
631 std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
632 MessageLoop message_loop;
633 message_loop.SetTaskRunner(task_runner);
634 Timer timer(true, true, tick_clock.get());
635 timer.Start(FROM_HERE, TimeDelta::FromSeconds(2), Bind(&TimerTestCallback));
636 EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
637 task_runner->FastForwardBy(TimeDelta::FromSeconds(2));
638 EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
639 timer.Stop();
640 task_runner->FastForwardBy(TimeDelta::FromSeconds(2));
641 EXPECT_EQ(TimeDelta::FromSeconds(0), timer.GetTimeToCallback());
642 task_runner->FastForwardBy(TimeDelta::FromSeconds(2));
643 EXPECT_EQ(TimeDelta::FromSeconds(-2), timer.GetTimeToCallback());
644 }
645
646 TEST(TimerTest, RetainNonRepeatGetTimeToCallback) {
647 scoped_refptr<TestMockTimeTaskRunner> task_runner(
648 new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
649 std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
650 MessageLoop message_loop;
651 message_loop.SetTaskRunner(task_runner);
652 Timer timer(true, false, tick_clock.get());
653 timer.Start(FROM_HERE, TimeDelta::FromSeconds(2), Bind(&TimerTestCallback));
654 EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
655 task_runner->FastForwardBy(TimeDelta::FromSeconds(3));
656 EXPECT_EQ(TimeDelta::FromSeconds(-1), timer.GetTimeToCallback());
657 }
658
659 TEST(TimerTest, OneShotTimerWithTickClockGetTimeToCallback) {
660 scoped_refptr<TestMockTimeTaskRunner> task_runner(
661 new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
662 std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
663 MessageLoop message_loop;
664 message_loop.SetTaskRunner(task_runner);
665 Receiver receiver;
666 OneShotTimer timer(tick_clock.get());
667 EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
668 timer.Start(FROM_HERE, TimeDelta::FromSeconds(2),
669 Bind(&Receiver::OnCalled, Unretained(&receiver)));
670 EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
671 task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
672 EXPECT_EQ(TimeDelta::FromSeconds(1), timer.GetTimeToCallback());
673 task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
674 EXPECT_TRUE(receiver.WasCalled());
675 EXPECT_EQ(TimeDelta::Max(), timer.GetTimeToCallback());
676 }
677
678 TEST(TimerTest, RepeatingTimerWithTickClockTimeToCallback) {
679 scoped_refptr<TestMockTimeTaskRunner> task_runner(
680 new TestMockTimeTaskRunner(Time::Now(), TimeTicks::Now()));
681 std::unique_ptr<TickClock> tick_clock(task_runner->GetMockTickClock());
682 MessageLoop message_loop;
683 message_loop.SetTaskRunner(task_runner);
684 Receiver receiver;
685 RepeatingTimer timer(tick_clock.get());
686 timer.Start(FROM_HERE, TimeDelta::FromSeconds(2),
687 Bind(&Receiver::OnCalled, Unretained(&receiver)));
688 EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
689 task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
690 EXPECT_EQ(TimeDelta::FromSeconds(1), timer.GetTimeToCallback());
691 task_runner->FastForwardBy(TimeDelta::FromSeconds(1));
692 EXPECT_EQ(TimeDelta::FromSeconds(2), timer.GetTimeToCallback());
693 }
694
626 namespace { 695 namespace {
627 696
628 bool g_callback_happened1 = false; 697 bool g_callback_happened1 = false;
629 bool g_callback_happened2 = false; 698 bool g_callback_happened2 = false;
630 699
631 void ClearAllCallbackHappened() { 700 void ClearAllCallbackHappened() {
632 g_callback_happened1 = false; 701 g_callback_happened1 = false;
633 g_callback_happened2 = false; 702 g_callback_happened2 = false;
634 } 703 }
635 704
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 Bind(&SetCallbackHappened1)); 739 Bind(&SetCallbackHappened1));
671 timer.Reset(); 740 timer.Reset();
672 // Since Reset happened before task ran, the user_task must not be cleared: 741 // Since Reset happened before task ran, the user_task must not be cleared:
673 ASSERT_FALSE(timer.user_task().is_null()); 742 ASSERT_FALSE(timer.user_task().is_null());
674 RunLoop().Run(); 743 RunLoop().Run();
675 EXPECT_TRUE(g_callback_happened1); 744 EXPECT_TRUE(g_callback_happened1);
676 } 745 }
677 } 746 }
678 747
679 } // namespace base 748 } // namespace base
OLDNEW
« 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