| 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 "platform/graphics/ContiguousContainer.h" | 5 #include "platform/graphics/ContiguousContainer.h" |
| 6 | 6 |
| 7 #include "testing/gmock/include/gmock/gmock.h" | 7 #include "testing/gmock/include/gmock/gmock.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "wtf/TypeTraits.h" | 9 #include "wtf/TypeTraits.h" |
| 10 | 10 |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 ContiguousContainer<Point2D, kPointAlignment> list(kMaxPointSize); | 226 ContiguousContainer<Point2D, kPointAlignment> list(kMaxPointSize); |
| 227 for (int i = 0; i < (int)kNumElements; i++) | 227 for (int i = 0; i < (int)kNumElements; i++) |
| 228 list.allocateAndConstruct<Point2D>(i, i); | 228 list.allocateAndConstruct<Point2D>(i, i); |
| 229 unsigned count = 0; | 229 unsigned count = 0; |
| 230 for (Point2D& point : list) { | 230 for (Point2D& point : list) { |
| 231 EXPECT_EQ((int)count, point.x); | 231 EXPECT_EQ((int)count, point.x); |
| 232 count++; | 232 count++; |
| 233 } | 233 } |
| 234 EXPECT_EQ(kNumElements, count); | 234 EXPECT_EQ(kNumElements, count); |
| 235 | 235 |
| 236 static_assert(WTF::IsSameType<decltype(*list.begin()), Point2D&>::value, | 236 static_assert(std::is_same<decltype(*list.begin()), Point2D&>::value, |
| 237 "Non-const iteration should produce non-const references."); | 237 "Non-const iteration should produce non-const references."); |
| 238 } | 238 } |
| 239 | 239 |
| 240 TEST(ContiguousContainerTest, ConstForwardIteration) | 240 TEST(ContiguousContainerTest, ConstForwardIteration) |
| 241 { | 241 { |
| 242 ContiguousContainer<Point2D, kPointAlignment> list(kMaxPointSize); | 242 ContiguousContainer<Point2D, kPointAlignment> list(kMaxPointSize); |
| 243 for (int i = 0; i < (int)kNumElements; i++) | 243 for (int i = 0; i < (int)kNumElements; i++) |
| 244 list.allocateAndConstruct<Point2D>(i, i); | 244 list.allocateAndConstruct<Point2D>(i, i); |
| 245 | 245 |
| 246 const auto& constList = list; | 246 const auto& constList = list; |
| 247 unsigned count = 0; | 247 unsigned count = 0; |
| 248 for (const Point2D& point : constList) { | 248 for (const Point2D& point : constList) { |
| 249 EXPECT_EQ((int)count, point.x); | 249 EXPECT_EQ((int)count, point.x); |
| 250 count++; | 250 count++; |
| 251 } | 251 } |
| 252 EXPECT_EQ(kNumElements, count); | 252 EXPECT_EQ(kNumElements, count); |
| 253 | 253 |
| 254 static_assert(WTF::IsSameType<decltype(*constList.begin()), const Point2D&>:
:value, | 254 static_assert(std::is_same<decltype(*constList.begin()), const Point2D&>::va
lue, |
| 255 "Const iteration should produce const references."); | 255 "Const iteration should produce const references."); |
| 256 } | 256 } |
| 257 | 257 |
| 258 TEST(ContiguousContainerTest, ReverseIteration) | 258 TEST(ContiguousContainerTest, ReverseIteration) |
| 259 { | 259 { |
| 260 ContiguousContainer<Point2D, kPointAlignment> list(kMaxPointSize); | 260 ContiguousContainer<Point2D, kPointAlignment> list(kMaxPointSize); |
| 261 for (int i = 0; i < (int)kNumElements; i++) | 261 for (int i = 0; i < (int)kNumElements; i++) |
| 262 list.allocateAndConstruct<Point2D>(i, i); | 262 list.allocateAndConstruct<Point2D>(i, i); |
| 263 | 263 |
| 264 unsigned count = 0; | 264 unsigned count = 0; |
| 265 for (auto it = list.rbegin(); it != list.rend(); ++it) { | 265 for (auto it = list.rbegin(); it != list.rend(); ++it) { |
| 266 EXPECT_EQ((int)(kNumElements - 1 - count), it->x); | 266 EXPECT_EQ((int)(kNumElements - 1 - count), it->x); |
| 267 count++; | 267 count++; |
| 268 } | 268 } |
| 269 EXPECT_EQ(kNumElements, count); | 269 EXPECT_EQ(kNumElements, count); |
| 270 | 270 |
| 271 static_assert(WTF::IsSameType<decltype(*list.rbegin()), Point2D&>::value, | 271 static_assert(std::is_same<decltype(*list.rbegin()), Point2D&>::value, |
| 272 "Non-const iteration should produce non-const references."); | 272 "Non-const iteration should produce non-const references."); |
| 273 } | 273 } |
| 274 | 274 |
| 275 // Checks that the latter list has pointers to the elements of the former. | 275 // Checks that the latter list has pointers to the elements of the former. |
| 276 template <typename It1, typename It2> | 276 template <typename It1, typename It2> |
| 277 bool EqualPointers(It1 it1, const It1& end1, It2 it2) | 277 bool EqualPointers(It1 it1, const It1& end1, It2 it2) |
| 278 { | 278 { |
| 279 for (; it1 != end1; ++it1, ++it2) { | 279 for (; it1 != end1; ++it1, ++it2) { |
| 280 if (&*it1 != *it2) | 280 if (&*it1 != *it2) |
| 281 return false; | 281 return false; |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 519 ContiguousContainer<Point2D, kPointAlignment> list(kMaxPointSize); | 519 ContiguousContainer<Point2D, kPointAlignment> list(kMaxPointSize); |
| 520 size_t emptyCapacity = list.capacityInBytes(); | 520 size_t emptyCapacity = list.capacityInBytes(); |
| 521 list.allocateAndConstruct<Point2D>(); | 521 list.allocateAndConstruct<Point2D>(); |
| 522 list.allocateAndConstruct<Point2D>(); | 522 list.allocateAndConstruct<Point2D>(); |
| 523 list.clear(); | 523 list.clear(); |
| 524 EXPECT_EQ(emptyCapacity, list.capacityInBytes()); | 524 EXPECT_EQ(emptyCapacity, list.capacityInBytes()); |
| 525 } | 525 } |
| 526 | 526 |
| 527 } // namespace | 527 } // namespace |
| 528 } // namespace blink | 528 } // namespace blink |
| OLD | NEW |