blob: 6f29061fb0fb28e9535daf5284e6e2c4c975cf45 [file] [log] [blame]
// 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();
}