Index: cc/quads/list_container_unittest.cc |
diff --git a/cc/quads/list_container_unittest.cc b/cc/quads/list_container_unittest.cc |
index de88750467dd46a86c658361b7d792c4c27cf7d5..68e60610ea2938f81da1af412f827e51942afe6c 100644 |
--- a/cc/quads/list_container_unittest.cc |
+++ b/cc/quads/list_container_unittest.cc |
@@ -54,16 +54,22 @@ class SimpleDrawQuadConstructMagicNumberTwo : public SimpleDrawQuad { |
} |
}; |
-class MockDrawQuad : public DrawQuad { |
+class MockDrawQuad : public SimpleDrawQuadConstructMagicNumberOne { |
public: |
~MockDrawQuad() override { Destruct(); } |
- void IterateResources(const ResourceIteratorCallback& callback) override {} |
- void ExtendValue(base::trace_event::TracedValue* value) const override {} |
MOCK_METHOD0(Destruct, void()); |
}; |
+class MockDrawQuadSubclass : public MockDrawQuad { |
+ public: |
+ MockDrawQuadSubclass() { set_value(kMagicNumberToUseForDrawQuadTwo); } |
+}; |
+ |
+const size_t kLargestQuadSize = |
+ std::max(LargestDrawQuadSize(), sizeof(MockDrawQuadSubclass)); |
+ |
TEST(ListContainerTest, ConstructorCalledInAllocateAndConstruct) { |
- ListContainer<DrawQuad> list(LargestDrawQuadSize()); |
+ ListContainer<DrawQuad> list(kLargestQuadSize); |
size_t size = 2; |
SimpleDrawQuadConstructMagicNumberOne* dq_1 = |
@@ -80,7 +86,7 @@ TEST(ListContainerTest, ConstructorCalledInAllocateAndConstruct) { |
} |
TEST(ListContainerTest, DestructorCalled) { |
- ListContainer<DrawQuad> list(LargestDrawQuadSize()); |
+ ListContainer<DrawQuad> list(kLargestQuadSize); |
size_t size = 1; |
MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>(); |
@@ -91,7 +97,7 @@ TEST(ListContainerTest, DestructorCalled) { |
} |
TEST(ListContainerTest, DestructorCalledOnceWhenClear) { |
- ListContainer<DrawQuad> list(LargestDrawQuadSize()); |
+ ListContainer<DrawQuad> list(kLargestQuadSize); |
size_t size = 1; |
MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>(); |
@@ -112,8 +118,34 @@ TEST(ListContainerTest, DestructorCalledOnceWhenClear) { |
separator.Call(); |
} |
+TEST(ListContainerTest, ReplaceExistingElement) { |
+ ListContainer<DrawQuad> list(kLargestQuadSize); |
+ size_t size = 1; |
+ MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>(); |
+ |
+ EXPECT_EQ(size, list.size()); |
+ EXPECT_EQ(dq_1, list.front()); |
+ |
+ // Make sure destructor is called once during clear, and won't be called |
+ // again. |
+ testing::MockFunction<void()> separator; |
+ { |
+ testing::InSequence s; |
+ EXPECT_CALL(*dq_1, Destruct()); |
+ EXPECT_CALL(separator, Call()); |
+ EXPECT_CALL(*dq_1, Destruct()).Times(0); |
+ } |
+ |
+ list.ReplaceExistingElement<MockDrawQuadSubclass>(list.begin()); |
+ EXPECT_EQ(kMagicNumberToUseForDrawQuadTwo, dq_1->get_value()); |
+ separator.Call(); |
+ |
+ EXPECT_CALL(*dq_1, Destruct()); |
+ list.clear(); |
+} |
+ |
TEST(ListContainerTest, DestructorCalledOnceWhenErase) { |
- ListContainer<DrawQuad> list(LargestDrawQuadSize()); |
+ ListContainer<DrawQuad> list(kLargestQuadSize); |
size_t size = 1; |
MockDrawQuad* dq_1 = list.AllocateAndConstruct<MockDrawQuad>(); |
@@ -434,7 +466,7 @@ TEST(ListContainerTest, SimpleReverseInsertionSharedQuadState) { |
} |
TEST(ListContainerTest, SimpleDeletion) { |
- ListContainer<DrawQuad> list(LargestDrawQuadSize()); |
+ ListContainer<DrawQuad> list(kLargestQuadSize); |
std::vector<SimpleDrawQuad*> sdq_list; |
size_t size = 10; |
for (size_t i = 0; i < size; ++i) { |
@@ -456,7 +488,7 @@ TEST(ListContainerTest, SimpleDeletion) { |
} |
TEST(ListContainerTest, SimpleIterationAndManipulation) { |
- ListContainer<DrawQuad> list(LargestDrawQuadSize()); |
+ ListContainer<DrawQuad> list(kLargestQuadSize); |
std::vector<SimpleDrawQuad*> sdq_list; |
size_t size = 10; |
for (size_t i = 0; i < size; ++i) { |
@@ -481,7 +513,7 @@ TEST(ListContainerTest, SimpleIterationAndManipulation) { |
} |
TEST(ListContainerTest, SimpleManipulationWithIndexSimpleDrawQuad) { |
- ListContainer<DrawQuad> list(LargestDrawQuadSize()); |
+ ListContainer<DrawQuad> list(kLargestQuadSize); |
std::vector<SimpleDrawQuad*> dq_list; |
size_t size = 10; |
for (size_t i = 0; i < size; ++i) { |