Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(261)

Side by Side Diff: third_party/WebKit/Source/platform/TimerTest.cpp

Issue 1373833003: Make WTF::Vector work with gmock matchers, refactor some tests to use it (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Missed a couple Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "config.h" 5 #include "config.h"
6 #include "platform/Timer.h" 6 #include "platform/Timer.h"
7 7
8 #include "public/platform/Platform.h" 8 #include "public/platform/Platform.h"
9 #include "public/platform/WebScheduler.h" 9 #include "public/platform/WebScheduler.h"
10 #include "public/platform/WebThread.h" 10 #include "public/platform/WebThread.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 return nullptr; 128 return nullptr;
129 } 129 }
130 130
131 void postTimerTaskAt(const WebTraceLocation&, WebTaskRunner::Task* task, dou ble monotonicTime) override 131 void postTimerTaskAt(const WebTraceLocation&, WebTaskRunner::Task* task, dou ble monotonicTime) override
132 { 132 {
133 m_timerTasks.push(DelayedTask(task, (monotonicTime - monotonicallyIncrea singTime()) * 1000)); 133 m_timerTasks.push(DelayedTask(task, (monotonicTime - monotonicallyIncrea singTime()) * 1000));
134 } 134 }
135 135
136 void runUntilIdle() 136 void runUntilIdle()
137 { 137 {
138 while (!m_timerTasks.empty()) { 138 while (m_timerTasks.size()) {
139 gCurrentTimeSecs = m_timerTasks.top().runTimeSeconds(); 139 gCurrentTimeSecs = m_timerTasks.top().runTimeSeconds();
140 m_timerTasks.top().run(); 140 m_timerTasks.top().run();
141 m_timerTasks.pop(); 141 m_timerTasks.pop();
142 } 142 }
143 } 143 }
144 144
145 void runUntilIdleOrDeadlinePassed(double deadline) 145 void runUntilIdleOrDeadlinePassed(double deadline)
146 { 146 {
147 while (!m_timerTasks.empty()) { 147 while (m_timerTasks.size()) {
148 if (m_timerTasks.top().runTimeSeconds() > deadline) { 148 if (m_timerTasks.top().runTimeSeconds() > deadline) {
149 gCurrentTimeSecs = deadline; 149 gCurrentTimeSecs = deadline;
150 break; 150 break;
151 } 151 }
152 gCurrentTimeSecs = m_timerTasks.top().runTimeSeconds(); 152 gCurrentTimeSecs = m_timerTasks.top().runTimeSeconds();
153 m_timerTasks.top().run(); 153 m_timerTasks.top().run();
154 m_timerTasks.pop(); 154 m_timerTasks.pop();
155 } 155 }
156 } 156 }
157 157
158 void runPendingTasks() 158 void runPendingTasks()
159 { 159 {
160 while (!m_timerTasks.empty() && m_timerTasks.top().runTimeSeconds() <= g CurrentTimeSecs) { 160 while (m_timerTasks.size() && m_timerTasks.top().runTimeSeconds() <= gCu rrentTimeSecs) {
161 m_timerTasks.top().run(); 161 m_timerTasks.top().run();
162 m_timerTasks.pop(); 162 m_timerTasks.pop();
163 } 163 }
164 } 164 }
165 165
166 bool hasOneTimerTask() const 166 bool hasOneTimerTask() const
167 { 167 {
168 return m_timerTasks.size() == 1; 168 return m_timerTasks.size() == 1;
169 } 169 }
170 170
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 m_startTime = gCurrentTimeSecs; 291 m_startTime = gCurrentTimeSecs;
292 } 292 }
293 293
294 void TearDown() override 294 void TearDown() override
295 { 295 {
296 Platform::initialize(m_oldPlatform); 296 Platform::initialize(m_oldPlatform);
297 } 297 }
298 298
299 void countingTask(Timer<TimerTest>*) 299 void countingTask(Timer<TimerTest>*)
300 { 300 {
301 m_runTimes.push_back(monotonicallyIncreasingTime()); 301 m_runTimes.append(monotonicallyIncreasingTime());
302 } 302 }
303 303
304 void recordNextFireTimeTask(Timer<TimerTest>* timer) 304 void recordNextFireTimeTask(Timer<TimerTest>* timer)
305 { 305 {
306 m_nextFireTimes.push_back(monotonicallyIncreasingTime() + timer->nextFir eInterval()); 306 m_nextFireTimes.append(monotonicallyIncreasingTime() + timer->nextFireIn terval());
307 } 307 }
308 308
309 void advanceTimeBy(double timeSecs) 309 void advanceTimeBy(double timeSecs)
310 { 310 {
311 gCurrentTimeSecs += timeSecs; 311 gCurrentTimeSecs += timeSecs;
312 } 312 }
313 313
314 void runUntilIdle() 314 void runUntilIdle()
315 { 315 {
316 m_platform->runUntilIdle(); 316 m_platform->runUntilIdle();
(...skipping 14 matching lines...) Expand all
331 return m_platform->hasOneTimerTask(); 331 return m_platform->hasOneTimerTask();
332 } 332 }
333 333
334 double nextTimerTaskDelaySecs() const 334 double nextTimerTaskDelaySecs() const
335 { 335 {
336 return m_platform->nextTimerTaskDelaySecs(); 336 return m_platform->nextTimerTaskDelaySecs();
337 } 337 }
338 338
339 protected: 339 protected:
340 double m_startTime; 340 double m_startTime;
341 // TODO(alexclarke): Migrate to WTF::Vector and add gmock matcher support. 341 WTF::Vector<double> m_runTimes;
342 std::vector<double> m_runTimes; 342 WTF::Vector<double> m_nextFireTimes;
343 std::vector<double> m_nextFireTimes;
344 343
345 private: 344 private:
346 OwnPtr<TimerTestPlatform> m_platform; 345 OwnPtr<TimerTestPlatform> m_platform;
347 Platform* m_oldPlatform; 346 Platform* m_oldPlatform;
348 }; 347 };
349 348
350 TEST_F(TimerTest, StartOneShot_Zero) 349 TEST_F(TimerTest, StartOneShot_Zero)
351 { 350 {
352 Timer<TimerTest> timer(this, &TimerTest::countingTask); 351 Timer<TimerTest> timer(this, &TimerTest::countingTask);
353 timer.startOneShot(0, FROM_HERE); 352 timer.startOneShot(0, FROM_HERE);
354 353
355 ASSERT(hasOneTimerTask()); 354 ASSERT(hasOneTimerTask());
356 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs()); 355 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs());
357 356
358 runUntilIdle(); 357 runUntilIdle();
359 EXPECT_THAT(m_runTimes, ElementsAre(m_startTime)); 358 EXPECT_THAT(m_runTimes, ElementsAre(m_startTime));
360 } 359 }
361 360
362 TEST_F(TimerTest, StartOneShot_ZeroAndCancel) 361 TEST_F(TimerTest, StartOneShot_ZeroAndCancel)
363 { 362 {
364 Timer<TimerTest> timer(this, &TimerTest::countingTask); 363 Timer<TimerTest> timer(this, &TimerTest::countingTask);
365 timer.startOneShot(0, FROM_HERE); 364 timer.startOneShot(0, FROM_HERE);
366 365
367 ASSERT(hasOneTimerTask()); 366 ASSERT(hasOneTimerTask());
368 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs()); 367 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs());
369 368
370 timer.stop(); 369 timer.stop();
371 370
372 runUntilIdle(); 371 runUntilIdle();
373 EXPECT_TRUE(m_runTimes.empty()); 372 EXPECT_FALSE(m_runTimes.size());
374 } 373 }
375 374
376 TEST_F(TimerTest, StartOneShot_ZeroAndCancelThenRepost) 375 TEST_F(TimerTest, StartOneShot_ZeroAndCancelThenRepost)
377 { 376 {
378 Timer<TimerTest> timer(this, &TimerTest::countingTask); 377 Timer<TimerTest> timer(this, &TimerTest::countingTask);
379 timer.startOneShot(0, FROM_HERE); 378 timer.startOneShot(0, FROM_HERE);
380 379
381 ASSERT(hasOneTimerTask()); 380 ASSERT(hasOneTimerTask());
382 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs()); 381 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs());
383 382
384 timer.stop(); 383 timer.stop();
385 384
386 runUntilIdle(); 385 runUntilIdle();
387 EXPECT_TRUE(m_runTimes.empty()); 386 EXPECT_FALSE(m_runTimes.size());
388 387
389 timer.startOneShot(0, FROM_HERE); 388 timer.startOneShot(0, FROM_HERE);
390 389
391 ASSERT(hasOneTimerTask()); 390 ASSERT(hasOneTimerTask());
392 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs()); 391 EXPECT_FLOAT_EQ(0.0, nextTimerTaskDelaySecs());
393 392
394 runUntilIdle(); 393 runUntilIdle();
395 EXPECT_THAT(m_runTimes, ElementsAre(m_startTime)); 394 EXPECT_THAT(m_runTimes, ElementsAre(m_startTime));
396 } 395 }
397 396
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 { 430 {
432 Timer<TimerTest> timer(this, &TimerTest::countingTask); 431 Timer<TimerTest> timer(this, &TimerTest::countingTask);
433 timer.startOneShot(10, FROM_HERE); 432 timer.startOneShot(10, FROM_HERE);
434 433
435 ASSERT(hasOneTimerTask()); 434 ASSERT(hasOneTimerTask());
436 EXPECT_FLOAT_EQ(10.0, nextTimerTaskDelaySecs()); 435 EXPECT_FLOAT_EQ(10.0, nextTimerTaskDelaySecs());
437 436
438 timer.stop(); 437 timer.stop();
439 438
440 runUntilIdle(); 439 runUntilIdle();
441 EXPECT_TRUE(m_runTimes.empty()); 440 EXPECT_FALSE(m_runTimes.size());
442 } 441 }
443 442
444 TEST_F(TimerTest, StartOneShot_NonZeroAndCancelThenRepost) 443 TEST_F(TimerTest, StartOneShot_NonZeroAndCancelThenRepost)
445 { 444 {
446 Timer<TimerTest> timer(this, &TimerTest::countingTask); 445 Timer<TimerTest> timer(this, &TimerTest::countingTask);
447 timer.startOneShot(10, FROM_HERE); 446 timer.startOneShot(10, FROM_HERE);
448 447
449 ASSERT(hasOneTimerTask()); 448 ASSERT(hasOneTimerTask());
450 EXPECT_FLOAT_EQ(10.0, nextTimerTaskDelaySecs()); 449 EXPECT_FLOAT_EQ(10.0, nextTimerTaskDelaySecs());
451 450
452 timer.stop(); 451 timer.stop();
453 452
454 runUntilIdle(); 453 runUntilIdle();
455 EXPECT_TRUE(m_runTimes.empty()); 454 EXPECT_FALSE(m_runTimes.size());
456 455
457 double secondPostTime = monotonicallyIncreasingTime(); 456 double secondPostTime = monotonicallyIncreasingTime();
458 timer.startOneShot(10, FROM_HERE); 457 timer.startOneShot(10, FROM_HERE);
459 458
460 ASSERT(hasOneTimerTask()); 459 ASSERT(hasOneTimerTask());
461 EXPECT_FLOAT_EQ(10.0, nextTimerTaskDelaySecs()); 460 EXPECT_FLOAT_EQ(10.0, nextTimerTaskDelaySecs());
462 461
463 runUntilIdle(); 462 runUntilIdle();
464 EXPECT_THAT(m_runTimes, ElementsAre(secondPostTime + 10.0)); 463 EXPECT_THAT(m_runTimes, ElementsAre(secondPostTime + 10.0));
465 } 464 }
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 m_startTime + 6.0, 813 m_startTime + 6.0,
815 m_startTime + 8.0, 814 m_startTime + 8.0,
816 m_startTime + 10.0, 815 m_startTime + 10.0,
817 m_startTime + 14.0, 816 m_startTime + 14.0,
818 m_startTime + 18.0, 817 m_startTime + 18.0,
819 m_startTime + 28.0)); 818 m_startTime + 28.0));
820 } 819 }
821 820
822 } // namespace 821 } // namespace
823 } // namespace blink 822 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp ('k') | third_party/WebKit/Source/wtf/Vector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698