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

Unified Diff: tests/corelib/queue_test.dart

Issue 12217061: Add ListQueue and make it the default Queue. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
« sdk/lib/collection/queue.dart ('K') | « sdk/lib/collection/queue.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/corelib/queue_test.dart
diff --git a/tests/corelib/queue_test.dart b/tests/corelib/queue_test.dart
index bc0e3813caa7355053a872d297ae8be6d10ebfb8..ab2f9da56f39cad6ea768016e6d95d1896cd1056 100644
--- a/tests/corelib/queue_test.dart
+++ b/tests/corelib/queue_test.dart
@@ -6,10 +6,13 @@ library queue.test;
import 'dart:collection';
-class QueueTest {
+abstract class QueueTest {
- static testMain() {
- Queue queue = new Queue();
+ Queue newQueue([int capacity]);
+ Queue newQueueFrom(Iterable iterable);
+
+ void testMain() {
+ Queue queue = newQueue();
checkQueue(queue, 0, 0);
queue.addFirst(1);
@@ -43,14 +46,14 @@ class QueueTest {
return (value == 10);
}
- Queue mapped = new Queue.from(queue.map(mapTest));
+ Queue mapped = newQueueFrom(queue.map(mapTest));
checkQueue(mapped, 3, 111);
checkQueue(queue, 3, 1110);
Expect.equals(1, mapped.removeFirst());
Expect.equals(100, mapped.removeLast());
Expect.equals(10, mapped.removeFirst());
- Queue other = new Queue.from(queue.where(is10));
+ Queue other = newQueueFrom(queue.where(is10));
checkQueue(other, 1, 10);
Expect.equals(true, queue.any(is10));
@@ -100,13 +103,14 @@ class QueueTest {
return (value > 1);
}
- other = new Queue.from(queue.where(isGreaterThanOne));
+ other = newQueueFrom(queue.where(isGreaterThanOne));
checkQueue(other, 2, 5);
testAddAll();
+ testLarge();
}
- static void checkQueue(Queue queue, int expectedSize, int expectedSum) {
+ void checkQueue(Queue queue, int expectedSize, int expectedSum) {
Expect.equals(expectedSize, queue.length);
int sum = 0;
void sumElements(int value) {
@@ -116,12 +120,12 @@ class QueueTest {
Expect.equals(expectedSum, sum);
}
- static testAddAll() {
+ void testAddAll() {
Set<int> set = new Set<int>.from([1, 2, 4]);
- Queue<int> queue1 = new Queue<int>.from(set);
- Queue<int> queue2 = new Queue<int>();
- Queue<int> queue3 = new Queue<int>();
+ Queue queue1 = newQueueFrom(set);
+ Queue queue2 = newQueue();
+ Queue queue3 = newQueue();
queue2.addAll(set);
queue3.addAll(queue1);
@@ -151,9 +155,9 @@ class QueueTest {
sum = 0;
set = new Set<int>.from([]);
- queue1 = new Queue<int>.from(set);
- queue2 = new Queue<int>();
- queue3 = new Queue<int>();
+ queue1 = newQueueFrom(set);
+ queue2 = newQueue();
+ queue3 = newQueue();
queue2.addAll(set);
queue3.addAll(queue1);
@@ -162,11 +166,85 @@ class QueueTest {
Expect.equals(0, queue1.length);
Expect.equals(0, queue2.length);
Expect.equals(0, queue3.length);
+ }
+
+ void testLarge() {
+ int N = 10000;
+ Set set = new Set();
+
+ Queue queue = newQueue();
+ Expect.isTrue(queue.isEmpty);
+
+ for (int i = 0; i < N; i++) {
+ queue.add(i);
+ set.add(i);
+ }
+ Expect.equals(N, queue.length);
+ Expect.isFalse(queue.isEmpty);
+
+ Iterable skip1 = queue.skip(1);
+ Iterable take1 = queue.take(1);
+ Iterable mapped = queue.map((e) => -e);
+
+ for (int i = 0; i < 500; i++) {
+ Expect.equals(i, take1.first);
+ Expect.equals(i, queue.first);
+ Expect.equals(-i, mapped.first);
+ Expect.equals(i + 1, skip1.first);
+ Expect.equals(i, queue.removeFirst());
+ Expect.equals(i + 1, take1.first);
+ Expect.equals(-i - 1, mapped.first);
+ Expect.equals(N - 1 - i, queue.last);
+ Expect.equals(N - 1 - i, queue.removeLast());
+ }
+ Expect.equals(N - 1000, queue.length);
+ queue.retainAll(set);
+ Expect.equals(N - 1000, queue.length);
+
+ queue.remove(N >> 1);
+ Expect.equals(N - 1001, queue.length);
+
+ queue.removeAll(set);
+ Expect.equals(0, queue.length);
+ Expect.isTrue(queue.isEmpty);
+
+ queue.addAll(set);
+ Expect.equals(N, queue.length);
+ Expect.isFalse(queue.isEmpty);
+
+ // Iterate.
+ for (var element in queue) {
+ Expect.isTrue(set.contains(element));
+ }
+
+ queue.forEach((element) { Expect.isTrue(set.contains(element)); });
+
+ queue.addAll(set);
+ Expect.equals(N * 2, queue.length);
+ Expect.isFalse(queue.isEmpty);
+
+ queue.clear();
+ Expect.equals(0, queue.length);
+ Expect.isTrue(queue.isEmpty);
+ }
+}
+
+class ListQueueTest extends QueueTest {
+ Queue newQueue() => new ListQueue();
+ Queue newQueueFrom(Iterable elements) => new ListQueue.from(elements);
+}
+
+class DoubleLinkedQueueTest extends QueueTest {
+ Queue newQueue() => new DoubleLinkedQueue();
+ Queue newQueueFrom(Iterable elements) => new DoubleLinkedQueue.from(elements);
+
+ void testMain() {
+ super.testMain();
testQueueElements();
}
- static testQueueElements() {
+ void testQueueElements() {
DoubleLinkedQueue<int> queue1 = new DoubleLinkedQueue<int>.from([1, 2, 4]);
DoubleLinkedQueue<int> queue2 = new DoubleLinkedQueue<int>();
queue2.addAll(queue1);
@@ -184,5 +262,7 @@ class QueueTest {
}
main() {
- QueueTest.testMain();
+ new DoubleLinkedQueueTest().testMain();
+ new ListQueueTest().testMain();
}
+
« sdk/lib/collection/queue.dart ('K') | « sdk/lib/collection/queue.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698