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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/ContiguousContainerTest.cpp

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

Powered by Google App Engine
This is Rietveld 408576698