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

Side by Side Diff: cc/quads/list_container_unittest.cc

Issue 979693005: Add underlays and split off common overlay functionality (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: overlay test changes Created 5 years, 9 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
« no previous file with comments | « cc/quads/list_container.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 } 47 }
48 }; 48 };
49 49
50 class SimpleDrawQuadConstructMagicNumberTwo : public SimpleDrawQuad { 50 class SimpleDrawQuadConstructMagicNumberTwo : public SimpleDrawQuad {
51 public: 51 public:
52 SimpleDrawQuadConstructMagicNumberTwo() : SimpleDrawQuad() { 52 SimpleDrawQuadConstructMagicNumberTwo() : SimpleDrawQuad() {
53 set_value(kMagicNumberToUseForDrawQuadTwo); 53 set_value(kMagicNumberToUseForDrawQuadTwo);
54 } 54 }
55 }; 55 };
56 56
57 class MockDrawQuad : public DrawQuad { 57 class MockDrawQuad : public SimpleDrawQuadConstructMagicNumberOne {
58 public: 58 public:
59 ~MockDrawQuad() override { Destruct(); } 59 ~MockDrawQuad() override { Destruct(); }
60 void IterateResources(const ResourceIteratorCallback& callback) override {}
61 void ExtendValue(base::trace_event::TracedValue* value) const override {}
62 MOCK_METHOD0(Destruct, void()); 60 MOCK_METHOD0(Destruct, void());
63 }; 61 };
64 62
63 class MockDrawQuadSubclass : public MockDrawQuad {
64 public:
65 MockDrawQuadSubclass() { set_value(kMagicNumberToUseForDrawQuadTwo); }
66 };
67
68 const size_t kLargestQuadSize =
69 std::max(LargestDrawQuadSize(), sizeof(MockDrawQuadSubclass));
70
65 TEST(ListContainerTest, ConstructorCalledInAllocateAndConstruct) { 71 TEST(ListContainerTest, ConstructorCalledInAllocateAndConstruct) {
66 ListContainer<DrawQuad> list(LargestDrawQuadSize()); 72 ListContainer<DrawQuad> list(kLargestQuadSize);
67 73
68 size_t size = 2; 74 size_t size = 2;
69 SimpleDrawQuadConstructMagicNumberOne* dq_1 = 75 SimpleDrawQuadConstructMagicNumberOne* dq_1 =
70 list.AllocateAndConstruct<SimpleDrawQuadConstructMagicNumberOne>(); 76 list.AllocateAndConstruct<SimpleDrawQuadConstructMagicNumberOne>();
71 SimpleDrawQuadConstructMagicNumberTwo* dq_2 = 77 SimpleDrawQuadConstructMagicNumberTwo* dq_2 =
72 list.AllocateAndConstruct<SimpleDrawQuadConstructMagicNumberTwo>(); 78 list.AllocateAndConstruct<SimpleDrawQuadConstructMagicNumberTwo>();
73 79
74 EXPECT_EQ(size, list.size()); 80 EXPECT_EQ(size, list.size());
75 EXPECT_EQ(dq_1, list.front()); 81 EXPECT_EQ(dq_1, list.front());
76 EXPECT_EQ(dq_2, list.back()); 82 EXPECT_EQ(dq_2, list.back());
77 83
78 EXPECT_EQ(kMagicNumberToUseForDrawQuadOne, dq_1->get_value()); 84 EXPECT_EQ(kMagicNumberToUseForDrawQuadOne, dq_1->get_value());
79 EXPECT_EQ(kMagicNumberToUseForDrawQuadTwo, dq_2->get_value()); 85 EXPECT_EQ(kMagicNumberToUseForDrawQuadTwo, dq_2->get_value());
80 } 86 }
81 87
82 TEST(ListContainerTest, DestructorCalled) { 88 TEST(ListContainerTest, DestructorCalled) {
83 ListContainer<DrawQuad> list(LargestDrawQuadSize()); 89 ListContainer<DrawQuad> list(kLargestQuadSize);
84 90
85 size_t size = 1; 91 size_t size = 1;
86 MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>(); 92 MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>();
87 93
88 EXPECT_CALL(*dq_1, Destruct()); 94 EXPECT_CALL(*dq_1, Destruct());
89 EXPECT_EQ(size, list.size()); 95 EXPECT_EQ(size, list.size());
90 EXPECT_EQ(dq_1, list.front()); 96 EXPECT_EQ(dq_1, list.front());
91 } 97 }
92 98
93 TEST(ListContainerTest, DestructorCalledOnceWhenClear) { 99 TEST(ListContainerTest, DestructorCalledOnceWhenClear) {
94 ListContainer<DrawQuad> list(LargestDrawQuadSize()); 100 ListContainer<DrawQuad> list(kLargestQuadSize);
95 size_t size = 1; 101 size_t size = 1;
96 MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>(); 102 MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>();
97 103
98 EXPECT_EQ(size, list.size()); 104 EXPECT_EQ(size, list.size());
99 EXPECT_EQ(dq_1, list.front()); 105 EXPECT_EQ(dq_1, list.front());
100 106
101 // Make sure destructor is called once during clear, and won't be called 107 // Make sure destructor is called once during clear, and won't be called
102 // again. 108 // again.
103 testing::MockFunction<void()> separator; 109 testing::MockFunction<void()> separator;
104 { 110 {
105 testing::InSequence s; 111 testing::InSequence s;
106 EXPECT_CALL(*dq_1, Destruct()); 112 EXPECT_CALL(*dq_1, Destruct());
107 EXPECT_CALL(separator, Call()); 113 EXPECT_CALL(separator, Call());
108 EXPECT_CALL(*dq_1, Destruct()).Times(0); 114 EXPECT_CALL(*dq_1, Destruct()).Times(0);
109 } 115 }
110 116
111 list.clear(); 117 list.clear();
112 separator.Call(); 118 separator.Call();
113 } 119 }
114 120
115 TEST(ListContainerTest, DestructorCalledOnceWhenErase) { 121 TEST(ListContainerTest, ReplaceExistingElement) {
116 ListContainer<DrawQuad> list(LargestDrawQuadSize()); 122 ListContainer<DrawQuad> list(kLargestQuadSize);
117 size_t size = 1; 123 size_t size = 1;
118 MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>(); 124 MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>();
119 125
126 EXPECT_EQ(size, list.size());
127 EXPECT_EQ(dq_1, list.front());
128
129 // Make sure destructor is called once during clear, and won't be called
130 // again.
131 testing::MockFunction<void()> separator;
132 {
133 testing::InSequence s;
134 EXPECT_CALL(*dq_1, Destruct());
135 EXPECT_CALL(separator, Call());
136 EXPECT_CALL(*dq_1, Destruct()).Times(0);
137 }
138
139 list.ReplaceExistingElement<MockDrawQuadSubclass>(list.begin());
140 EXPECT_EQ(kMagicNumberToUseForDrawQuadTwo, dq_1->get_value());
141 separator.Call();
142
143 EXPECT_CALL(*dq_1, Destruct());
144 list.clear();
145 }
146
147 TEST(ListContainerTest, DestructorCalledOnceWhenErase) {
148 ListContainer<DrawQuad> list(kLargestQuadSize);
149 size_t size = 1;
150 MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>();
151
120 EXPECT_EQ(size, list.size()); 152 EXPECT_EQ(size, list.size());
121 EXPECT_EQ(dq_1, list.front()); 153 EXPECT_EQ(dq_1, list.front());
122 154
123 // Make sure destructor is called once during clear, and won't be called 155 // Make sure destructor is called once during clear, and won't be called
124 // again. 156 // again.
125 testing::MockFunction<void()> separator; 157 testing::MockFunction<void()> separator;
126 { 158 {
127 testing::InSequence s; 159 testing::InSequence s;
128 EXPECT_CALL(*dq_1, Destruct()); 160 EXPECT_CALL(*dq_1, Destruct());
129 EXPECT_CALL(separator, Call()); 161 EXPECT_CALL(separator, Call());
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 sqs_list.rbegin(); 459 sqs_list.rbegin();
428 sqs_iter != sqs_list.rend(); 460 sqs_iter != sqs_list.rend();
429 ++sqs_iter) { 461 ++sqs_iter) {
430 EXPECT_EQ(*sqs_iter, *iter); 462 EXPECT_EQ(*sqs_iter, *iter);
431 ++iter; 463 ++iter;
432 } 464 }
433 } 465 }
434 } 466 }
435 467
436 TEST(ListContainerTest, SimpleDeletion) { 468 TEST(ListContainerTest, SimpleDeletion) {
437 ListContainer<DrawQuad> list(LargestDrawQuadSize()); 469 ListContainer<DrawQuad> list(kLargestQuadSize);
438 std::vector<SimpleDrawQuad*> sdq_list; 470 std::vector<SimpleDrawQuad*> sdq_list;
439 size_t size = 10; 471 size_t size = 10;
440 for (size_t i = 0; i < size; ++i) { 472 for (size_t i = 0; i < size; ++i) {
441 sdq_list.push_back(list.AllocateAndConstruct<SimpleDrawQuad>()); 473 sdq_list.push_back(list.AllocateAndConstruct<SimpleDrawQuad>());
442 sdq_list.back()->set_value(i); 474 sdq_list.back()->set_value(i);
443 } 475 }
444 EXPECT_EQ(size, list.size()); 476 EXPECT_EQ(size, list.size());
445 477
446 list.EraseAndInvalidateAllPointers(list.begin()); 478 list.EraseAndInvalidateAllPointers(list.begin());
447 --size; 479 --size;
448 EXPECT_EQ(size, list.size()); 480 EXPECT_EQ(size, list.size());
449 int i = 1; 481 int i = 1;
450 for (ListContainer<DrawQuad>::Iterator iter = list.begin(); 482 for (ListContainer<DrawQuad>::Iterator iter = list.begin();
451 iter != list.end(); 483 iter != list.end();
452 ++iter) { 484 ++iter) {
453 EXPECT_EQ(i, static_cast<SimpleDrawQuad*>(*iter)->get_value()); 485 EXPECT_EQ(i, static_cast<SimpleDrawQuad*>(*iter)->get_value());
454 ++i; 486 ++i;
455 } 487 }
456 } 488 }
457 489
458 TEST(ListContainerTest, SimpleIterationAndManipulation) { 490 TEST(ListContainerTest, SimpleIterationAndManipulation) {
459 ListContainer<DrawQuad> list(LargestDrawQuadSize()); 491 ListContainer<DrawQuad> list(kLargestQuadSize);
460 std::vector<SimpleDrawQuad*> sdq_list; 492 std::vector<SimpleDrawQuad*> sdq_list;
461 size_t size = 10; 493 size_t size = 10;
462 for (size_t i = 0; i < size; ++i) { 494 for (size_t i = 0; i < size; ++i) {
463 SimpleDrawQuad* simple_dq = list.AllocateAndConstruct<SimpleDrawQuad>(); 495 SimpleDrawQuad* simple_dq = list.AllocateAndConstruct<SimpleDrawQuad>();
464 sdq_list.push_back(simple_dq); 496 sdq_list.push_back(simple_dq);
465 } 497 }
466 EXPECT_EQ(size, list.size()); 498 EXPECT_EQ(size, list.size());
467 499
468 ListContainer<DrawQuad>::Iterator iter = list.begin(); 500 ListContainer<DrawQuad>::Iterator iter = list.begin();
469 for (int i = 0; i < 10; ++i) { 501 for (int i = 0; i < 10; ++i) {
470 static_cast<SimpleDrawQuad*>(*iter)->set_value(i); 502 static_cast<SimpleDrawQuad*>(*iter)->set_value(i);
471 ++iter; 503 ++iter;
472 } 504 }
473 505
474 int i = 0; 506 int i = 0;
475 for (std::vector<SimpleDrawQuad*>::const_iterator sdq_iter = sdq_list.begin(); 507 for (std::vector<SimpleDrawQuad*>::const_iterator sdq_iter = sdq_list.begin();
476 sdq_iter < sdq_list.end(); 508 sdq_iter < sdq_list.end();
477 ++sdq_iter) { 509 ++sdq_iter) {
478 EXPECT_EQ(i, (*sdq_iter)->get_value()); 510 EXPECT_EQ(i, (*sdq_iter)->get_value());
479 ++i; 511 ++i;
480 } 512 }
481 } 513 }
482 514
483 TEST(ListContainerTest, SimpleManipulationWithIndexSimpleDrawQuad) { 515 TEST(ListContainerTest, SimpleManipulationWithIndexSimpleDrawQuad) {
484 ListContainer<DrawQuad> list(LargestDrawQuadSize()); 516 ListContainer<DrawQuad> list(kLargestQuadSize);
485 std::vector<SimpleDrawQuad*> dq_list; 517 std::vector<SimpleDrawQuad*> dq_list;
486 size_t size = 10; 518 size_t size = 10;
487 for (size_t i = 0; i < size; ++i) { 519 for (size_t i = 0; i < size; ++i) {
488 dq_list.push_back(list.AllocateAndConstruct<SimpleDrawQuad>()); 520 dq_list.push_back(list.AllocateAndConstruct<SimpleDrawQuad>());
489 } 521 }
490 EXPECT_EQ(size, list.size()); 522 EXPECT_EQ(size, list.size());
491 523
492 for (size_t i = 0; i < size; ++i) { 524 for (size_t i = 0; i < size; ++i) {
493 static_cast<SimpleDrawQuad*>(list.ElementAt(i))->set_value(i); 525 static_cast<SimpleDrawQuad*>(list.ElementAt(i))->set_value(i);
494 } 526 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 for (ListContainer<SharedQuadState>::ReverseIterator iter = list.rbegin(); 577 for (ListContainer<SharedQuadState>::ReverseIterator iter = list.rbegin();
546 iter != list.rend(); 578 iter != list.rend();
547 ++iter) { 579 ++iter) {
548 EXPECT_EQ(i, iter.index()); 580 EXPECT_EQ(i, iter.index());
549 ++i; 581 ++i;
550 } 582 }
551 } 583 }
552 584
553 } // namespace 585 } // namespace
554 } // namespace cc 586 } // namespace cc
OLDNEW
« no previous file with comments | « cc/quads/list_container.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698