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

Side by Side Diff: tests/corelib/list_iterators_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/list_index_of_test.dart ('k') | tests/corelib/list_last_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 ListIteratorsTest { 5 class ListIteratorsTest {
6 static void checkListIterator(List a) { 6 static void checkListIterator(List a) {
7 Iterator it = a.iterator(); 7 Iterator it = a.iterator;
8 Expect.equals(false, it.hasNext == a.isEmpty);
9 for (int i = 0; i < a.length; i++) { 8 for (int i = 0; i < a.length; i++) {
10 Expect.equals(true, it.hasNext); 9 Expect.isTrue(it.moveNext());
11 var elem = it.next(); 10 var elem = it.current;
11 Expect.equals(a[i], elem);
12 } 12 }
13 Expect.equals(false, it.hasNext); 13 Expect.isFalse(it.moveNext());
14 bool exceptionCaught = false; 14 Expect.isNull(it.current);
15 try {
16 var eleme = it.next();
17 } on StateError catch (e) {
18 exceptionCaught = true;
19 }
20 Expect.equals(true, exceptionCaught);
21 } 15 }
22 16
23 static testMain() { 17 static testMain() {
24 checkListIterator([]); 18 checkListIterator([]);
25 checkListIterator([1, 2]); 19 checkListIterator([1, 2]);
26 checkListIterator(new List(0)); 20 checkListIterator(new List.fixedLength(0));
27 checkListIterator(new List(10)); 21 checkListIterator(new List.fixedLength(10));
28 checkListIterator(new List()); 22 checkListIterator(new List());
29 List g = new List(); 23 List g = new List();
30 g.addAll([1, 2]); 24 g.addAll([1, 2, 3]);
31 checkListIterator(g); 25 checkListIterator(g);
32 26
33 Iterator it = g.iterator(); 27 // This is mostly undefined behavior.
34 Expect.equals(true, it.hasNext); 28 Iterator it = g.iterator;
29 Expect.isTrue(it.moveNext());
35 g.removeLast(); 30 g.removeLast();
36 Expect.equals(true, it.hasNext); 31 Expect.equals(1, it.current);
32 Expect.isTrue(it.moveNext());
33 g[1] = 49;
34 // The iterator keeps the last value.
35 Expect.equals(2, it.current);
37 g.removeLast(); 36 g.removeLast();
38 Expect.equals(false, it.hasNext); 37 // The iterator keeps the last value.
38 Expect.equals(2, it.current);
39 Expect.isFalse(it.moveNext());
40 Expect.isNull(it.current);
39 41
42 g.clear();
40 g.addAll([10, 20]); 43 g.addAll([10, 20]);
41 int sum = 0; 44 int sum = 0;
42 for (var elem in g) { 45 for (var elem in g) {
43 sum += elem; 46 sum += elem;
44 // Iterator must realize that g has no more elements. 47 // Iterator must realize that g has no more elements.
45 g.removeLast(); 48 g.removeLast();
46 } 49 }
47 Expect.equals(10, sum); 50 Expect.equals(10, sum);
48 } 51 }
49 } 52 }
50 53
51 main() { 54 main() {
52 ListIteratorsTest.testMain(); 55 ListIteratorsTest.testMain();
53 } 56 }
OLDNEW
« no previous file with comments | « tests/corelib/list_index_of_test.dart ('k') | tests/corelib/list_last_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698