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 |