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

Side by Side Diff: tests/corelib/hash_set_test.dart

Issue 26832002: Add Set.lookup method to get the instance in the set. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « sdk/lib/html/html_common/css_class_set.dart ('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 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // Tests of hash set behavior, with focus in iteration and concurrent 5 // Tests of hash set behavior, with focus in iteration and concurrent
6 // modification errors. 6 // modification errors.
7 7
8 library hash_map2_test; 8 library hash_map2_test;
9 import "package:expect/expect.dart"; 9 import "package:expect/expect.dart";
10 import 'dart:collection'; 10 import 'dart:collection';
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 Expect.equals(2, set.length); 211 Expect.equals(2, set.length);
212 Expect.isTrue(set.contains(1)); 212 Expect.isTrue(set.contains(1));
213 Expect.isFalse(set.contains(2)); 213 Expect.isFalse(set.contains(2));
214 Expect.isTrue(set.contains(3)); 214 Expect.isTrue(set.contains(3));
215 set.retainWhere((each) => each == 3); 215 set.retainWhere((each) => each == 3);
216 Expect.equals(1, set.length); 216 Expect.equals(1, set.length);
217 Expect.isFalse(set.contains(1)); 217 Expect.isFalse(set.contains(1));
218 Expect.isFalse(set.contains(2)); 218 Expect.isFalse(set.contains(2));
219 Expect.isTrue(set.contains(3)); 219 Expect.isTrue(set.contains(3));
220 } 220 }
221
222 { // Test lookup
223 Set set = newSet();
224 var m1a = new Mutable(1);
225 var m1b = new Mutable(1);
226 var m2a = new Mutable(2);
227 var m2b = new Mutable(2);
228 Expect.isNull(set.lookup(m1a));
229 Expect.isNull(set.lookup(m1b));
230 set.add(m1a);
231 Expect.identical(m1a, set.lookup(m1a));
232 Expect.identical(m1a, set.lookup(m1b));
233
234 Expect.isNull(set.lookup(m2a));
235 Expect.isNull(set.lookup(m2b));
236 set.add(m2a);
237 Expect.identical(m2a, set.lookup(m2a));
238 Expect.identical(m2a, set.lookup(m2b));
239
240 set.add(m2b); // Adding doesn't change element.
241 Expect.identical(m2a, set.lookup(m2a));
242 Expect.identical(m2a, set.lookup(m2b));
243
244 set.remove(m1a);
245 set.add(m1b);
246 Expect.identical(m1b, set.lookup(m1a));
247 Expect.identical(m1b, set.lookup(m1b));
248
249 set.add(1);
250 Expect.identical(1, set.lookup(1.0));
251 set.add(-0.0);
252 Expect.identical(-0.0, set.lookup(0.0));
253 }
221 } 254 }
222 255
223 256
224 void testIdentitySet(Set create()) { 257 void testIdentitySet(Set create()) {
225 Set set = create(); 258 Set set = create();
226 set.add(1); 259 set.add(1);
227 set.add(2); 260 set.add(2);
228 set.add(1); // Integers are identical if equal. 261 set.add(1); // Integers are identical if equal.
229 Expect.equals(2, set.length); 262 Expect.equals(2, set.length);
230 var complex = 4; 263 var complex = 4;
(...skipping 21 matching lines...) Expand all
252 Expect.equals(4, set.length); 285 Expect.equals(4, set.length);
253 Expect.equals(3, m3.hashCode); 286 Expect.equals(3, m3.hashCode);
254 m3.id = 1; 287 m3.id = 1;
255 Expect.equals(1, m3.hashCode); 288 Expect.equals(1, m3.hashCode);
256 // Changing hashCode doesn't affect lookup. 289 // Changing hashCode doesn't affect lookup.
257 Expect.isTrue(set.contains(m3)); 290 Expect.isTrue(set.contains(m3));
258 Expect.isTrue(set.contains(m1)); 291 Expect.isTrue(set.contains(m1));
259 set.remove(m3); 292 set.remove(m3);
260 Expect.isFalse(set.contains(m3)); 293 Expect.isFalse(set.contains(m3));
261 Expect.isTrue(set.contains(m1)); 294 Expect.isTrue(set.contains(m1));
295
296 Expect.identical(m1, set.lookup(m1));
297 Expect.identical(null, set.lookup(m3));
262 } 298 }
263 299
264 300
265 void main() { 301 void main() {
266 testSet(() => new Set(), (m) => new Set.from(m)); 302 testSet(() => new Set(), (m) => new Set.from(m));
267 testSet(() => new HashSet(), (m) => new HashSet.from(m)); 303 testSet(() => new HashSet(), (m) => new HashSet.from(m));
268 testSet(() => new LinkedHashSet(), (m) => new LinkedHashSet.from(m)); 304 testSet(() => new LinkedHashSet(), (m) => new LinkedHashSet.from(m));
269 testIdentitySet(() => new Set.identity()); 305 testIdentitySet(() => new Set.identity());
270 testIdentitySet(() => new HashSet.identity()); 306 testIdentitySet(() => new HashSet.identity());
271 testIdentitySet(() => new LinkedHashSet.identity()); 307 testIdentitySet(() => new LinkedHashSet.identity());
(...skipping 14 matching lines...) Expand all
286 // Can't make a bad compareTo that isn't invalid. 322 // Can't make a bad compareTo that isn't invalid.
287 int compareTo(BadHashCode other) => id - other.id; 323 int compareTo(BadHashCode other) => id - other.id;
288 } 324 }
289 325
290 class Mutable { 326 class Mutable {
291 int id; 327 int id;
292 Mutable(this.id); 328 Mutable(this.id);
293 int get hashCode => id; 329 int get hashCode => id;
294 bool operator==(other) => other is Mutable && id == other.id; 330 bool operator==(other) => other is Mutable && id == other.id;
295 } 331 }
OLDNEW
« no previous file with comments | « sdk/lib/html/html_common/css_class_set.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698