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 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 |
OLD | NEW |