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

Side by Side Diff: tests/lib/collection/linked_list_test.dart

Issue 13459002: Introduce new LinkedList to dart:collection. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:collection';
6
7
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.
8 class MyEntry extends LinkedListEntry<MyEntry> {
9 final int value;
10
11 MyEntry(int this.value);
12
13 String toString() => value.toString();
14 }
15
16
17 testInsert() {
18 // Insert last.
19 var list = new LinkedList<MyEntry>();
20 for (int i = 0; i < 10; i++) {
21 list.insertLast(new MyEntry(i));
22 }
23
24 if (list.length != 10) throw "bad length";
25
26 int i = 0;
27 for (var entry in list) {
28 if (entry.value != i++) throw "bad value";
29 }
30
31 if (i != 10) throw "bad length";
32
33 list.clear();
34
35 // Insert first.
36 for (int i = 0; i < 10; i++) {
37 list.insertFirst(new MyEntry(i));
38 }
39
40 if (list.length != 10) throw "bad length";
41
42 i = 10;
43 for (var entry in list) {
44 if (entry.value != --i) throw "bad value";
45 }
46 if (i != 0) throw "bad length";
47
48 list.clear();
49
50 // Insert after.
51 list.insertFirst(new MyEntry(0));
52 for (int i = 1; i < 10; i++) {
53 list.last.insertAfter(new MyEntry(i));
54 }
55
56 if (list.length != 10) throw "bad length";
57
58 i = 0;
59 for (var entry in list) {
60 if (entry.value != i++) throw "bad value";
61 }
62
63 if (i != 10) throw "bad length";
64
65 list.clear();
66
67 // Insert before.
68 list.insertFirst(new MyEntry(0));
69 for (int i = 1; i < 10; i++) {
70 list.first.insertBefore(new MyEntry(i));
71 }
72
73 if (list.length != 10) throw "bad length";
74
75 i = 10;
76 for (var entry in list) {
77 if (entry.value != --i) throw "bad value";
78 }
79 if (i != 0) throw "bad length";
80
81 list.clear();
82 }
83
84
85 testRemove() {
86 var list = new LinkedList<MyEntry>();
87 for (int i = 0; i < 10; i++) {
88 list.insertLast(new MyEntry(i));
89 }
90
91 if (list.length != 10) throw "bad length";
92
93 list.remove(list.skip(5).first);
94
95 if (list.length != 9) throw "bad length";
96
97 int i = 0;
98 for (var entry in list) {
99 if (i == 5) i++;
100 if (entry.value != i++) throw "bad value";
101 }
102 }
103
104
105 testBadAdd() {
106 print("here");
107 var list1 = new LinkedList<MyEntry>();
108 list1.insertFirst(new MyEntry(0));
109
110 var list2 = new LinkedList<MyEntry>();
111 bool failed = false;
112 try {
113 list2.insertFirst(list1.first);
114 } on StateError catch (e) {
115 print(e);
116 failed = true;
117 }
118 if (!failed) throw "fail expected";
119 }
120
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.
121
122 main() {
123 testInsert();
124 testRemove();
125 testBadAdd();
126 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698