blob: 488192ee40c790d908dc7797cde373aad330f133 [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 QueueIteratorTest {
static testMain() {
testSmallQueue();
testLargeQueue();
testEmptyQueue();
}
static void testThrows(Iterator<int> it) {
Expect.equals(false, it.hasNext());
var exception = null;
try {
it.next();
} on NoMoreElementsException catch (e) {
exception = e;
}
Expect.equals(true, exception != null);
}
static int sum(int expected, Iterator<int> it) {
int count = 0;
while (it.hasNext()) {
count += it.next();
}
Expect.equals(expected, count);
}
static void testSmallQueue() {
Queue<int> queue = new Queue<int>();
queue.addLast(1);
queue.addLast(2);
queue.addLast(3);
Iterator<int> it = queue.iterator();
Expect.equals(true, it.hasNext());
sum(6, it);
testThrows(it);
}
static void testLargeQueue() {
Queue<int> queue = new Queue<int>();
int count = 0;
for (int i = 0; i < 100; i++) {
count += i;
queue.addLast(i);
}
Iterator<int> it = queue.iterator();
Expect.equals(true, it.hasNext());
sum(count, it);
testThrows(it);
}
static void testEmptyQueue() {
Queue<int> queue = new Queue<int>();
Iterator<int> it = queue.iterator();
Expect.equals(false, it.hasNext());
sum(0, it);
testThrows(it);
}
}
main() {
QueueIteratorTest.testMain();
}