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

Side by Side Diff: third_party/WebKit/Source/wtf/ListHashSetTest.cpp

Issue 2724363002: Migrate WTF::LinkedHashSet/ListHashSet::add() to ::insert() (Closed)
Patch Set: Created 3 years, 9 months 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
« no previous file with comments | « third_party/WebKit/Source/wtf/ListHashSet.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 30 matching lines...) Expand all
41 template <typename Set> 41 template <typename Set>
42 class ListOrLinkedHashSetTest : public ::testing::Test {}; 42 class ListOrLinkedHashSetTest : public ::testing::Test {};
43 43
44 using SetTypes = 44 using SetTypes =
45 ::testing::Types<ListHashSet<int>, ListHashSet<int, 1>, LinkedHashSet<int>>; 45 ::testing::Types<ListHashSet<int>, ListHashSet<int, 1>, LinkedHashSet<int>>;
46 TYPED_TEST_CASE(ListOrLinkedHashSetTest, SetTypes); 46 TYPED_TEST_CASE(ListOrLinkedHashSetTest, SetTypes);
47 47
48 TYPED_TEST(ListOrLinkedHashSetTest, RemoveFirst) { 48 TYPED_TEST(ListOrLinkedHashSetTest, RemoveFirst) {
49 using Set = TypeParam; 49 using Set = TypeParam;
50 Set list; 50 Set list;
51 list.add(-1); 51 list.insert(-1);
52 list.add(0); 52 list.insert(0);
53 list.add(1); 53 list.insert(1);
54 list.add(2); 54 list.insert(2);
55 list.add(3); 55 list.insert(3);
56 56
57 EXPECT_EQ(-1, list.first()); 57 EXPECT_EQ(-1, list.first());
58 EXPECT_EQ(3, list.last()); 58 EXPECT_EQ(3, list.last());
59 59
60 list.removeFirst(); 60 list.removeFirst();
61 EXPECT_EQ(0, list.first()); 61 EXPECT_EQ(0, list.first());
62 62
63 list.removeLast(); 63 list.removeLast();
64 EXPECT_EQ(2, list.last()); 64 EXPECT_EQ(2, list.last());
65 65
66 list.removeFirst(); 66 list.removeFirst();
67 EXPECT_EQ(1, list.first()); 67 EXPECT_EQ(1, list.first());
68 68
69 list.removeFirst(); 69 list.removeFirst();
70 EXPECT_EQ(2, list.first()); 70 EXPECT_EQ(2, list.first());
71 71
72 list.removeFirst(); 72 list.removeFirst();
73 EXPECT_TRUE(list.isEmpty()); 73 EXPECT_TRUE(list.isEmpty());
74 } 74 }
75 75
76 TYPED_TEST(ListOrLinkedHashSetTest, AppendOrMoveToLastNewItems) { 76 TYPED_TEST(ListOrLinkedHashSetTest, AppendOrMoveToLastNewItems) {
77 using Set = TypeParam; 77 using Set = TypeParam;
78 Set list; 78 Set list;
79 typename Set::AddResult result = list.appendOrMoveToLast(1); 79 typename Set::AddResult result = list.appendOrMoveToLast(1);
80 EXPECT_TRUE(result.isNewEntry); 80 EXPECT_TRUE(result.isNewEntry);
81 result = list.add(2); 81 result = list.insert(2);
82 EXPECT_TRUE(result.isNewEntry); 82 EXPECT_TRUE(result.isNewEntry);
83 result = list.appendOrMoveToLast(3); 83 result = list.appendOrMoveToLast(3);
84 EXPECT_TRUE(result.isNewEntry); 84 EXPECT_TRUE(result.isNewEntry);
85 85
86 EXPECT_EQ(list.size(), 3UL); 86 EXPECT_EQ(list.size(), 3UL);
87 87
88 // The list should be in order 1, 2, 3. 88 // The list should be in order 1, 2, 3.
89 typename Set::iterator iterator = list.begin(); 89 typename Set::iterator iterator = list.begin();
90 EXPECT_EQ(1, *iterator); 90 EXPECT_EQ(1, *iterator);
91 ++iterator; 91 ++iterator;
92 EXPECT_EQ(2, *iterator); 92 EXPECT_EQ(2, *iterator);
93 ++iterator; 93 ++iterator;
94 EXPECT_EQ(3, *iterator); 94 EXPECT_EQ(3, *iterator);
95 ++iterator; 95 ++iterator;
96 } 96 }
97 97
98 TYPED_TEST(ListOrLinkedHashSetTest, AppendOrMoveToLastWithDuplicates) { 98 TYPED_TEST(ListOrLinkedHashSetTest, AppendOrMoveToLastWithDuplicates) {
99 using Set = TypeParam; 99 using Set = TypeParam;
100 Set list; 100 Set list;
101 101
102 // Add a single element twice. 102 // Add a single element twice.
103 typename Set::AddResult result = list.add(1); 103 typename Set::AddResult result = list.insert(1);
104 EXPECT_TRUE(result.isNewEntry); 104 EXPECT_TRUE(result.isNewEntry);
105 result = list.appendOrMoveToLast(1); 105 result = list.appendOrMoveToLast(1);
106 EXPECT_FALSE(result.isNewEntry); 106 EXPECT_FALSE(result.isNewEntry);
107 EXPECT_EQ(1UL, list.size()); 107 EXPECT_EQ(1UL, list.size());
108 108
109 list.add(2); 109 list.insert(2);
110 list.add(3); 110 list.insert(3);
111 EXPECT_EQ(3UL, list.size()); 111 EXPECT_EQ(3UL, list.size());
112 112
113 // Appending 2 move it to the end. 113 // Appending 2 move it to the end.
114 EXPECT_EQ(3, list.last()); 114 EXPECT_EQ(3, list.last());
115 result = list.appendOrMoveToLast(2); 115 result = list.appendOrMoveToLast(2);
116 EXPECT_FALSE(result.isNewEntry); 116 EXPECT_FALSE(result.isNewEntry);
117 EXPECT_EQ(2, list.last()); 117 EXPECT_EQ(2, list.last());
118 118
119 // Inverse the list by moving each element to end end. 119 // Inverse the list by moving each element to end end.
120 result = list.appendOrMoveToLast(3); 120 result = list.appendOrMoveToLast(3);
(...skipping 11 matching lines...) Expand all
132 ++iterator; 132 ++iterator;
133 EXPECT_EQ(1, *iterator); 133 EXPECT_EQ(1, *iterator);
134 ++iterator; 134 ++iterator;
135 } 135 }
136 136
137 TYPED_TEST(ListOrLinkedHashSetTest, PrependOrMoveToFirstNewItems) { 137 TYPED_TEST(ListOrLinkedHashSetTest, PrependOrMoveToFirstNewItems) {
138 using Set = TypeParam; 138 using Set = TypeParam;
139 Set list; 139 Set list;
140 typename Set::AddResult result = list.prependOrMoveToFirst(1); 140 typename Set::AddResult result = list.prependOrMoveToFirst(1);
141 EXPECT_TRUE(result.isNewEntry); 141 EXPECT_TRUE(result.isNewEntry);
142 result = list.add(2); 142 result = list.insert(2);
143 EXPECT_TRUE(result.isNewEntry); 143 EXPECT_TRUE(result.isNewEntry);
144 result = list.prependOrMoveToFirst(3); 144 result = list.prependOrMoveToFirst(3);
145 EXPECT_TRUE(result.isNewEntry); 145 EXPECT_TRUE(result.isNewEntry);
146 146
147 EXPECT_EQ(list.size(), 3UL); 147 EXPECT_EQ(list.size(), 3UL);
148 148
149 // The list should be in order 3, 1, 2. 149 // The list should be in order 3, 1, 2.
150 typename Set::iterator iterator = list.begin(); 150 typename Set::iterator iterator = list.begin();
151 EXPECT_EQ(3, *iterator); 151 EXPECT_EQ(3, *iterator);
152 ++iterator; 152 ++iterator;
153 EXPECT_EQ(1, *iterator); 153 EXPECT_EQ(1, *iterator);
154 ++iterator; 154 ++iterator;
155 EXPECT_EQ(2, *iterator); 155 EXPECT_EQ(2, *iterator);
156 ++iterator; 156 ++iterator;
157 } 157 }
158 158
159 TYPED_TEST(ListOrLinkedHashSetTest, PrependOrMoveToLastWithDuplicates) { 159 TYPED_TEST(ListOrLinkedHashSetTest, PrependOrMoveToLastWithDuplicates) {
160 using Set = TypeParam; 160 using Set = TypeParam;
161 Set list; 161 Set list;
162 162
163 // Add a single element twice. 163 // Add a single element twice.
164 typename Set::AddResult result = list.add(1); 164 typename Set::AddResult result = list.insert(1);
165 EXPECT_TRUE(result.isNewEntry); 165 EXPECT_TRUE(result.isNewEntry);
166 result = list.prependOrMoveToFirst(1); 166 result = list.prependOrMoveToFirst(1);
167 EXPECT_FALSE(result.isNewEntry); 167 EXPECT_FALSE(result.isNewEntry);
168 EXPECT_EQ(1UL, list.size()); 168 EXPECT_EQ(1UL, list.size());
169 169
170 list.add(2); 170 list.insert(2);
171 list.add(3); 171 list.insert(3);
172 EXPECT_EQ(3UL, list.size()); 172 EXPECT_EQ(3UL, list.size());
173 173
174 // Prepending 2 move it to the beginning. 174 // Prepending 2 move it to the beginning.
175 EXPECT_EQ(1, list.first()); 175 EXPECT_EQ(1, list.first());
176 result = list.prependOrMoveToFirst(2); 176 result = list.prependOrMoveToFirst(2);
177 EXPECT_FALSE(result.isNewEntry); 177 EXPECT_FALSE(result.isNewEntry);
178 EXPECT_EQ(2, list.first()); 178 EXPECT_EQ(2, list.first());
179 179
180 // Inverse the list by moving each element to the first position. 180 // Inverse the list by moving each element to the first position.
181 result = list.prependOrMoveToFirst(1); 181 result = list.prependOrMoveToFirst(1);
182 EXPECT_FALSE(result.isNewEntry); 182 EXPECT_FALSE(result.isNewEntry);
183 result = list.prependOrMoveToFirst(2); 183 result = list.prependOrMoveToFirst(2);
184 EXPECT_FALSE(result.isNewEntry); 184 EXPECT_FALSE(result.isNewEntry);
185 result = list.prependOrMoveToFirst(3); 185 result = list.prependOrMoveToFirst(3);
186 EXPECT_FALSE(result.isNewEntry); 186 EXPECT_FALSE(result.isNewEntry);
187 EXPECT_EQ(3UL, list.size()); 187 EXPECT_EQ(3UL, list.size());
188 188
189 typename Set::iterator iterator = list.begin(); 189 typename Set::iterator iterator = list.begin();
190 EXPECT_EQ(3, *iterator); 190 EXPECT_EQ(3, *iterator);
191 ++iterator; 191 ++iterator;
192 EXPECT_EQ(2, *iterator); 192 EXPECT_EQ(2, *iterator);
193 ++iterator; 193 ++iterator;
194 EXPECT_EQ(1, *iterator); 194 EXPECT_EQ(1, *iterator);
195 ++iterator; 195 ++iterator;
196 } 196 }
197 197
198 TYPED_TEST(ListOrLinkedHashSetTest, Find) { 198 TYPED_TEST(ListOrLinkedHashSetTest, Find) {
199 using Set = TypeParam; 199 using Set = TypeParam;
200 Set set; 200 Set set;
201 set.add(-1); 201 set.insert(-1);
202 set.add(0); 202 set.insert(0);
203 set.add(1); 203 set.insert(1);
204 set.add(2); 204 set.insert(2);
205 set.add(3); 205 set.insert(3);
206 206
207 { 207 {
208 const Set& ref = set; 208 const Set& ref = set;
209 typename Set::const_iterator it = ref.find(2); 209 typename Set::const_iterator it = ref.find(2);
210 EXPECT_EQ(2, *it); 210 EXPECT_EQ(2, *it);
211 ++it; 211 ++it;
212 EXPECT_EQ(3, *it); 212 EXPECT_EQ(3, *it);
213 --it; 213 --it;
214 --it; 214 --it;
215 EXPECT_EQ(1, *it); 215 EXPECT_EQ(1, *it);
216 } 216 }
217 { 217 {
218 Set& ref = set; 218 Set& ref = set;
219 typename Set::iterator it = ref.find(2); 219 typename Set::iterator it = ref.find(2);
220 EXPECT_EQ(2, *it); 220 EXPECT_EQ(2, *it);
221 ++it; 221 ++it;
222 EXPECT_EQ(3, *it); 222 EXPECT_EQ(3, *it);
223 --it; 223 --it;
224 --it; 224 --it;
225 EXPECT_EQ(1, *it); 225 EXPECT_EQ(1, *it);
226 } 226 }
227 } 227 }
228 228
229 TYPED_TEST(ListOrLinkedHashSetTest, InsertBefore) { 229 TYPED_TEST(ListOrLinkedHashSetTest, InsertBefore) {
230 using Set = TypeParam; 230 using Set = TypeParam;
231 bool canModifyWhileIterating = !std::is_same<Set, LinkedHashSet<int>>::value; 231 bool canModifyWhileIterating = !std::is_same<Set, LinkedHashSet<int>>::value;
232 Set set; 232 Set set;
233 set.add(-1); 233 set.insert(-1);
234 set.add(0); 234 set.insert(0);
235 set.add(2); 235 set.insert(2);
236 set.add(3); 236 set.insert(3);
237 237
238 typename Set::iterator it = set.find(2); 238 typename Set::iterator it = set.find(2);
239 EXPECT_EQ(2, *it); 239 EXPECT_EQ(2, *it);
240 set.insertBefore(it, 1); 240 set.insertBefore(it, 1);
241 if (!canModifyWhileIterating) 241 if (!canModifyWhileIterating)
242 it = set.find(2); 242 it = set.find(2);
243 ++it; 243 ++it;
244 EXPECT_EQ(3, *it); 244 EXPECT_EQ(3, *it);
245 EXPECT_EQ(5u, set.size()); 245 EXPECT_EQ(5u, set.size());
246 --it; 246 --it;
247 --it; 247 --it;
248 EXPECT_EQ(1, *it); 248 EXPECT_EQ(1, *it);
249 if (canModifyWhileIterating) { 249 if (canModifyWhileIterating) {
250 set.remove(-1); 250 set.remove(-1);
251 set.remove(0); 251 set.remove(0);
252 set.remove(2); 252 set.remove(2);
253 set.remove(3); 253 set.remove(3);
254 EXPECT_EQ(1u, set.size()); 254 EXPECT_EQ(1u, set.size());
255 EXPECT_EQ(1, *it); 255 EXPECT_EQ(1, *it);
256 ++it; 256 ++it;
257 EXPECT_EQ(it, set.end()); 257 EXPECT_EQ(it, set.end());
258 --it; 258 --it;
259 EXPECT_EQ(1, *it); 259 EXPECT_EQ(1, *it);
260 set.insertBefore(it, -1); 260 set.insertBefore(it, -1);
261 set.insertBefore(it, 0); 261 set.insertBefore(it, 0);
262 set.add(2); 262 set.insert(2);
263 set.add(3); 263 set.insert(3);
264 } 264 }
265 set.insertBefore(2, 42); 265 set.insertBefore(2, 42);
266 set.insertBefore(-1, 103); 266 set.insertBefore(-1, 103);
267 EXPECT_EQ(103, set.first()); 267 EXPECT_EQ(103, set.first());
268 if (!canModifyWhileIterating) 268 if (!canModifyWhileIterating)
269 it = set.find(1); 269 it = set.find(1);
270 ++it; 270 ++it;
271 EXPECT_EQ(42, *it); 271 EXPECT_EQ(42, *it);
272 EXPECT_EQ(7u, set.size()); 272 EXPECT_EQ(7u, set.size());
273 } 273 }
274 274
275 TYPED_TEST(ListOrLinkedHashSetTest, AddReturnIterator) { 275 TYPED_TEST(ListOrLinkedHashSetTest, AddReturnIterator) {
276 using Set = TypeParam; 276 using Set = TypeParam;
277 bool canModifyWhileIterating = !std::is_same<Set, LinkedHashSet<int>>::value; 277 bool canModifyWhileIterating = !std::is_same<Set, LinkedHashSet<int>>::value;
278 Set set; 278 Set set;
279 set.add(-1); 279 set.insert(-1);
280 set.add(0); 280 set.insert(0);
281 set.add(1); 281 set.insert(1);
282 set.add(2); 282 set.insert(2);
283 283
284 typename Set::iterator it = set.addReturnIterator(3); 284 typename Set::iterator it = set.addReturnIterator(3);
285 EXPECT_EQ(3, *it); 285 EXPECT_EQ(3, *it);
286 --it; 286 --it;
287 EXPECT_EQ(2, *it); 287 EXPECT_EQ(2, *it);
288 EXPECT_EQ(5u, set.size()); 288 EXPECT_EQ(5u, set.size());
289 --it; 289 --it;
290 EXPECT_EQ(1, *it); 290 EXPECT_EQ(1, *it);
291 --it; 291 --it;
292 EXPECT_EQ(0, *it); 292 EXPECT_EQ(0, *it);
(...skipping 26 matching lines...) Expand all
319 EXPECT_EQ(4, set.last()); 319 EXPECT_EQ(4, set.last());
320 } 320 }
321 321
322 TYPED_TEST(ListOrLinkedHashSetTest, Swap) { 322 TYPED_TEST(ListOrLinkedHashSetTest, Swap) {
323 using Set = TypeParam; 323 using Set = TypeParam;
324 int num = 10; 324 int num = 10;
325 Set set0; 325 Set set0;
326 Set set1; 326 Set set1;
327 Set set2; 327 Set set2;
328 for (int i = 0; i < num; ++i) { 328 for (int i = 0; i < num; ++i) {
329 set1.add(i + 1); 329 set1.insert(i + 1);
330 set2.add(num - i); 330 set2.insert(num - i);
331 } 331 }
332 332
333 typename Set::iterator it1 = set1.begin(); 333 typename Set::iterator it1 = set1.begin();
334 typename Set::iterator it2 = set2.begin(); 334 typename Set::iterator it2 = set2.begin();
335 for (int i = 0; i < num; ++i, ++it1, ++it2) { 335 for (int i = 0; i < num; ++i, ++it1, ++it2) {
336 EXPECT_EQ(*it1, i + 1); 336 EXPECT_EQ(*it1, i + 1);
337 EXPECT_EQ(*it2, num - i); 337 EXPECT_EQ(*it2, num - i);
338 } 338 }
339 EXPECT_EQ(set0.begin(), set0.end()); 339 EXPECT_EQ(set0.begin(), set0.end());
340 EXPECT_EQ(it1, set1.end()); 340 EXPECT_EQ(it1, set1.end());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 TYPED_TEST_CASE(ListOrLinkedHashSetRefPtrTest, RefPtrSetTypes); 398 TYPED_TEST_CASE(ListOrLinkedHashSetRefPtrTest, RefPtrSetTypes);
399 399
400 TYPED_TEST(ListOrLinkedHashSetRefPtrTest, WithRefPtr) { 400 TYPED_TEST(ListOrLinkedHashSetRefPtrTest, WithRefPtr) {
401 using Set = TypeParam; 401 using Set = TypeParam;
402 bool isDeleted = false; 402 bool isDeleted = false;
403 DummyRefCounted::m_refInvokesCount = 0; 403 DummyRefCounted::m_refInvokesCount = 0;
404 RefPtr<DummyRefCounted> ptr = adoptRef(new DummyRefCounted(isDeleted)); 404 RefPtr<DummyRefCounted> ptr = adoptRef(new DummyRefCounted(isDeleted));
405 EXPECT_EQ(0, DummyRefCounted::m_refInvokesCount); 405 EXPECT_EQ(0, DummyRefCounted::m_refInvokesCount);
406 406
407 Set set; 407 Set set;
408 set.add(ptr); 408 set.insert(ptr);
409 // Referenced only once (to store a copy in the container). 409 // Referenced only once (to store a copy in the container).
410 EXPECT_EQ(1, DummyRefCounted::m_refInvokesCount); 410 EXPECT_EQ(1, DummyRefCounted::m_refInvokesCount);
411 EXPECT_EQ(ptr, set.first()); 411 EXPECT_EQ(ptr, set.first());
412 EXPECT_EQ(1, DummyRefCounted::m_refInvokesCount); 412 EXPECT_EQ(1, DummyRefCounted::m_refInvokesCount);
413 413
414 DummyRefCounted* rawPtr = ptr.get(); 414 DummyRefCounted* rawPtr = ptr.get();
415 415
416 EXPECT_TRUE(set.contains(ptr)); 416 EXPECT_TRUE(set.contains(ptr));
417 EXPECT_TRUE(set.contains(rawPtr)); 417 EXPECT_TRUE(set.contains(rawPtr));
418 EXPECT_EQ(1, DummyRefCounted::m_refInvokesCount); 418 EXPECT_EQ(1, DummyRefCounted::m_refInvokesCount);
(...skipping 10 matching lines...) Expand all
429 429
430 TYPED_TEST(ListOrLinkedHashSetRefPtrTest, ExerciseValuePeekInType) { 430 TYPED_TEST(ListOrLinkedHashSetRefPtrTest, ExerciseValuePeekInType) {
431 using Set = TypeParam; 431 using Set = TypeParam;
432 Set set; 432 Set set;
433 bool isDeleted = false; 433 bool isDeleted = false;
434 bool isDeleted2 = false; 434 bool isDeleted2 = false;
435 435
436 RefPtr<DummyRefCounted> ptr = adoptRef(new DummyRefCounted(isDeleted)); 436 RefPtr<DummyRefCounted> ptr = adoptRef(new DummyRefCounted(isDeleted));
437 RefPtr<DummyRefCounted> ptr2 = adoptRef(new DummyRefCounted(isDeleted2)); 437 RefPtr<DummyRefCounted> ptr2 = adoptRef(new DummyRefCounted(isDeleted2));
438 438
439 typename Set::AddResult addResult = set.add(ptr); 439 typename Set::AddResult addResult = set.insert(ptr);
440 EXPECT_TRUE(addResult.isNewEntry); 440 EXPECT_TRUE(addResult.isNewEntry);
441 set.find(ptr); 441 set.find(ptr);
442 const Set& constSet(set); 442 const Set& constSet(set);
443 constSet.find(ptr); 443 constSet.find(ptr);
444 EXPECT_TRUE(set.contains(ptr)); 444 EXPECT_TRUE(set.contains(ptr));
445 typename Set::iterator it = set.addReturnIterator(ptr); 445 typename Set::iterator it = set.addReturnIterator(ptr);
446 set.appendOrMoveToLast(ptr); 446 set.appendOrMoveToLast(ptr);
447 set.prependOrMoveToFirst(ptr); 447 set.prependOrMoveToFirst(ptr);
448 set.insertBefore(ptr, ptr); 448 set.insertBefore(ptr, ptr);
449 set.insertBefore(it, ptr); 449 set.insertBefore(it, ptr);
450 EXPECT_EQ(1u, set.size()); 450 EXPECT_EQ(1u, set.size());
451 set.add(ptr2); 451 set.insert(ptr2);
452 ptr2.clear(); 452 ptr2.clear();
453 set.remove(ptr); 453 set.remove(ptr);
454 454
455 EXPECT_FALSE(isDeleted); 455 EXPECT_FALSE(isDeleted);
456 ptr.clear(); 456 ptr.clear();
457 EXPECT_TRUE(isDeleted); 457 EXPECT_TRUE(isDeleted);
458 458
459 EXPECT_FALSE(isDeleted2); 459 EXPECT_FALSE(isDeleted2);
460 set.removeFirst(); 460 set.removeFirst();
461 EXPECT_TRUE(isDeleted2); 461 EXPECT_TRUE(isDeleted2);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 502
503 using TranslatorSetTypes = 503 using TranslatorSetTypes =
504 ::testing::Types<ListHashSet<Complicated, 256, ComplicatedHashFunctions>, 504 ::testing::Types<ListHashSet<Complicated, 256, ComplicatedHashFunctions>,
505 ListHashSet<Complicated, 1, ComplicatedHashFunctions>, 505 ListHashSet<Complicated, 1, ComplicatedHashFunctions>,
506 LinkedHashSet<Complicated, ComplicatedHashFunctions>>; 506 LinkedHashSet<Complicated, ComplicatedHashFunctions>>;
507 TYPED_TEST_CASE(ListOrLinkedHashSetTranslatorTest, TranslatorSetTypes); 507 TYPED_TEST_CASE(ListOrLinkedHashSetTranslatorTest, TranslatorSetTypes);
508 508
509 TYPED_TEST(ListOrLinkedHashSetTranslatorTest, ComplexityTranslator) { 509 TYPED_TEST(ListOrLinkedHashSetTranslatorTest, ComplexityTranslator) {
510 using Set = TypeParam; 510 using Set = TypeParam;
511 Set set; 511 Set set;
512 set.add(Complicated(42)); 512 set.insert(Complicated(42));
513 int baseLine = Complicated::s_objectsConstructed; 513 int baseLine = Complicated::s_objectsConstructed;
514 514
515 typename Set::iterator it = 515 typename Set::iterator it =
516 set.template find<ComplexityTranslator>(Simple(42)); 516 set.template find<ComplexityTranslator>(Simple(42));
517 EXPECT_NE(it, set.end()); 517 EXPECT_NE(it, set.end());
518 EXPECT_EQ(baseLine, Complicated::s_objectsConstructed); 518 EXPECT_EQ(baseLine, Complicated::s_objectsConstructed);
519 519
520 it = set.template find<ComplexityTranslator>(Simple(103)); 520 it = set.template find<ComplexityTranslator>(Simple(103));
521 EXPECT_EQ(it, set.end()); 521 EXPECT_EQ(it, set.end());
522 EXPECT_EQ(baseLine, Complicated::s_objectsConstructed); 522 EXPECT_EQ(baseLine, Complicated::s_objectsConstructed);
(...skipping 21 matching lines...) Expand all
544 TEST(ListHashSetTest, WithOwnPtr) { 544 TEST(ListHashSetTest, WithOwnPtr) {
545 bool deleted1 = false, deleted2 = false; 545 bool deleted1 = false, deleted2 = false;
546 546
547 typedef ListHashSet<std::unique_ptr<Dummy>> OwnPtrSet; 547 typedef ListHashSet<std::unique_ptr<Dummy>> OwnPtrSet;
548 OwnPtrSet set; 548 OwnPtrSet set;
549 549
550 Dummy* ptr1 = new Dummy(deleted1); 550 Dummy* ptr1 = new Dummy(deleted1);
551 { 551 {
552 // AddResult in a separate scope to avoid assertion hit, 552 // AddResult in a separate scope to avoid assertion hit,
553 // since we modify the container further. 553 // since we modify the container further.
554 OwnPtrSet::AddResult res1 = set.add(WTF::wrapUnique(ptr1)); 554 OwnPtrSet::AddResult res1 = set.insert(WTF::wrapUnique(ptr1));
555 EXPECT_EQ(res1.storedValue->get(), ptr1); 555 EXPECT_EQ(res1.storedValue->get(), ptr1);
556 } 556 }
557 557
558 EXPECT_FALSE(deleted1); 558 EXPECT_FALSE(deleted1);
559 EXPECT_EQ(1UL, set.size()); 559 EXPECT_EQ(1UL, set.size());
560 OwnPtrSet::iterator it1 = set.find(ptr1); 560 OwnPtrSet::iterator it1 = set.find(ptr1);
561 EXPECT_NE(set.end(), it1); 561 EXPECT_NE(set.end(), it1);
562 EXPECT_EQ(ptr1, (*it1).get()); 562 EXPECT_EQ(ptr1, (*it1).get());
563 563
564 Dummy* ptr2 = new Dummy(deleted2); 564 Dummy* ptr2 = new Dummy(deleted2);
565 { 565 {
566 OwnPtrSet::AddResult res2 = set.add(WTF::wrapUnique(ptr2)); 566 OwnPtrSet::AddResult res2 = set.insert(WTF::wrapUnique(ptr2));
567 EXPECT_EQ(res2.storedValue->get(), ptr2); 567 EXPECT_EQ(res2.storedValue->get(), ptr2);
568 } 568 }
569 569
570 EXPECT_FALSE(deleted2); 570 EXPECT_FALSE(deleted2);
571 EXPECT_EQ(2UL, set.size()); 571 EXPECT_EQ(2UL, set.size());
572 OwnPtrSet::iterator it2 = set.find(ptr2); 572 OwnPtrSet::iterator it2 = set.find(ptr2);
573 EXPECT_NE(set.end(), it2); 573 EXPECT_NE(set.end(), it2);
574 EXPECT_EQ(ptr2, (*it2).get()); 574 EXPECT_EQ(ptr2, (*it2).get());
575 575
576 set.remove(ptr1); 576 set.remove(ptr1);
577 EXPECT_TRUE(deleted1); 577 EXPECT_TRUE(deleted1);
578 578
579 set.clear(); 579 set.clear();
580 EXPECT_TRUE(deleted2); 580 EXPECT_TRUE(deleted2);
581 EXPECT_TRUE(set.isEmpty()); 581 EXPECT_TRUE(set.isEmpty());
582 582
583 deleted1 = false; 583 deleted1 = false;
584 deleted2 = false; 584 deleted2 = false;
585 { 585 {
586 OwnPtrSet set; 586 OwnPtrSet set;
587 set.add(WTF::makeUnique<Dummy>(deleted1)); 587 set.insert(WTF::makeUnique<Dummy>(deleted1));
588 set.add(WTF::makeUnique<Dummy>(deleted2)); 588 set.insert(WTF::makeUnique<Dummy>(deleted2));
589 } 589 }
590 EXPECT_TRUE(deleted1); 590 EXPECT_TRUE(deleted1);
591 EXPECT_TRUE(deleted2); 591 EXPECT_TRUE(deleted2);
592 592
593 deleted1 = false; 593 deleted1 = false;
594 deleted2 = false; 594 deleted2 = false;
595 std::unique_ptr<Dummy> ownPtr1; 595 std::unique_ptr<Dummy> ownPtr1;
596 std::unique_ptr<Dummy> ownPtr2; 596 std::unique_ptr<Dummy> ownPtr2;
597 ptr1 = new Dummy(deleted1); 597 ptr1 = new Dummy(deleted1);
598 ptr2 = new Dummy(deleted2); 598 ptr2 = new Dummy(deleted2);
599 { 599 {
600 OwnPtrSet set; 600 OwnPtrSet set;
601 set.add(WTF::wrapUnique(ptr1)); 601 set.insert(WTF::wrapUnique(ptr1));
602 set.add(WTF::wrapUnique(ptr2)); 602 set.insert(WTF::wrapUnique(ptr2));
603 ownPtr1 = set.takeFirst(); 603 ownPtr1 = set.takeFirst();
604 EXPECT_EQ(1UL, set.size()); 604 EXPECT_EQ(1UL, set.size());
605 ownPtr2 = set.take(ptr2); 605 ownPtr2 = set.take(ptr2);
606 EXPECT_TRUE(set.isEmpty()); 606 EXPECT_TRUE(set.isEmpty());
607 } 607 }
608 EXPECT_FALSE(deleted1); 608 EXPECT_FALSE(deleted1);
609 EXPECT_FALSE(deleted2); 609 EXPECT_FALSE(deleted2);
610 610
611 EXPECT_EQ(ptr1, ownPtr1.get()); 611 EXPECT_EQ(ptr1, ownPtr1.get());
612 EXPECT_EQ(ptr2, ownPtr2.get()); 612 EXPECT_EQ(ptr2, ownPtr2.get());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 using CountCopySetTypes = ::testing::Types<ListHashSet<CountCopy>, 667 using CountCopySetTypes = ::testing::Types<ListHashSet<CountCopy>,
668 ListHashSet<CountCopy, 1>, 668 ListHashSet<CountCopy, 1>,
669 LinkedHashSet<CountCopy>>; 669 LinkedHashSet<CountCopy>>;
670 TYPED_TEST_CASE(ListOrLinkedHashSetCountCopyTest, CountCopySetTypes); 670 TYPED_TEST_CASE(ListOrLinkedHashSetCountCopyTest, CountCopySetTypes);
671 671
672 TYPED_TEST(ListOrLinkedHashSetCountCopyTest, 672 TYPED_TEST(ListOrLinkedHashSetCountCopyTest,
673 MoveConstructionShouldNotMakeCopy) { 673 MoveConstructionShouldNotMakeCopy) {
674 using Set = TypeParam; 674 using Set = TypeParam;
675 Set set; 675 Set set;
676 int counter = 0; 676 int counter = 0;
677 set.add(CountCopy(&counter)); 677 set.insert(CountCopy(&counter));
678 678
679 counter = 0; 679 counter = 0;
680 Set other(std::move(set)); 680 Set other(std::move(set));
681 EXPECT_EQ(0, counter); 681 EXPECT_EQ(0, counter);
682 } 682 }
683 683
684 TYPED_TEST(ListOrLinkedHashSetCountCopyTest, MoveAssignmentShouldNotMakeACopy) { 684 TYPED_TEST(ListOrLinkedHashSetCountCopyTest, MoveAssignmentShouldNotMakeACopy) {
685 using Set = TypeParam; 685 using Set = TypeParam;
686 Set set; 686 Set set;
687 int counter = 0; 687 int counter = 0;
688 set.add(CountCopy(&counter)); 688 set.insert(CountCopy(&counter));
689 689
690 Set other(set); 690 Set other(set);
691 counter = 0; 691 counter = 0;
692 set = std::move(other); 692 set = std::move(other);
693 EXPECT_EQ(0, counter); 693 EXPECT_EQ(0, counter);
694 } 694 }
695 695
696 class MoveOnly { 696 class MoveOnly {
697 public: 697 public:
698 // kEmpty and kDeleted have special meanings when MoveOnly is used as the key 698 // kEmpty and kDeleted have special meanings when MoveOnly is used as the key
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 using MoveOnlySetTypes = ::testing::Types<ListHashSet<MoveOnly>, 749 using MoveOnlySetTypes = ::testing::Types<ListHashSet<MoveOnly>,
750 ListHashSet<MoveOnly, 1>, 750 ListHashSet<MoveOnly, 1>,
751 LinkedHashSet<MoveOnly>>; 751 LinkedHashSet<MoveOnly>>;
752 TYPED_TEST_CASE(ListOrLinkedHashSetMoveOnlyTest, MoveOnlySetTypes); 752 TYPED_TEST_CASE(ListOrLinkedHashSetMoveOnlyTest, MoveOnlySetTypes);
753 753
754 TYPED_TEST(ListOrLinkedHashSetMoveOnlyTest, MoveOnlyValue) { 754 TYPED_TEST(ListOrLinkedHashSetMoveOnlyTest, MoveOnlyValue) {
755 using Set = TypeParam; 755 using Set = TypeParam;
756 using AddResult = typename Set::AddResult; 756 using AddResult = typename Set::AddResult;
757 Set set; 757 Set set;
758 { 758 {
759 AddResult addResult = set.add(MoveOnly(1, 1)); 759 AddResult addResult = set.insert(MoveOnly(1, 1));
760 EXPECT_TRUE(addResult.isNewEntry); 760 EXPECT_TRUE(addResult.isNewEntry);
761 EXPECT_EQ(1, addResult.storedValue->value()); 761 EXPECT_EQ(1, addResult.storedValue->value());
762 EXPECT_EQ(1, addResult.storedValue->id()); 762 EXPECT_EQ(1, addResult.storedValue->id());
763 } 763 }
764 { 764 {
765 AddResult addResult = set.add(MoveOnly(1, 111)); 765 AddResult addResult = set.insert(MoveOnly(1, 111));
766 EXPECT_FALSE(addResult.isNewEntry); 766 EXPECT_FALSE(addResult.isNewEntry);
767 EXPECT_EQ(1, addResult.storedValue->value()); 767 EXPECT_EQ(1, addResult.storedValue->value());
768 EXPECT_EQ(1, addResult.storedValue->id()); 768 EXPECT_EQ(1, addResult.storedValue->id());
769 } 769 }
770 auto iter = set.find(MoveOnly(1)); 770 auto iter = set.find(MoveOnly(1));
771 ASSERT_TRUE(iter != set.end()); 771 ASSERT_TRUE(iter != set.end());
772 EXPECT_EQ(1, iter->value()); 772 EXPECT_EQ(1, iter->value());
773 EXPECT_EQ(1, iter->id()); 773 EXPECT_EQ(1, iter->id());
774 774
775 iter = set.find(MoveOnly(2)); 775 iter = set.find(MoveOnly(2));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 813
814 // ... but they don't have any pass-out (like take()) methods. 814 // ... but they don't have any pass-out (like take()) methods.
815 815
816 set.remove(MoveOnly(3)); 816 set.remove(MoveOnly(3));
817 set.clear(); 817 set.clear();
818 } 818 }
819 819
820 } // anonymous namespace 820 } // anonymous namespace
821 821
822 } // namespace WTF 822 } // namespace WTF
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/ListHashSet.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698