| Index: test/codegen/corelib/list_iterators_test.dart
|
| diff --git a/test/codegen/corelib/list_iterators_test.dart b/test/codegen/corelib/list_iterators_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..092082e4e160d5f12bfba2540e35e71053a24729
|
| --- /dev/null
|
| +++ b/test/codegen/corelib/list_iterators_test.dart
|
| @@ -0,0 +1,50 @@
|
| +// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +import "package:expect/expect.dart";
|
| +
|
| +class ListIteratorsTest {
|
| + static void checkListIterator(List a) {
|
| + Iterator it = a.iterator;
|
| + Expect.isNull(it.current);
|
| + for (int i = 0; i < a.length; i++) {
|
| + Expect.isTrue(it.moveNext());
|
| + var elem = it.current;
|
| + Expect.equals(a[i], elem);
|
| + }
|
| + Expect.isFalse(it.moveNext());
|
| + Expect.isNull(it.current);
|
| + }
|
| +
|
| + static testMain() {
|
| + checkListIterator([]);
|
| + checkListIterator([1, 2]);
|
| + checkListIterator(new List(0));
|
| + checkListIterator(new List(10));
|
| + checkListIterator(new List());
|
| + List g = new List();
|
| + g.addAll([1, 2, 3]);
|
| + checkListIterator(g);
|
| +
|
| + // This is mostly undefined behavior.
|
| + Iterator it = g.iterator;
|
| + Expect.isTrue(it.moveNext());
|
| + Expect.equals(1, it.current);
|
| + Expect.isTrue(it.moveNext());
|
| + g[1] = 49;
|
| + // The iterator keeps the last value.
|
| + Expect.equals(2, it.current);
|
| + Expect.isTrue(it.moveNext());
|
| + g.removeLast();
|
| + // The iterator keeps the last value.
|
| + Expect.equals(3, it.current);
|
| + Expect.throws(it.moveNext, (e) => e is ConcurrentModificationError);
|
| + // No progress when throwing.
|
| + Expect.equals(3, it.current);
|
| + }
|
| +}
|
| +
|
| +main() {
|
| + ListIteratorsTest.testMain();
|
| +}
|
|
|