| // 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. |
| |
| class ListIteratorsTest { |
| static void checkListIterator(List a) { |
| Iterator it = a.iterator(); |
| Expect.equals(false, it.hasNext == a.isEmpty); |
| for (int i = 0; i < a.length; i++) { |
| Expect.equals(true, it.hasNext); |
| var elem = it.next(); |
| } |
| Expect.equals(false, it.hasNext); |
| bool exceptionCaught = false; |
| try { |
| var eleme = it.next(); |
| } on StateError catch (e) { |
| exceptionCaught = true; |
| } |
| Expect.equals(true, exceptionCaught); |
| } |
| |
| 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]); |
| checkListIterator(g); |
| |
| Iterator it = g.iterator(); |
| Expect.equals(true, it.hasNext); |
| g.removeLast(); |
| Expect.equals(true, it.hasNext); |
| g.removeLast(); |
| Expect.equals(false, it.hasNext); |
| |
| g.addAll([10, 20]); |
| int sum = 0; |
| for (var elem in g) { |
| sum += elem; |
| // Iterator must realize that g has no more elements. |
| g.removeLast(); |
| } |
| Expect.equals(10, sum); |
| } |
| } |
| |
| main() { |
| ListIteratorsTest.testMain(); |
| } |