| 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 "cc/quads/list_container.h" | 5 #include "cc/quads/list_container.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 #include "cc/quads/draw_quad.h" | 8 #include "cc/quads/draw_quad.h" |
| 9 #include "cc/quads/largest_draw_quad.h" | 9 #include "cc/quads/largest_draw_quad.h" |
| 10 #include "cc/quads/render_pass_draw_quad.h" | 10 #include "cc/quads/render_pass_draw_quad.h" |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 for (size_t i = 0; i < size; ++i) { | 223 for (size_t i = 0; i < size; ++i) { |
| 224 sqs_list.push_back(list.AllocateAndConstruct<SharedQuadState>()); | 224 sqs_list.push_back(list.AllocateAndConstruct<SharedQuadState>()); |
| 225 } | 225 } |
| 226 EXPECT_EQ(size, list.size()); | 226 EXPECT_EQ(size, list.size()); |
| 227 | 227 |
| 228 ListContainer<SharedQuadState>::Iterator iter = list.begin(); | 228 ListContainer<SharedQuadState>::Iterator iter = list.begin(); |
| 229 for (std::vector<SharedQuadState*>::const_iterator sqs_iter = | 229 for (std::vector<SharedQuadState*>::const_iterator sqs_iter = |
| 230 sqs_list.begin(); | 230 sqs_list.begin(); |
| 231 sqs_iter != sqs_list.end(); | 231 sqs_iter != sqs_list.end(); |
| 232 ++sqs_iter) { | 232 ++sqs_iter) { |
| 233 EXPECT_EQ(*sqs_iter, &*iter); | 233 EXPECT_EQ(*sqs_iter, *iter); |
| 234 ++iter; | 234 ++iter; |
| 235 } | 235 } |
| 236 } | 236 } |
| 237 | 237 |
| 238 TEST(ListContainerTest, | 238 TEST(ListContainerTest, |
| 239 CorrectAllocationSizeForMoreThanOneAllocationSharedQuadState) { | 239 CorrectAllocationSizeForMoreThanOneAllocationSharedQuadState) { |
| 240 // Constructor sets the allocation size to 2. Every time ListContainer needs | 240 // Constructor sets the allocation size to 2. Every time ListContainer needs |
| 241 // to allocate again, it doubles allocation size. In this test, 10 elements is | 241 // to allocate again, it doubles allocation size. In this test, 10 elements is |
| 242 // needed, thus ListContainerShould allocate spaces 2, 4 and 8 elements. | 242 // needed, thus ListContainerShould allocate spaces 2, 4 and 8 elements. |
| 243 ListContainer<SharedQuadState> list(sizeof(SharedQuadState), 2); | 243 ListContainer<SharedQuadState> list(sizeof(SharedQuadState), 2); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 break; | 308 break; |
| 309 } | 309 } |
| 310 } | 310 } |
| 311 EXPECT_EQ(size, list.size()); | 311 EXPECT_EQ(size, list.size()); |
| 312 | 312 |
| 313 ListContainer<SharedQuadState>::Iterator iter = list.begin(); | 313 ListContainer<SharedQuadState>::Iterator iter = list.begin(); |
| 314 for (std::vector<SharedQuadState*>::const_iterator sqs_iter = | 314 for (std::vector<SharedQuadState*>::const_iterator sqs_iter = |
| 315 sqs_list.begin(); | 315 sqs_list.begin(); |
| 316 sqs_iter != sqs_list.end(); | 316 sqs_iter != sqs_list.end(); |
| 317 ++sqs_iter) { | 317 ++sqs_iter) { |
| 318 EXPECT_EQ(*sqs_iter, &*iter); | 318 EXPECT_EQ(*sqs_iter, *iter); |
| 319 ++iter; | 319 ++iter; |
| 320 } | 320 } |
| 321 } | 321 } |
| 322 | 322 |
| 323 TEST(ListContainerTest, SimpleIterationSharedQuadState) { | 323 TEST(ListContainerTest, SimpleIterationSharedQuadState) { |
| 324 ListContainer<SharedQuadState> list; | 324 ListContainer<SharedQuadState> list; |
| 325 std::vector<SharedQuadState*> sqs_list; | 325 std::vector<SharedQuadState*> sqs_list; |
| 326 size_t size = 10; | 326 size_t size = 10; |
| 327 for (size_t i = 0; i < size; ++i) { | 327 for (size_t i = 0; i < size; ++i) { |
| 328 sqs_list.push_back(list.AllocateAndConstruct<SharedQuadState>()); | 328 sqs_list.push_back(list.AllocateAndConstruct<SharedQuadState>()); |
| 329 } | 329 } |
| 330 EXPECT_EQ(size, list.size()); | 330 EXPECT_EQ(size, list.size()); |
| 331 | 331 |
| 332 size_t num_iters_in_list = 0; | 332 size_t num_iters_in_list = 0; |
| 333 { | 333 { |
| 334 std::vector<SharedQuadState*>::const_iterator sqs_iter = sqs_list.begin(); | 334 std::vector<SharedQuadState*>::const_iterator sqs_iter = sqs_list.begin(); |
| 335 for (ListContainer<SharedQuadState>::Iterator iter = list.begin(); | 335 for (ListContainer<SharedQuadState>::Iterator iter = list.begin(); |
| 336 iter != list.end(); | 336 iter != list.end(); |
| 337 ++iter) { | 337 ++iter) { |
| 338 EXPECT_EQ(*sqs_iter, &*iter); | 338 EXPECT_EQ(*sqs_iter, *iter); |
| 339 ++num_iters_in_list; | 339 ++num_iters_in_list; |
| 340 ++sqs_iter; | 340 ++sqs_iter; |
| 341 } | 341 } |
| 342 } | 342 } |
| 343 | 343 |
| 344 size_t num_iters_in_vector = 0; | 344 size_t num_iters_in_vector = 0; |
| 345 { | 345 { |
| 346 ListContainer<SharedQuadState>::Iterator iter = list.begin(); | 346 ListContainer<SharedQuadState>::Iterator iter = list.begin(); |
| 347 for (std::vector<SharedQuadState*>::const_iterator sqs_iter = | 347 for (std::vector<SharedQuadState*>::const_iterator sqs_iter = |
| 348 sqs_list.begin(); | 348 sqs_list.begin(); |
| 349 sqs_iter != sqs_list.end(); | 349 sqs_iter != sqs_list.end(); |
| 350 ++sqs_iter) { | 350 ++sqs_iter) { |
| 351 EXPECT_EQ(*sqs_iter, &*iter); | 351 EXPECT_EQ(*sqs_iter, *iter); |
| 352 ++num_iters_in_vector; | 352 ++num_iters_in_vector; |
| 353 ++iter; | 353 ++iter; |
| 354 } | 354 } |
| 355 } | 355 } |
| 356 | 356 |
| 357 EXPECT_EQ(num_iters_in_vector, num_iters_in_list); | 357 EXPECT_EQ(num_iters_in_vector, num_iters_in_list); |
| 358 } | 358 } |
| 359 | 359 |
| 360 TEST(ListContainerTest, SimpleConstIteratorIterationSharedQuadState) { | 360 TEST(ListContainerTest, SimpleConstIteratorIterationSharedQuadState) { |
| 361 ListContainer<SharedQuadState> list; | 361 ListContainer<SharedQuadState> list; |
| 362 std::vector<const SharedQuadState*> sqs_list; | 362 std::vector<const SharedQuadState*> sqs_list; |
| 363 size_t size = 10; | 363 size_t size = 10; |
| 364 for (size_t i = 0; i < size; ++i) { | 364 for (size_t i = 0; i < size; ++i) { |
| 365 sqs_list.push_back(list.AllocateAndConstruct<SharedQuadState>()); | 365 sqs_list.push_back(list.AllocateAndConstruct<SharedQuadState>()); |
| 366 } | 366 } |
| 367 EXPECT_EQ(size, list.size()); | 367 EXPECT_EQ(size, list.size()); |
| 368 | 368 |
| 369 { | 369 { |
| 370 std::vector<const SharedQuadState*>::const_iterator sqs_iter = | 370 std::vector<const SharedQuadState*>::const_iterator sqs_iter = |
| 371 sqs_list.begin(); | 371 sqs_list.begin(); |
| 372 for (ListContainer<SharedQuadState>::ConstIterator iter = list.begin(); | 372 for (ListContainer<SharedQuadState>::ConstIterator iter = list.begin(); |
| 373 iter != list.end(); | 373 iter != list.end(); |
| 374 ++iter) { | 374 ++iter) { |
| 375 EXPECT_TRUE(isConstSharedQuadStatePointer(&*iter)); | 375 EXPECT_TRUE(isConstSharedQuadStatePointer(*iter)); |
| 376 EXPECT_EQ(*sqs_iter, &*iter); | 376 EXPECT_EQ(*sqs_iter, *iter); |
| 377 ++sqs_iter; | 377 ++sqs_iter; |
| 378 } | 378 } |
| 379 } | 379 } |
| 380 | 380 |
| 381 { | 381 { |
| 382 std::vector<const SharedQuadState*>::const_iterator sqs_iter = | 382 std::vector<const SharedQuadState*>::const_iterator sqs_iter = |
| 383 sqs_list.begin(); | 383 sqs_list.begin(); |
| 384 for (ListContainer<SharedQuadState>::Iterator iter = list.begin(); | 384 for (ListContainer<SharedQuadState>::Iterator iter = list.begin(); |
| 385 iter != list.end(); | 385 iter != list.end(); |
| 386 ++iter) { | 386 ++iter) { |
| 387 EXPECT_FALSE(isConstSharedQuadStatePointer(&*iter)); | 387 EXPECT_FALSE(isConstSharedQuadStatePointer(*iter)); |
| 388 EXPECT_EQ(*sqs_iter, &*iter); | 388 EXPECT_EQ(*sqs_iter, *iter); |
| 389 ++sqs_iter; | 389 ++sqs_iter; |
| 390 } | 390 } |
| 391 } | 391 } |
| 392 | 392 |
| 393 { | 393 { |
| 394 ListContainer<SharedQuadState>::ConstIterator iter = list.begin(); | 394 ListContainer<SharedQuadState>::ConstIterator iter = list.begin(); |
| 395 for (std::vector<const SharedQuadState*>::const_iterator sqs_iter = | 395 for (std::vector<const SharedQuadState*>::const_iterator sqs_iter = |
| 396 sqs_list.begin(); | 396 sqs_list.begin(); |
| 397 sqs_iter != sqs_list.end(); | 397 sqs_iter != sqs_list.end(); |
| 398 ++sqs_iter) { | 398 ++sqs_iter) { |
| 399 EXPECT_EQ(*sqs_iter, &*iter); | 399 EXPECT_EQ(*sqs_iter, *iter); |
| 400 ++iter; | 400 ++iter; |
| 401 } | 401 } |
| 402 } | 402 } |
| 403 } | 403 } |
| 404 | 404 |
| 405 TEST(ListContainerTest, SimpleReverseInsertionSharedQuadState) { | 405 TEST(ListContainerTest, SimpleReverseInsertionSharedQuadState) { |
| 406 ListContainer<SharedQuadState> list; | 406 ListContainer<SharedQuadState> list; |
| 407 std::vector<SharedQuadState*> sqs_list; | 407 std::vector<SharedQuadState*> sqs_list; |
| 408 size_t size = 10; | 408 size_t size = 10; |
| 409 for (size_t i = 0; i < size; ++i) { | 409 for (size_t i = 0; i < size; ++i) { |
| 410 sqs_list.push_back(list.AllocateAndConstruct<SharedQuadState>()); | 410 sqs_list.push_back(list.AllocateAndConstruct<SharedQuadState>()); |
| 411 } | 411 } |
| 412 EXPECT_EQ(size, list.size()); | 412 EXPECT_EQ(size, list.size()); |
| 413 | 413 |
| 414 { | 414 { |
| 415 std::vector<SharedQuadState*>::const_reverse_iterator sqs_iter = | 415 std::vector<SharedQuadState*>::const_reverse_iterator sqs_iter = |
| 416 sqs_list.rbegin(); | 416 sqs_list.rbegin(); |
| 417 for (ListContainer<SharedQuadState>::ReverseIterator iter = list.rbegin(); | 417 for (ListContainer<SharedQuadState>::ReverseIterator iter = list.rbegin(); |
| 418 iter != list.rend(); | 418 iter != list.rend(); |
| 419 ++iter) { | 419 ++iter) { |
| 420 EXPECT_EQ(*sqs_iter, &(*iter)); | 420 EXPECT_EQ(*sqs_iter, *iter); |
| 421 ++sqs_iter; | 421 ++sqs_iter; |
| 422 } | 422 } |
| 423 } | 423 } |
| 424 | 424 |
| 425 { | 425 { |
| 426 ListContainer<SharedQuadState>::ReverseIterator iter = list.rbegin(); | 426 ListContainer<SharedQuadState>::ReverseIterator iter = list.rbegin(); |
| 427 for (std::vector<SharedQuadState*>::reverse_iterator sqs_iter = | 427 for (std::vector<SharedQuadState*>::reverse_iterator sqs_iter = |
| 428 sqs_list.rbegin(); | 428 sqs_list.rbegin(); |
| 429 sqs_iter != sqs_list.rend(); | 429 sqs_iter != sqs_list.rend(); |
| 430 ++sqs_iter) { | 430 ++sqs_iter) { |
| 431 EXPECT_EQ(*sqs_iter, &(*iter)); | 431 EXPECT_EQ(*sqs_iter, *iter); |
| 432 ++iter; | 432 ++iter; |
| 433 } | 433 } |
| 434 } | 434 } |
| 435 } | 435 } |
| 436 | 436 |
| 437 TEST(ListContainerTest, SimpleDeletion) { | 437 TEST(ListContainerTest, SimpleDeletion) { |
| 438 ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad)); | 438 ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad)); |
| 439 std::vector<SimpleDrawQuad*> sdq_list; | 439 std::vector<SimpleDrawQuad*> sdq_list; |
| 440 size_t size = 10; | 440 size_t size = 10; |
| 441 for (size_t i = 0; i < size; ++i) { | 441 for (size_t i = 0; i < size; ++i) { |
| 442 sdq_list.push_back(list.AllocateAndConstruct<SimpleDrawQuad>()); | 442 sdq_list.push_back(list.AllocateAndConstruct<SimpleDrawQuad>()); |
| 443 sdq_list.back()->set_value(i); | 443 sdq_list.back()->set_value(i); |
| 444 } | 444 } |
| 445 EXPECT_EQ(size, list.size()); | 445 EXPECT_EQ(size, list.size()); |
| 446 | 446 |
| 447 list.EraseAndInvalidateAllPointers(list.begin()); | 447 list.EraseAndInvalidateAllPointers(list.begin()); |
| 448 --size; | 448 --size; |
| 449 EXPECT_EQ(size, list.size()); | 449 EXPECT_EQ(size, list.size()); |
| 450 int i = 1; | 450 int i = 1; |
| 451 for (ListContainer<DrawQuad>::Iterator iter = list.begin(); | 451 for (ListContainer<DrawQuad>::Iterator iter = list.begin(); |
| 452 iter != list.end(); | 452 iter != list.end(); |
| 453 ++iter) { | 453 ++iter) { |
| 454 EXPECT_EQ(i, static_cast<SimpleDrawQuad*>(&*iter)->get_value()); | 454 EXPECT_EQ(i, static_cast<SimpleDrawQuad*>(*iter)->get_value()); |
| 455 ++i; | 455 ++i; |
| 456 } | 456 } |
| 457 } | 457 } |
| 458 | 458 |
| 459 TEST(ListContainerTest, SimpleIterationAndManipulation) { | 459 TEST(ListContainerTest, SimpleIterationAndManipulation) { |
| 460 ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad)); | 460 ListContainer<DrawQuad> list(sizeof(kLargestDrawQuad)); |
| 461 std::vector<SimpleDrawQuad*> sdq_list; | 461 std::vector<SimpleDrawQuad*> sdq_list; |
| 462 size_t size = 10; | 462 size_t size = 10; |
| 463 for (size_t i = 0; i < size; ++i) { | 463 for (size_t i = 0; i < size; ++i) { |
| 464 SimpleDrawQuad* simple_dq = list.AllocateAndConstruct<SimpleDrawQuad>(); | 464 SimpleDrawQuad* simple_dq = list.AllocateAndConstruct<SimpleDrawQuad>(); |
| 465 sdq_list.push_back(simple_dq); | 465 sdq_list.push_back(simple_dq); |
| 466 } | 466 } |
| 467 EXPECT_EQ(size, list.size()); | 467 EXPECT_EQ(size, list.size()); |
| 468 | 468 |
| 469 ListContainer<DrawQuad>::Iterator iter = list.begin(); | 469 ListContainer<DrawQuad>::Iterator iter = list.begin(); |
| 470 for (int i = 0; i < 10; ++i) { | 470 for (int i = 0; i < 10; ++i) { |
| 471 static_cast<SimpleDrawQuad*>(&*iter)->set_value(i); | 471 static_cast<SimpleDrawQuad*>(*iter)->set_value(i); |
| 472 ++iter; | 472 ++iter; |
| 473 } | 473 } |
| 474 | 474 |
| 475 int i = 0; | 475 int i = 0; |
| 476 for (std::vector<SimpleDrawQuad*>::const_iterator sdq_iter = sdq_list.begin(); | 476 for (std::vector<SimpleDrawQuad*>::const_iterator sdq_iter = sdq_list.begin(); |
| 477 sdq_iter < sdq_list.end(); | 477 sdq_iter < sdq_list.end(); |
| 478 ++sdq_iter) { | 478 ++sdq_iter) { |
| 479 EXPECT_EQ(i, (*sdq_iter)->get_value()); | 479 EXPECT_EQ(i, (*sdq_iter)->get_value()); |
| 480 ++i; | 480 ++i; |
| 481 } | 481 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 for (ListContainer<SharedQuadState>::ReverseIterator iter = list.rbegin(); | 546 for (ListContainer<SharedQuadState>::ReverseIterator iter = list.rbegin(); |
| 547 iter != list.rend(); | 547 iter != list.rend(); |
| 548 ++iter) { | 548 ++iter) { |
| 549 EXPECT_EQ(i, iter.index()); | 549 EXPECT_EQ(i, iter.index()); |
| 550 ++i; | 550 ++i; |
| 551 } | 551 } |
| 552 } | 552 } |
| 553 | 553 |
| 554 } // namespace | 554 } // namespace |
| 555 } // namespace cc | 555 } // namespace cc |
| OLD | NEW |