OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/cancelable_callback.h" | 7 #include "base/cancelable_callback.h" |
8 #include "base/format_macros.h" | 8 #include "base/format_macros.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilIdle(), ""); | 288 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilIdle(), ""); |
289 } | 289 } |
290 | 290 |
291 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeAutoNow) { | 291 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeAutoNow) { |
292 PostTaskWhichPostsInstantTask(1, base::TimeDelta()); | 292 PostTaskWhichPostsInstantTask(1, base::TimeDelta()); |
293 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2)); | 293 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2)); |
294 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3)); | 294 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3)); |
295 | 295 |
296 task_runner_->SetAutoAdvanceNowToPendingTasks(true); | 296 task_runner_->SetAutoAdvanceNowToPendingTasks(true); |
297 | 297 |
298 base::TimeTicks run_at = base::TimeTicks(); | 298 // SimpleTestTickClock starts at 1 microsecond |
| 299 base::TimeTicks run_at = |
| 300 base::TimeTicks() + base::TimeDelta::FromMicroseconds(1); |
299 | 301 |
300 run_at += base::TimeDelta::FromMilliseconds(2); | 302 run_at += base::TimeDelta::FromMilliseconds(2); |
301 RUN_AND_CHECK_RESULT( | 303 RUN_AND_CHECK_RESULT( |
302 EXPECT_TRUE, RunUntilTime(run_at), "1(0ms) -1(0ms) 2(2ms) -2(2ms)"); | 304 EXPECT_TRUE, RunUntilTime(run_at), "1(0ms) -1(0ms) 2(2ms) -2(2ms)"); |
303 EXPECT_EQ(run_at, now_src_->NowTicks()); | 305 EXPECT_EQ(run_at, now_src_->NowTicks()); |
304 | 306 |
305 run_at += base::TimeDelta::FromMilliseconds(1); | 307 run_at += base::TimeDelta::FromMilliseconds(1); |
306 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "3(3ms) -3(3ms)"); | 308 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "3(3ms) -3(3ms)"); |
307 EXPECT_EQ(run_at, now_src_->NowTicks()); | 309 EXPECT_EQ(run_at, now_src_->NowTicks()); |
308 | 310 |
309 run_at += base::TimeDelta::FromMilliseconds(1); | 311 run_at += base::TimeDelta::FromMilliseconds(1); |
310 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), ""); | 312 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), ""); |
311 EXPECT_EQ(run_at, now_src_->NowTicks()); | 313 EXPECT_EQ(run_at, now_src_->NowTicks()); |
312 } | 314 } |
313 | 315 |
314 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeManualNow) { | 316 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeManualNow) { |
315 PostTaskWhichPostsInstantTask(1, base::TimeDelta()); | 317 PostTaskWhichPostsInstantTask(1, base::TimeDelta()); |
316 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2)); | 318 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2)); |
317 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3)); | 319 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3)); |
318 | 320 |
319 task_runner_->SetAutoAdvanceNowToPendingTasks(false); | 321 task_runner_->SetAutoAdvanceNowToPendingTasks(false); |
320 | 322 |
321 base::TimeTicks run_at = base::TimeTicks(); | 323 // SimpleTestTickClock starts at 1 microsecond |
| 324 base::TimeTicks run_at = |
| 325 base::TimeTicks() + base::TimeDelta::FromMicroseconds(1); |
322 | 326 |
323 run_at += base::TimeDelta::FromMilliseconds(2); | 327 run_at += base::TimeDelta::FromMilliseconds(2); |
324 RUN_AND_CHECK_RESULT( | 328 RUN_AND_CHECK_RESULT( |
325 EXPECT_TRUE, RunUntilTime(run_at), "1(2ms) 2(2ms) -1(2ms) -2(2ms)"); | 329 EXPECT_TRUE, RunUntilTime(run_at), "1(2ms) 2(2ms) -1(2ms) -2(2ms)"); |
326 EXPECT_EQ(run_at, now_src_->NowTicks()); | 330 EXPECT_EQ(run_at, now_src_->NowTicks()); |
327 | 331 |
328 run_at += base::TimeDelta::FromMilliseconds(1); | 332 run_at += base::TimeDelta::FromMilliseconds(1); |
329 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "3(3ms) -3(3ms)"); | 333 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "3(3ms) -3(3ms)"); |
330 EXPECT_EQ(run_at, now_src_->NowTicks()); | 334 EXPECT_EQ(run_at, now_src_->NowTicks()); |
331 | 335 |
332 run_at += base::TimeDelta::FromMilliseconds(1); | 336 run_at += base::TimeDelta::FromMilliseconds(1); |
333 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), ""); | 337 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), ""); |
334 EXPECT_EQ(run_at, now_src_->NowTicks()); | 338 EXPECT_EQ(run_at, now_src_->NowTicks()); |
335 } | 339 } |
336 | 340 |
337 TEST_F(OrderedSimpleTaskRunnerTest, RunForPeriod) { | 341 TEST_F(OrderedSimpleTaskRunnerTest, RunForPeriod) { |
338 PostTaskWhichPostsInstantTask(1, base::TimeDelta()); | 342 PostTaskWhichPostsInstantTask(1, base::TimeDelta()); |
339 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2)); | 343 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2)); |
340 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3)); | 344 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3)); |
341 | 345 |
342 RUN_AND_CHECK_RESULT(EXPECT_TRUE, | 346 RUN_AND_CHECK_RESULT(EXPECT_TRUE, |
343 RunForPeriod(base::TimeDelta::FromMilliseconds(2)), | 347 RunForPeriod(base::TimeDelta::FromMilliseconds(2)), |
344 "1(0ms) -1(0ms) 2(2ms) -2(2ms)"); | 348 "1(0ms) -1(0ms) 2(2ms) -2(2ms)"); |
345 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMilliseconds(2), | 349 // SimpleTestTickClock starts at 1 microsecond |
| 350 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1) + |
| 351 base::TimeDelta::FromMilliseconds(2), |
346 now_src_->NowTicks()); | 352 now_src_->NowTicks()); |
347 | 353 |
348 RUN_AND_CHECK_RESULT(EXPECT_FALSE, | 354 RUN_AND_CHECK_RESULT(EXPECT_FALSE, |
349 RunForPeriod(base::TimeDelta::FromMilliseconds(1)), | 355 RunForPeriod(base::TimeDelta::FromMilliseconds(1)), |
350 "3(3ms) -3(3ms)"); | 356 "3(3ms) -3(3ms)"); |
351 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMilliseconds(3), | 357 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1) + |
| 358 base::TimeDelta::FromMilliseconds(3), |
352 now_src_->NowTicks()); | 359 now_src_->NowTicks()); |
353 | 360 |
354 RUN_AND_CHECK_RESULT( | 361 RUN_AND_CHECK_RESULT( |
355 EXPECT_FALSE, RunForPeriod(base::TimeDelta::FromMilliseconds(1)), ""); | 362 EXPECT_FALSE, RunForPeriod(base::TimeDelta::FromMilliseconds(1)), ""); |
356 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMilliseconds(4), | 363 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1) + |
| 364 base::TimeDelta::FromMilliseconds(4), |
357 now_src_->NowTicks()); | 365 now_src_->NowTicks()); |
358 } | 366 } |
359 | 367 |
360 TEST_F(OrderedSimpleTaskRunnerTest, RunTasksWhileWithCallback) { | 368 TEST_F(OrderedSimpleTaskRunnerTest, RunTasksWhileWithCallback) { |
361 base::Callback<bool(void)> return_true = base::Bind(&ReturnTrue); | 369 base::Callback<bool(void)> return_true = base::Bind(&ReturnTrue); |
362 base::Callback<bool(void)> return_false = base::Bind(&ReturnFalse); | 370 base::Callback<bool(void)> return_false = base::Bind(&ReturnFalse); |
363 | 371 |
364 PostTask(1, base::TimeDelta()); | 372 PostTask(1, base::TimeDelta()); |
365 | 373 |
366 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunTasksWhile(return_false), ""); | 374 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunTasksWhile(return_false), ""); |
367 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunTasksWhile(return_true), "1(0ms)"); | 375 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunTasksWhile(return_true), "1(0ms)"); |
368 } | 376 } |
369 | 377 |
370 TEST_F(OrderedSimpleTaskRunnerTest, EmptyTaskList) { | 378 TEST_F(OrderedSimpleTaskRunnerTest, EmptyTaskList) { |
371 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunPendingTasks(), ""); | 379 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunPendingTasks(), ""); |
372 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilIdle(), ""); | 380 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilIdle(), ""); |
373 | 381 |
374 ASSERT_EQ(base::TimeTicks(), now_src_->NowTicks()); | 382 // SimpleTestTickClock starts at 1 microsecond |
| 383 ASSERT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1), |
| 384 now_src_->NowTicks()); |
375 | 385 |
376 RUN_AND_CHECK_RESULT( | 386 RUN_AND_CHECK_RESULT( |
377 EXPECT_FALSE, RunUntilTime(base::TimeTicks::FromInternalValue(100)), ""); | 387 EXPECT_FALSE, RunUntilTime(base::TimeTicks::FromInternalValue(100)), ""); |
378 EXPECT_EQ(base::TimeTicks::FromInternalValue(100), now_src_->NowTicks()); | 388 EXPECT_EQ(base::TimeTicks::FromInternalValue(100), now_src_->NowTicks()); |
379 | 389 |
380 RUN_AND_CHECK_RESULT( | 390 RUN_AND_CHECK_RESULT( |
381 EXPECT_FALSE, RunForPeriod(base::TimeDelta::FromInternalValue(100)), ""); | 391 EXPECT_FALSE, RunForPeriod(base::TimeDelta::FromInternalValue(100)), ""); |
382 EXPECT_EQ(base::TimeTicks::FromInternalValue(200), now_src_->NowTicks()); | 392 EXPECT_EQ(base::TimeTicks::FromInternalValue(200), now_src_->NowTicks()); |
383 | 393 |
384 base::Callback<bool(void)> return_true = base::Bind(&ReturnTrue); | 394 base::Callback<bool(void)> return_true = base::Bind(&ReturnTrue); |
(...skipping 25 matching lines...) Expand all Loading... |
410 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), "1(3ms) 1(6ms) 1(9ms)"); | 420 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), "1(3ms) 1(6ms) 1(9ms)"); |
411 | 421 |
412 task_runner_->SetRunTaskLimit(2); | 422 task_runner_->SetRunTaskLimit(2); |
413 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), "1(12ms) 1(15ms)"); | 423 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), "1(12ms) 1(15ms)"); |
414 | 424 |
415 task_runner_->SetRunTaskLimit(0); | 425 task_runner_->SetRunTaskLimit(0); |
416 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), ""); | 426 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), ""); |
417 } | 427 } |
418 | 428 |
419 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeout) { | 429 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeout) { |
420 base::TimeTicks run_to = base::TimeTicks() + base::TimeDelta::FromSeconds(1); | 430 // SimpleTestTickClock starts at 1 microsecond |
| 431 base::TimeTicks run_to = base::TimeTicks() + |
| 432 base::TimeDelta::FromMicroseconds(1) + |
| 433 base::TimeDelta::FromSeconds(1); |
421 | 434 |
422 PostTask(1, base::TimeDelta::FromMilliseconds(1)); | 435 PostTask(1, base::TimeDelta::FromMilliseconds(1)); |
423 PostTask(2, base::TimeDelta::FromMilliseconds(2)); | 436 PostTask(2, base::TimeDelta::FromMilliseconds(2)); |
424 PostTask(3, base::TimeDelta::FromMilliseconds(3)); | 437 PostTask(3, base::TimeDelta::FromMilliseconds(3)); |
425 PostTask(4, base::TimeDelta::FromMilliseconds(4)); | 438 PostTask(4, base::TimeDelta::FromMilliseconds(4)); |
426 PostTask(5, base::TimeDelta::FromMilliseconds(5)); | 439 PostTask(5, base::TimeDelta::FromMilliseconds(5)); |
427 | 440 |
428 EXPECT_EQ(base::TimeTicks(), now_src_->NowTicks()); | 441 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1), |
| 442 now_src_->NowTicks()); |
429 task_runner_->SetRunTaskLimit(3); | 443 task_runner_->SetRunTaskLimit(3); |
430 RUN_AND_CHECK_RESULT( | 444 RUN_AND_CHECK_RESULT( |
431 EXPECT_TRUE, RunUntilTime(run_to), "1(1ms) 2(2ms) 3(3ms)"); | 445 EXPECT_TRUE, RunUntilTime(run_to), "1(1ms) 2(2ms) 3(3ms)"); |
432 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMilliseconds(3), | 446 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1) + |
| 447 base::TimeDelta::FromMilliseconds(3), |
433 now_src_->NowTicks()); | 448 now_src_->NowTicks()); |
434 | 449 |
435 task_runner_->SetRunTaskLimit(0); | 450 task_runner_->SetRunTaskLimit(0); |
436 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilTime(run_to), ""); | 451 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilTime(run_to), ""); |
437 | 452 |
438 task_runner_->SetRunTaskLimit(100); | 453 task_runner_->SetRunTaskLimit(100); |
439 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_to), "4(4ms) 5(5ms)"); | 454 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_to), "4(4ms) 5(5ms)"); |
440 EXPECT_EQ(run_to, now_src_->NowTicks()); | 455 EXPECT_EQ(run_to, now_src_->NowTicks()); |
441 } | 456 } |
442 | 457 |
443 } // namespace cc | 458 } // namespace cc |
OLD | NEW |