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 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 | 600 |
601 // MessageLoop destructs by falling out of scope. SHOULD NOT CRASH. | 601 // MessageLoop destructs by falling out of scope. SHOULD NOT CRASH. |
602 } | 602 } |
603 | 603 |
604 void TimerTestCallback() { | 604 void TimerTestCallback() { |
605 } | 605 } |
606 | 606 |
607 TEST(TimerTest, NonRepeatIsRunning) { | 607 TEST(TimerTest, NonRepeatIsRunning) { |
608 { | 608 { |
609 MessageLoop loop; | 609 MessageLoop loop; |
610 Timer timer(false, false); | 610 OneShotTimer timer; |
611 EXPECT_FALSE(timer.IsRunning()); | 611 EXPECT_FALSE(timer.IsRunning()); |
612 timer.Start(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback)); | 612 timer.Start(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback)); |
613 EXPECT_TRUE(timer.IsRunning()); | 613 EXPECT_TRUE(timer.IsRunning()); |
614 timer.Stop(); | 614 timer.Stop(); |
615 EXPECT_FALSE(timer.IsRunning()); | 615 EXPECT_FALSE(timer.IsRunning()); |
616 EXPECT_TRUE(timer.user_task().is_null()); | 616 EXPECT_TRUE(timer.user_task().is_null()); |
617 } | 617 } |
618 | 618 |
619 { | 619 { |
620 Timer timer(true, false); | 620 Timer timer(true, false); |
621 MessageLoop loop; | 621 MessageLoop loop; |
622 EXPECT_FALSE(timer.IsRunning()); | 622 EXPECT_FALSE(timer.IsRunning()); |
623 timer.Start(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback)); | 623 timer.Start(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback)); |
624 EXPECT_TRUE(timer.IsRunning()); | 624 EXPECT_TRUE(timer.IsRunning()); |
625 timer.Stop(); | 625 timer.Stop(); |
626 EXPECT_FALSE(timer.IsRunning()); | 626 EXPECT_FALSE(timer.IsRunning()); |
627 ASSERT_FALSE(timer.user_task().is_null()); | 627 ASSERT_FALSE(timer.user_task().is_null()); |
628 timer.Reset(); | 628 timer.Reset(); |
629 EXPECT_TRUE(timer.IsRunning()); | 629 EXPECT_TRUE(timer.IsRunning()); |
630 } | 630 } |
631 } | 631 } |
632 | 632 |
633 TEST(TimerTest, NonRepeatMessageLoopDeath) { | 633 TEST(TimerTest, NonRepeatMessageLoopDeath) { |
634 Timer timer(false, false); | 634 OneShotTimer timer; |
635 { | 635 { |
636 MessageLoop loop; | 636 MessageLoop loop; |
637 EXPECT_FALSE(timer.IsRunning()); | 637 EXPECT_FALSE(timer.IsRunning()); |
638 timer.Start(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback)); | 638 timer.Start(FROM_HERE, TimeDelta::FromDays(1), Bind(&TimerTestCallback)); |
639 EXPECT_TRUE(timer.IsRunning()); | 639 EXPECT_TRUE(timer.IsRunning()); |
640 } | 640 } |
641 EXPECT_FALSE(timer.IsRunning()); | 641 EXPECT_FALSE(timer.IsRunning()); |
642 EXPECT_TRUE(timer.user_task().is_null()); | 642 EXPECT_TRUE(timer.user_task().is_null()); |
643 } | 643 } |
644 | 644 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
687 g_callback_happened2 = true; | 687 g_callback_happened2 = true; |
688 MessageLoop::current()->QuitWhenIdle(); | 688 MessageLoop::current()->QuitWhenIdle(); |
689 } | 689 } |
690 | 690 |
691 } // namespace | 691 } // namespace |
692 | 692 |
693 TEST(TimerTest, ContinuationStopStart) { | 693 TEST(TimerTest, ContinuationStopStart) { |
694 { | 694 { |
695 ClearAllCallbackHappened(); | 695 ClearAllCallbackHappened(); |
696 MessageLoop loop; | 696 MessageLoop loop; |
697 Timer timer(false, false); | 697 OneShotTimer timer; |
698 timer.Start(FROM_HERE, TimeDelta::FromMilliseconds(10), | 698 timer.Start(FROM_HERE, TimeDelta::FromMilliseconds(10), |
699 Bind(&SetCallbackHappened1)); | 699 Bind(&SetCallbackHappened1)); |
700 timer.Stop(); | 700 timer.Stop(); |
701 timer.Start(FROM_HERE, TimeDelta::FromMilliseconds(40), | 701 timer.Start(FROM_HERE, TimeDelta::FromMilliseconds(40), |
702 Bind(&SetCallbackHappened2)); | 702 Bind(&SetCallbackHappened2)); |
703 RunLoop().Run(); | 703 RunLoop().Run(); |
704 EXPECT_FALSE(g_callback_happened1); | 704 EXPECT_FALSE(g_callback_happened1); |
705 EXPECT_TRUE(g_callback_happened2); | 705 EXPECT_TRUE(g_callback_happened2); |
706 } | 706 } |
707 } | 707 } |
708 | 708 |
709 TEST(TimerTest, ContinuationReset) { | 709 TEST(TimerTest, ContinuationReset) { |
710 { | 710 { |
711 ClearAllCallbackHappened(); | 711 ClearAllCallbackHappened(); |
712 MessageLoop loop; | 712 MessageLoop loop; |
713 Timer timer(false, false); | 713 OneShotTimer timer; |
714 timer.Start(FROM_HERE, TimeDelta::FromMilliseconds(10), | 714 timer.Start(FROM_HERE, TimeDelta::FromMilliseconds(10), |
715 Bind(&SetCallbackHappened1)); | 715 Bind(&SetCallbackHappened1)); |
716 timer.Reset(); | 716 timer.Reset(); |
717 // Since Reset happened before task ran, the user_task must not be cleared: | 717 // Since Reset happened before task ran, the user_task must not be cleared: |
718 ASSERT_FALSE(timer.user_task().is_null()); | 718 ASSERT_FALSE(timer.user_task().is_null()); |
719 RunLoop().Run(); | 719 RunLoop().Run(); |
720 EXPECT_TRUE(g_callback_happened1); | 720 EXPECT_TRUE(g_callback_happened1); |
721 } | 721 } |
722 } | 722 } |
723 | 723 |
724 } // namespace base | 724 } // namespace base |
OLD | NEW |