diff options
author | qsr@chromium.org <qsr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-06 15:22:35 +0000 |
---|---|---|
committer | qsr@chromium.org <qsr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-06 15:22:35 +0000 |
commit | e495c5393c6a0a2562350cb54abee463bd9b5501 (patch) | |
tree | 30ee805f7b91c0cbf69074a39d74ccadf24b78cb /base/timer/timer_unittest.cc | |
parent | 423d3ee44cb11472ec24c048cc3ae1cf5494416d (diff) | |
download | chromium_src-e495c5393c6a0a2562350cb54abee463bd9b5501.zip chromium_src-e495c5393c6a0a2562350cb54abee463bd9b5501.tar.gz chromium_src-e495c5393c6a0a2562350cb54abee463bd9b5501.tar.bz2 |
Adding tests for repeating timers with 0 delay.
R=mark@chromium.org
Review URL: https://codereview.chromium.org/105103002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@239222 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/timer/timer_unittest.cc')
-rw-r--r-- | base/timer/timer_unittest.cc | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/base/timer/timer_unittest.cc b/base/timer/timer_unittest.cc index 417d258f..728e861 100644 --- a/base/timer/timer_unittest.cc +++ b/base/timer/timer_unittest.cc @@ -64,23 +64,24 @@ class OneShotSelfDeletingTimerTester { class RepeatingTimerTester { public: - explicit RepeatingTimerTester(bool* did_run) - : did_run_(did_run), counter_(10) { + explicit RepeatingTimerTester(bool* did_run, const TimeDelta& delay) + : did_run_(did_run), counter_(10), delay_(delay) { } void Start() { - timer_.Start(FROM_HERE, TimeDelta::FromMilliseconds(10), this, - &RepeatingTimerTester::Run); + timer_.Start(FROM_HERE, delay_, this, &RepeatingTimerTester::Run); } private: void Run() { if (--counter_ == 0) { *did_run_ = true; + timer_.Stop(); base::MessageLoop::current()->QuitWhenIdle(); } } bool* did_run_; int counter_; + TimeDelta delay_; base::RepeatingTimer<RepeatingTimerTester> timer_; }; @@ -131,11 +132,12 @@ void RunTest_OneShotSelfDeletingTimer( EXPECT_TRUE(did_run); } -void RunTest_RepeatingTimer(base::MessageLoop::Type message_loop_type) { +void RunTest_RepeatingTimer(base::MessageLoop::Type message_loop_type, + const TimeDelta& delay) { base::MessageLoop loop(message_loop_type); bool did_run = false; - RepeatingTimerTester f(&did_run); + RepeatingTimerTester f(&did_run, delay); f.Start(); base::MessageLoop::current()->Run(); @@ -143,11 +145,12 @@ void RunTest_RepeatingTimer(base::MessageLoop::Type message_loop_type) { EXPECT_TRUE(did_run); } -void RunTest_RepeatingTimer_Cancel(base::MessageLoop::Type message_loop_type) { +void RunTest_RepeatingTimer_Cancel(base::MessageLoop::Type message_loop_type, + const TimeDelta& delay) { base::MessageLoop loop(message_loop_type); bool did_run_a = false; - RepeatingTimerTester* a = new RepeatingTimerTester(&did_run_a); + RepeatingTimerTester* a = new RepeatingTimerTester(&did_run_a, delay); // This should run before the timer expires. base::MessageLoop::current()->DeleteSoon(FROM_HERE, a); @@ -156,7 +159,7 @@ void RunTest_RepeatingTimer_Cancel(base::MessageLoop::Type message_loop_type) { a->Start(); bool did_run_b = false; - RepeatingTimerTester b(&did_run_b); + RepeatingTimerTester b(&did_run_b, delay); b.Start(); base::MessageLoop::current()->Run(); @@ -309,13 +312,29 @@ TEST(TimerTest, OneShotSelfDeletingTimer) { TEST(TimerTest, RepeatingTimer) { for (int i = 0; i < kNumTestingMessageLoops; i++) { - RunTest_RepeatingTimer(testing_message_loops[i]); + RunTest_RepeatingTimer(testing_message_loops[i], + TimeDelta::FromMilliseconds(10)); } } TEST(TimerTest, RepeatingTimer_Cancel) { for (int i = 0; i < kNumTestingMessageLoops; i++) { - RunTest_RepeatingTimer_Cancel(testing_message_loops[i]); + RunTest_RepeatingTimer_Cancel(testing_message_loops[i], + TimeDelta::FromMilliseconds(10)); + } +} + +TEST(TimerTest, RepeatingTimerZeroDelay) { + for (int i = 0; i < kNumTestingMessageLoops; i++) { + RunTest_RepeatingTimer(testing_message_loops[i], + TimeDelta::FromMilliseconds(0)); + } +} + +TEST(TimerTest, RepeatingTimerZeroDelay_Cancel) { + for (int i = 0; i < kNumTestingMessageLoops; i++) { + RunTest_RepeatingTimer_Cancel(testing_message_loops[i], + TimeDelta::FromMilliseconds(0)); } } |