summaryrefslogtreecommitdiffstats
path: root/base/timer/timer_unittest.cc
diff options
context:
space:
mode:
authorqsr@chromium.org <qsr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-06 15:22:35 +0000
committerqsr@chromium.org <qsr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-06 15:22:35 +0000
commite495c5393c6a0a2562350cb54abee463bd9b5501 (patch)
tree30ee805f7b91c0cbf69074a39d74ccadf24b78cb /base/timer/timer_unittest.cc
parent423d3ee44cb11472ec24c048cc3ae1cf5494416d (diff)
downloadchromium_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.cc41
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));
}
}