Index: tests/lib/collection/linked_list_test.dart |
diff --git a/tests/lib/collection/linked_list_test.dart b/tests/lib/collection/linked_list_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b041b598511f8dccbe7df741a481a32ba2311b0b |
--- /dev/null |
+++ b/tests/lib/collection/linked_list_test.dart |
@@ -0,0 +1,126 @@ |
+// Copyright (c) 2013, 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 'dart:collection'; |
+ |
+ |
Lasse Reichstein Nielsen
2013/05/24 08:42:45
import "package:expect/expect.dart";
and use Expec
Anders Johnsen
2013/06/13 11:14:10
Done.
|
+class MyEntry extends LinkedListEntry<MyEntry> { |
+ final int value; |
+ |
+ MyEntry(int this.value); |
+ |
+ String toString() => value.toString(); |
+} |
+ |
+ |
+testInsert() { |
+ // Insert last. |
+ var list = new LinkedList<MyEntry>(); |
+ for (int i = 0; i < 10; i++) { |
+ list.insertLast(new MyEntry(i)); |
+ } |
+ |
+ if (list.length != 10) throw "bad length"; |
+ |
+ int i = 0; |
+ for (var entry in list) { |
+ if (entry.value != i++) throw "bad value"; |
+ } |
+ |
+ if (i != 10) throw "bad length"; |
+ |
+ list.clear(); |
+ |
+ // Insert first. |
+ for (int i = 0; i < 10; i++) { |
+ list.insertFirst(new MyEntry(i)); |
+ } |
+ |
+ if (list.length != 10) throw "bad length"; |
+ |
+ i = 10; |
+ for (var entry in list) { |
+ if (entry.value != --i) throw "bad value"; |
+ } |
+ if (i != 0) throw "bad length"; |
+ |
+ list.clear(); |
+ |
+ // Insert after. |
+ list.insertFirst(new MyEntry(0)); |
+ for (int i = 1; i < 10; i++) { |
+ list.last.insertAfter(new MyEntry(i)); |
+ } |
+ |
+ if (list.length != 10) throw "bad length"; |
+ |
+ i = 0; |
+ for (var entry in list) { |
+ if (entry.value != i++) throw "bad value"; |
+ } |
+ |
+ if (i != 10) throw "bad length"; |
+ |
+ list.clear(); |
+ |
+ // Insert before. |
+ list.insertFirst(new MyEntry(0)); |
+ for (int i = 1; i < 10; i++) { |
+ list.first.insertBefore(new MyEntry(i)); |
+ } |
+ |
+ if (list.length != 10) throw "bad length"; |
+ |
+ i = 10; |
+ for (var entry in list) { |
+ if (entry.value != --i) throw "bad value"; |
+ } |
+ if (i != 0) throw "bad length"; |
+ |
+ list.clear(); |
+} |
+ |
+ |
+testRemove() { |
+ var list = new LinkedList<MyEntry>(); |
+ for (int i = 0; i < 10; i++) { |
+ list.insertLast(new MyEntry(i)); |
+ } |
+ |
+ if (list.length != 10) throw "bad length"; |
+ |
+ list.remove(list.skip(5).first); |
+ |
+ if (list.length != 9) throw "bad length"; |
+ |
+ int i = 0; |
+ for (var entry in list) { |
+ if (i == 5) i++; |
+ if (entry.value != i++) throw "bad value"; |
+ } |
+} |
+ |
+ |
+testBadAdd() { |
+ print("here"); |
+ var list1 = new LinkedList<MyEntry>(); |
+ list1.insertFirst(new MyEntry(0)); |
+ |
+ var list2 = new LinkedList<MyEntry>(); |
+ bool failed = false; |
+ try { |
+ list2.insertFirst(list1.first); |
+ } on StateError catch (e) { |
+ print(e); |
+ failed = true; |
+ } |
+ if (!failed) throw "fail expected"; |
+} |
+ |
Lasse Reichstein Nielsen
2013/05/24 08:42:45
Test concurrent modification throws for all iterat
Anders Johnsen
2013/06/13 11:14:10
Done.
|
+ |
+main() { |
+ testInsert(); |
+ testRemove(); |
+ testBadAdd(); |
+} |