| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "config.h" | 5 #include "config.h" |
| 6 #include "platform/graphics/ListContainer.h" | 6 #include "platform/graphics/ListContainer.h" |
| 7 | 7 |
| 8 #include "wtf/OwnPtr.h" | 8 #include "wtf/OwnPtr.h" |
| 9 #include "wtf/PassOwnPtr.h" | 9 #include "wtf/PassOwnPtr.h" |
| 10 #include "wtf/RefPtr.h" | 10 #include "wtf/RefPtr.h" |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 SimpleDerivedElementConstructMagicNumberTwo* derivedElement2 = list.allocate
AndConstruct<SimpleDerivedElementConstructMagicNumberTwo>(); | 146 SimpleDerivedElementConstructMagicNumberTwo* derivedElement2 = list.allocate
AndConstruct<SimpleDerivedElementConstructMagicNumberTwo>(); |
| 147 | 147 |
| 148 EXPECT_EQ(size, list.size()); | 148 EXPECT_EQ(size, list.size()); |
| 149 EXPECT_EQ(derivedElement1, list.front()); | 149 EXPECT_EQ(derivedElement1, list.front()); |
| 150 EXPECT_EQ(derivedElement2, list.back()); | 150 EXPECT_EQ(derivedElement2, list.back()); |
| 151 | 151 |
| 152 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, derivedElement1->getV
alue()); | 152 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, derivedElement1->getV
alue()); |
| 153 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementTwo, derivedElement2->getV
alue()); | 153 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementTwo, derivedElement2->getV
alue()); |
| 154 } | 154 } |
| 155 | 155 |
| 156 TEST(ListContainerTest, AllocateAndConstructWithArguments) |
| 157 { |
| 158 // Create a new OwnPtr<SimpleDerivedElement> by passing in a new SimpleDeriv
edElement. |
| 159 ListContainer<OwnPtr<SimpleDerivedElement>> list1(kCurrentLargestDerivedElem
entSize); |
| 160 auto* sdeOwnPtr1 = list1.allocateAndConstruct<OwnPtr<SimpleDerivedElement>>(
adoptPtr(new SimpleDerivedElementConstructMagicNumberOne())); |
| 161 EXPECT_EQ(1u, list1.size()); |
| 162 EXPECT_EQ(sdeOwnPtr1, list1.back()); |
| 163 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, (*sdeOwnPtr1)->getVal
ue()); |
| 164 (*sdeOwnPtr1)->setValue(kMagicNumberToUseForSimpleDerivedElementTwo); |
| 165 |
| 166 // Transfer an OwnPtr<SimpleDerivedElement> to another list. |
| 167 ListContainer<OwnPtr<SimpleDerivedElement>> list2(kCurrentLargestDerivedElem
entSize); |
| 168 auto* sdeOwnPtr2 = list2.allocateAndConstruct<OwnPtr<SimpleDerivedElement>>(
sdeOwnPtr1->release()); |
| 169 EXPECT_EQ(1u, list2.size()); |
| 170 EXPECT_EQ(sdeOwnPtr2, list2.back()); |
| 171 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementTwo, (*sdeOwnPtr2)->getVal
ue()); |
| 172 |
| 173 // Verify the first OwnPtr is null after moving. |
| 174 EXPECT_EQ(nullptr, list1.back()->get()); |
| 175 } |
| 176 |
| 156 TEST(ListContainerTest, DestructorCalled) | 177 TEST(ListContainerTest, DestructorCalled) |
| 157 { | 178 { |
| 158 ListContainer<DerivedElement> list(kCurrentLargestDerivedElementSize); | 179 ListContainer<DerivedElement> list(kCurrentLargestDerivedElementSize); |
| 159 | 180 |
| 160 size_t size = 1; | 181 size_t size = 1; |
| 161 MockDerivedElement* derivedElement1 = list.allocateAndConstruct<MockDerivedE
lement>(); | 182 MockDerivedElement* derivedElement1 = list.allocateAndConstruct<MockDerivedE
lement>(); |
| 162 | 183 |
| 163 EXPECT_CALL(*derivedElement1, Destruct()); | 184 EXPECT_CALL(*derivedElement1, Destruct()); |
| 164 EXPECT_EQ(size, list.size()); | 185 EXPECT_EQ(size, list.size()); |
| 165 EXPECT_EQ(derivedElement1, list.front()); | 186 EXPECT_EQ(derivedElement1, list.front()); |
| (...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 MockDerivedElement* mde1 = list1.allocateAndConstruct<MockDerivedElement>(); | 867 MockDerivedElement* mde1 = list1.allocateAndConstruct<MockDerivedElement>(); |
| 847 | 868 |
| 848 // Make sure destructor isn't called during AppendByMoving. | 869 // Make sure destructor isn't called during AppendByMoving. |
| 849 list2.appendByMoving(mde1); | 870 list2.appendByMoving(mde1); |
| 850 EXPECT_CALL(*mde1, Destruct()).Times(0); | 871 EXPECT_CALL(*mde1, Destruct()).Times(0); |
| 851 testing::Mock::VerifyAndClearExpectations(mde1); | 872 testing::Mock::VerifyAndClearExpectations(mde1); |
| 852 mde1 = static_cast<MockDerivedElement*>(list2.back()); | 873 mde1 = static_cast<MockDerivedElement*>(list2.back()); |
| 853 EXPECT_CALL(*mde1, Destruct()); | 874 EXPECT_CALL(*mde1, Destruct()); |
| 854 } | 875 } |
| 855 | 876 |
| 877 TEST(ListContainerTest, AppendByMovingReturnsMovedPointer) |
| 878 { |
| 879 ListContainer<SimpleDerivedElement> list1(kCurrentLargestDerivedElementSize)
; |
| 880 ListContainer<SimpleDerivedElement> list2(kCurrentLargestDerivedElementSize)
; |
| 881 SimpleDerivedElement* simpleElement = list1.allocateAndConstruct<SimpleDeriv
edElement>(); |
| 882 |
| 883 SimpleDerivedElement* movedElement1 = list2.appendByMoving(simpleElement); |
| 884 EXPECT_EQ(list2.back(), movedElement1); |
| 885 |
| 886 SimpleDerivedElement* movedElement2 = list1.appendByMoving(movedElement1); |
| 887 EXPECT_EQ(list1.back(), movedElement2); |
| 888 EXPECT_NE(movedElement1, movedElement2); |
| 889 } |
| 890 |
| 856 TEST(ListContainerTest, AppendByMovingReplacesSourceWithNewDerivedElement) | 891 TEST(ListContainerTest, AppendByMovingReplacesSourceWithNewDerivedElement) |
| 857 { | 892 { |
| 858 ListContainer<SimpleDerivedElementConstructMagicNumberOne> list1(kCurrentLar
gestDerivedElementSize); | 893 ListContainer<SimpleDerivedElementConstructMagicNumberOne> list1(kCurrentLar
gestDerivedElementSize); |
| 859 ListContainer<SimpleDerivedElementConstructMagicNumberTwo> list2(kCurrentLar
gestDerivedElementSize); | 894 ListContainer<SimpleDerivedElementConstructMagicNumberTwo> list2(kCurrentLar
gestDerivedElementSize); |
| 860 | 895 |
| 861 list1.allocateAndConstruct<SimpleDerivedElementConstructMagicNumberOne>(); | 896 list1.allocateAndConstruct<SimpleDerivedElementConstructMagicNumberOne>(); |
| 862 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, | 897 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, |
| 863 list1.front()->getValue()); | 898 list1.front()->getValue()); |
| 864 | 899 |
| 865 list2.appendByMoving(list1.front()); | 900 list2.appendByMoving(list1.front()); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 970 EXPECT_EQ(2u, list1.size()); | 1005 EXPECT_EQ(2u, list1.size()); |
| 971 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, list2.front()->getVal
ue()); | 1006 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, list2.front()->getVal
ue()); |
| 972 EXPECT_EQ(1u, list2.size()); | 1007 EXPECT_EQ(1u, list2.size()); |
| 973 | 1008 |
| 974 // Ensure pointers are still valid after swapping. | 1009 // Ensure pointers are still valid after swapping. |
| 975 EXPECT_EQ(preSwapList1Front, list2.front()); | 1010 EXPECT_EQ(preSwapList1Front, list2.front()); |
| 976 } | 1011 } |
| 977 | 1012 |
| 978 } // namespace | 1013 } // namespace |
| 979 } // namespace blink | 1014 } // namespace blink |
| OLD | NEW |