| 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 |