| OLD | NEW |
| 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 Loading... |
| 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 | |
| 695 namespace { | 626 namespace { |
| 696 | 627 |
| 697 bool g_callback_happened1 = false; | 628 bool g_callback_happened1 = false; |
| 698 bool g_callback_happened2 = false; | 629 bool g_callback_happened2 = false; |
| 699 | 630 |
| 700 void ClearAllCallbackHappened() { | 631 void ClearAllCallbackHappened() { |
| 701 g_callback_happened1 = false; | 632 g_callback_happened1 = false; |
| 702 g_callback_happened2 = false; | 633 g_callback_happened2 = false; |
| 703 } | 634 } |
| 704 | 635 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 739 Bind(&SetCallbackHappened1)); | 670 Bind(&SetCallbackHappened1)); |
| 740 timer.Reset(); | 671 timer.Reset(); |
| 741 // Since Reset happened before task ran, the user_task must not be cleared: | 672 // Since Reset happened before task ran, the user_task must not be cleared: |
| 742 ASSERT_FALSE(timer.user_task().is_null()); | 673 ASSERT_FALSE(timer.user_task().is_null()); |
| 743 RunLoop().Run(); | 674 RunLoop().Run(); |
| 744 EXPECT_TRUE(g_callback_happened1); | 675 EXPECT_TRUE(g_callback_happened1); |
| 745 } | 676 } |
| 746 } | 677 } |
| 747 | 678 |
| 748 } // namespace base | 679 } // namespace base |
| OLD | NEW |