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/base/list_container.h" | 5 #include "cc/base/list_container.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 #include "testing/gmock/include/gmock/gmock.h" | 9 #include "testing/gmock/include/gmock/gmock.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 } | 79 } |
80 | 80 |
81 const int kMagicNumberToUseForSimpleDerivedElementOne = 42; | 81 const int kMagicNumberToUseForSimpleDerivedElementOne = 42; |
82 const int kMagicNumberToUseForSimpleDerivedElementTwo = 314; | 82 const int kMagicNumberToUseForSimpleDerivedElementTwo = 314; |
83 const int kMagicNumberToUseForSimpleDerivedElementThree = 1618; | 83 const int kMagicNumberToUseForSimpleDerivedElementThree = 1618; |
84 | 84 |
85 class SimpleDerivedElement : public DerivedElement { | 85 class SimpleDerivedElement : public DerivedElement { |
86 public: | 86 public: |
87 ~SimpleDerivedElement() override {} | 87 ~SimpleDerivedElement() override {} |
88 void set_value(int val) { value = val; } | 88 void set_value(int val) { value = val; } |
89 int get_value() { return value; } | 89 int get_value() const { return value; } |
90 | 90 |
91 private: | 91 private: |
92 int value; | 92 int value; |
93 }; | 93 }; |
94 | 94 |
95 class SimpleDerivedElementConstructMagicNumberOne | 95 class SimpleDerivedElementConstructMagicNumberOne |
96 : public SimpleDerivedElement { | 96 : public SimpleDerivedElement { |
97 public: | 97 public: |
98 SimpleDerivedElementConstructMagicNumberOne() { | 98 SimpleDerivedElementConstructMagicNumberOne() { |
99 set_value(kMagicNumberToUseForSimpleDerivedElementOne); | 99 set_value(kMagicNumberToUseForSimpleDerivedElementOne); |
(...skipping 1094 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1194 // The capacity should shrink with the list. | 1194 // The capacity should shrink with the list. |
1195 for (int i = 0; i < iterations; i++) { | 1195 for (int i = 0; i < iterations; i++) { |
1196 size_t capacity = list.GetCapacityInBytes(); | 1196 size_t capacity = list.GetCapacityInBytes(); |
1197 ASSERT_GE(capacity, list.size() * LargestDerivedElementSize()); | 1197 ASSERT_GE(capacity, list.size() * LargestDerivedElementSize()); |
1198 ASSERT_LE(capacity, std::max(list.size(), upper_bound_on_min_capacity) * | 1198 ASSERT_LE(capacity, std::max(list.size(), upper_bound_on_min_capacity) * |
1199 max_waste_factor * LargestDerivedElementSize()); | 1199 max_waste_factor * LargestDerivedElementSize()); |
1200 list.RemoveLast(); | 1200 list.RemoveLast(); |
1201 } | 1201 } |
1202 } | 1202 } |
1203 | 1203 |
| 1204 TEST(RandomAccessListContainerTest, RandomAccess) { |
| 1205 RandomAccessListContainer<SimpleDerivedElement> list( |
| 1206 LargestDerivedElementSize(), 1); |
| 1207 |
| 1208 list.AllocateAndConstruct<SimpleDerivedElementConstructMagicNumberOne>(); |
| 1209 list.AllocateAndConstruct<SimpleDerivedElementConstructMagicNumberTwo>(); |
| 1210 list.AllocateAndConstruct<SimpleDerivedElementConstructMagicNumberThree>(); |
| 1211 list.AllocateAndConstruct<SimpleDerivedElementConstructMagicNumberOne>(); |
| 1212 list.AllocateAndConstruct<SimpleDerivedElementConstructMagicNumberTwo>(); |
| 1213 list.AllocateAndConstruct<SimpleDerivedElementConstructMagicNumberThree>(); |
| 1214 |
| 1215 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, list[0]->get_value()); |
| 1216 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementTwo, list[1]->get_value()); |
| 1217 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementThree, |
| 1218 list[2]->get_value()); |
| 1219 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, list[3]->get_value()); |
| 1220 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementTwo, list[4]->get_value()); |
| 1221 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementThree, |
| 1222 list[5]->get_value()); |
| 1223 |
| 1224 list.RemoveLast(); |
| 1225 list.RemoveLast(); |
| 1226 list.RemoveLast(); |
| 1227 |
| 1228 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementOne, list[0]->get_value()); |
| 1229 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementTwo, list[1]->get_value()); |
| 1230 EXPECT_EQ(kMagicNumberToUseForSimpleDerivedElementThree, |
| 1231 list[2]->get_value()); |
| 1232 } |
| 1233 |
1204 } // namespace | 1234 } // namespace |
1205 } // namespace cc | 1235 } // namespace cc |
OLD | NEW |