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

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

Issue 11783009: Big merge from experimental to bleeding edge. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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 | « tests/corelib/reg_exp_start_end_test.dart ('k') | tests/corelib/set_test.dart » ('j') | 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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 class FixedHashCode { 5 class FixedHashCode {
6 final int _hashCode; 6 final int _hashCode;
7 const FixedHashCode(this._hashCode); 7 const FixedHashCode(this._hashCode);
8 int get hashCode { return _hashCode; } 8 int get hashCode { return _hashCode; }
9 } 9 }
10 10
11 class SetIteratorTest { 11 class SetIteratorTest {
12 static testMain() { 12 static testMain() {
13 testSmallSet(); 13 testSmallSet();
14 testLargeSet(); 14 testLargeSet();
15 testEmptySet(); 15 testEmptySet();
16 testSetWithDeletedEntries(); 16 testSetWithDeletedEntries();
17 testBug5116829(); 17 testBug5116829();
18 testDifferentSizes(); 18 testDifferentSizes();
19 testDifferentHashCodes(); 19 testDifferentHashCodes();
20 } 20 }
21 21
22 static void testThrows(Iterator<int> it) {
23 Expect.equals(false, it.hasNext);
24 var exception = null;
25 try {
26 it.next();
27 } on StateError catch (e) {
28 exception = e;
29 }
30 Expect.equals(true, exception != null);
31 }
32
33 static int sum(int expected, Iterator<int> it) { 22 static int sum(int expected, Iterator<int> it) {
34 int count = 0; 23 int count = 0;
35 while (it.hasNext) { 24 while (it.moveNext()) {
36 count += it.next(); 25 count += it.current;
37 } 26 }
38 Expect.equals(expected, count); 27 Expect.equals(expected, count);
39 } 28 }
40 29
41 static void testSmallSet() { 30 static void testSmallSet() {
42 Set<int> set = new Set<int>(); 31 Set<int> set = new Set<int>();
43 set.add(1); 32 set.add(1);
44 set.add(2); 33 set.add(2);
45 set.add(3); 34 set.add(3);
46 35
47 Iterator<int> it = set.iterator(); 36 Iterator<int> it = set.iterator;
48 Expect.equals(true, it.hasNext);
49 sum(6, it); 37 sum(6, it);
50 testThrows(it); 38 Expect.isFalse(it.moveNext());
39 Expect.isNull(it.current);
51 } 40 }
52 41
53 static void testLargeSet() { 42 static void testLargeSet() {
54 Set<int> set = new Set<int>(); 43 Set<int> set = new Set<int>();
55 int count = 0; 44 int count = 0;
56 for (int i = 0; i < 100; i++) { 45 for (int i = 0; i < 100; i++) {
57 count += i; 46 count += i;
58 set.add(i); 47 set.add(i);
59 } 48 }
60 Iterator<int> it = set.iterator(); 49 Iterator<int> it = set.iterator;
61 Expect.equals(true, it.hasNext);
62 sum(count, it); 50 sum(count, it);
63 testThrows(it); 51 Expect.isFalse(it.moveNext());
52 Expect.isNull(it.current);
64 } 53 }
65 54
66 static void testEmptySet() { 55 static void testEmptySet() {
67 Set<int> set = new Set<int>(); 56 Set<int> set = new Set<int>();
68 Iterator<int> it = set.iterator(); 57 Iterator<int> it = set.iterator;
69 Expect.equals(false, it.hasNext);
70 sum(0, it); 58 sum(0, it);
71 testThrows(it); 59 Expect.isFalse(it.moveNext());
60 Expect.isNull(it.current);
72 } 61 }
73 62
74 static void testSetWithDeletedEntries() { 63 static void testSetWithDeletedEntries() {
75 Set<int> set = new Set<int>(); 64 Set<int> set = new Set<int>();
76 for (int i = 0; i < 100; i++) { 65 for (int i = 0; i < 100; i++) {
77 set.add(i); 66 set.add(i);
78 } 67 }
79 for (int i = 0; i < 100; i++) { 68 for (int i = 0; i < 100; i++) {
80 set.remove(i); 69 set.remove(i);
81 } 70 }
82 Iterator<int> it = set.iterator(); 71 Iterator<int> it = set.iterator;
83 Expect.equals(false, it.hasNext); 72 Expect.isFalse(it.moveNext());
73 it = set.iterator;
84 sum(0, it); 74 sum(0, it);
85 testThrows(it); 75 Expect.isFalse(it.moveNext());
76 Expect.isNull(it.current);
86 77
87 int count = 0; 78 int count = 0;
88 for (int i = 0; i < 100; i++) { 79 for (int i = 0; i < 100; i++) {
89 set.add(i); 80 set.add(i);
90 if (i % 2 == 0) set.remove(i); 81 if (i % 2 == 0) set.remove(i);
91 else count += i; 82 else count += i;
92 } 83 }
93 it = set.iterator(); 84 it = set.iterator;
94 Expect.equals(true, it.hasNext);
95 sum(count, it); 85 sum(count, it);
96 testThrows(it); 86 Expect.isFalse(it.moveNext());
87 Expect.isNull(it.current);
97 } 88 }
98 89
99 static void testBug5116829() { 90 static void testBug5116829() {
100 // During iteration we skipped slot 0 of the hashset's key list. "A" was 91 // During iteration we skipped slot 0 of the hashset's key list. "A" was
101 // hashed to slot 0 and therefore triggered the bug. 92 // hashed to slot 0 and therefore triggered the bug.
102 Set<String> mystrs = new Set<String>(); 93 Set<String> mystrs = new Set<String>();
103 mystrs.add("A"); 94 mystrs.add("A");
104 int seen = 0; 95 int seen = 0;
105 for (String elt in mystrs) { 96 for (String elt in mystrs) {
106 seen++; 97 seen++;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 Expect.equals(true, identical(x, element)); 131 Expect.equals(true, identical(x, element));
141 } 132 }
142 Expect.equals(true, foundIt); 133 Expect.equals(true, foundIt);
143 } 134 }
144 } 135 }
145 } 136 }
146 137
147 main() { 138 main() {
148 SetIteratorTest.testMain(); 139 SetIteratorTest.testMain();
149 } 140 }
OLDNEW
« no previous file with comments | « tests/corelib/reg_exp_start_end_test.dart ('k') | tests/corelib/set_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698