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

Side by Side Diff: tests/corelib_strong/list_unmodifiable_test.dart

Issue 2992833002: Migrated test block 15 to Dart 2.0. (Closed)
Patch Set: Created 3 years, 4 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
OLDNEW
(Empty)
1 // Copyright (c) 2015, 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 "package:expect/expect.dart";
6 import "dart:collection";
7 import "dart:typed_data";
8
9 main() {
10 var intTest = new Test<int>();
11 intTest.run("ConstList", createConstList);
12 intTest.run("FixedList", createFixedList);
13 intTest.run("GrowableList", createGrowableList);
14 intTest.run("ConstMapKeys", createConstMapKeys);
15 intTest.run("ConstMapValues", createConstMapValues);
16 intTest.run("MapKeys", createMapKeys);
17 intTest.run("MapValues", createMapValues);
18 intTest.run("SplayMapKeys", createSplayMapKeys);
19 intTest.run("SplayMapValues", createSplayMapValues);
20 intTest.run("Set", createSet);
21 intTest.run("SplaySet", createSplaySet);
22 intTest.run("Queue", createQueue);
23 intTest.run("ListMapKeys", createListMapKeys);
24 intTest.run("ListMapValues", createListMapValues);
25 intTest.run("CodeUnits", createCodeUnits);
26 intTest.run("TypedList", createTypedList);
27
28 new Test<String>().test("strings", ["a", "b", "c"]);
29
30 new Test<num>().test("superclass", <int>[1, 2, 3]);
31 new Test<int>().test("subclass", <num>[1, 2, 3]);
32 }
33
34 class Test<E> {
35 run(name, Iterable create(int size)) {
36 test(name, create(0));
37 test(name, create(1));
38 test(name, create(3));
39 }
40
41 test(name, iterable) {
42 testSingle(name, iterable);
43 testSingle("$name-where", iterable.where((x) => true));
44 testSingle("$name-map", iterable.map((x) => x));
45 testSingle("$name-expand", iterable.expand((x) => [x, x]));
46 testSingle("$name-skip", iterable.skip(1));
47 testSingle("$name-take", iterable.take(2));
48 testSingle("$name-skipWhile", iterable.skipWhile((x) => false));
49 testSingle("$name-takeWhile", iterable.takeWhile((x) => true));
50 }
51
52 testSingle(name, iterable) {
53 var elements = iterable.toList();
54 int length = elements.length;
55
56 var list = new List<E>.unmodifiable(iterable);
57
58 Expect.isTrue(list is List<E>, "$name-type-$E");
59 Expect.isTrue(list is! List<Test>, "$name-!type-!$E");
60
61 checkElements() {
62 Expect.equals(length, list.length);
63 for (int i = 0; i < length; i++) {
64 Expect.identical(elements[i], list[i], "$name-identical-$i");
65 }
66 }
67
68 checkElements();
69
70 throws(funcName, func) {
71 try {
72 func();
73 } catch (e, s) {
74 Expect.isTrue(e is UnsupportedError, "$name: $funcName threw $e");
75 return;
76 }
77 checkElements();
78 Expect.fail("$name: $funcName didn't throw");
79 }
80
81 throws("[]=", () {
82 list[0] = null;
83 });
84 throws("length=", () {
85 list.length = length + 1;
86 });
87 throws("length=", () {
88 list.length = length - 1;
89 });
90 throws("setAll", () {
91 list.setAll(0, []);
92 });
93 throws("add", () {
94 list.add(null);
95 });
96 throws("insert", () {
97 list.insert(0, null);
98 });
99 throws("insertAll", () {
100 list.insertAll(0, []);
101 });
102 throws("addAll", () {
103 list.addAll([]);
104 });
105 throws("remove", () {
106 list.remove(null);
107 });
108 throws("removeWhere", () {
109 list.removeWhere((x) => true);
110 });
111 throws("retainWhere", () {
112 list.retainWhere((x) => false);
113 });
114 throws("sort", () {
115 list.sort();
116 });
117 throws("shuffle", () {
118 list.shuffle();
119 });
120 throws("clear", () {
121 list.clear();
122 });
123 throws("removeAt", () {
124 list.removeAt(0);
125 });
126 throws("removeLast", () {
127 list.removeLast();
128 });
129 throws("setRange", () {
130 list.setRange(0, 1, []);
131 });
132 throws("removeRange", () {
133 list.removeRange(0, 1);
134 });
135 throws("replaceRange", () {
136 list.replaceRange(0, 1, []);
137 });
138 throws("fillRange", () {
139 list.fillRange(0, 1, null);
140 });
141
142 success(opName, op(list)) {
143 var expect;
144 try {
145 expect = op(elements);
146 } catch (e) {
147 try {
148 op(list);
149 } catch (e2) {
150 Expect.equals(e.runtimeType, e2.runtimeType);
151 return;
152 }
153 Expect.fail("$name-$opName didn't throw, expected: $e");
154 }
155 var actual = op(list);
156 checkElements();
157 if (expect is List) {
158 Expect.listEquals(expect, actual, "$name-$opName");
159 } else if (expect is Iterable) {
160 Expect.isTrue(actual is Iterable);
161 Expect.listEquals(expect.toList(), actual.toList(), "$name-$opName");
162 } else {
163 Expect.equals(expect, actual, "$name-$opName");
164 }
165 }
166
167 success("indexOf", (l) => l.indexOf(null));
168 success("lastIndexOf", (l) => l.lastIndexOf(null));
169 success("contains", (l) => l.contains(2));
170 success("elementAt", (l) => l.elementAt[1]);
171 success("reversed", (l) => l.reversed);
172 success("sublist0-1", (l) => l.sublist(0, 1));
173 success("getRange0-1", (l) => l.getRange(0, 1));
174 success("asMap-keys", (l) => l.asMap().keys);
175 success("asMap-values", (l) => l.asMap().values);
176 success("where", (l) => l.where((x) => true));
177 success("map", (l) => l.map((x) => x));
178 success("expand", (l) => l.expand((x) => [x, x]));
179 success("skip", (l) => l.skip(1));
180 success("take", (l) => l.take(1));
181 success("skipWhile", (l) => l.skipWhile((x) => false));
182 success("takeWhile", (l) => l.takeWhile((x) => true));
183 success("first", (l) => l.first);
184 success("last", (l) => l.last);
185 success("single", (l) => l.single);
186 success("firstWhere", (l) => l.firstWhere((x) => true));
187 success("lastWhere", (l) => l.lastWhere((x) => true));
188 success("singleWhere", (l) => l.singleWhere((x) => true));
189 success("isEmpty", (l) => l.isEmpty);
190 success("isNotEmpty", (l) => l.isNotEmpty);
191 success("join", (l) => l.join("/"));
192 success("fold", (l) => l.fold("--", (a, b) => "$a/$b"));
193 success("reduce", (l) => l.reduce((a, b) => a + b));
194 success("every", (l) => l.every((x) => x == 0));
195 success("any", (l) => l.any((x) => x == 2));
196 success("toList", (l) => l.toList());
197 success("toSet", (l) => l.toSet());
198 success("toString", (l) => l.toString());
199
200 var it = elements.iterator;
201 list.forEach((v) {
202 Expect.isTrue(it.moveNext());
203 Expect.equals(it.current, v);
204 });
205 Expect.isFalse(it.moveNext());
206
207 if (elements is List<int> && list is List<int>) {
208 success("String.fromCharCodes", (l) => new String.fromCharCodes(l));
209 }
210 }
211 }
212
213 createConstList(n) {
214 if (n == 0) return const <int>[];
215 return const <int>[1, 2, 3];
216 }
217
218 createFixedList(n) {
219 var result = new List<int>(n);
220 for (int i = 0; i < n; i++) result[i] = n;
221 return result;
222 }
223
224 createGrowableList(n) {
225 var result = new List<int>()..length = n;
226 for (int i = 0; i < n; i++) result[i] = n;
227 return result;
228 }
229
230 createIterable(n) => new Iterable.generate(n);
231 createConstMapKeys(n) {
232 if (n == 0) return const <int, int>{}.keys;
233 return const <int, int>{0: 0, 1: 1, 2: 2}.keys;
234 }
235
236 createConstMapValues(n) {
237 if (n == 0) return const <int, int>{}.values;
238 return const <int, int>{0: 0, 1: 1, 2: 2}.values;
239 }
240
241 createMapKeys(n) {
242 var map = <int, int>{};
243 for (int i = 0; i < n; i++) map[i] = i;
244 return map.keys;
245 }
246
247 createMapValues(n) {
248 var map = <int, int>{};
249 for (int i = 0; i < n; i++) map[i] = i;
250 return map.values;
251 }
252
253 createSplayMapKeys(n) {
254 var map = new SplayTreeMap<int, int>();
255 for (int i = 0; i < n; i++) map[i] = i;
256 return map.keys;
257 }
258
259 createSplayMapValues(n) {
260 var map = new SplayTreeMap<int, int>();
261 for (int i = 0; i < n; i++) map[i] = i;
262 return map.values;
263 }
264
265 createSet(n) {
266 var set = new Set<int>();
267 for (int i = 0; i < n; i++) set.add(i);
268 return set;
269 }
270
271 createSplaySet(n) {
272 var set = new SplayTreeSet<int>();
273 for (int i = 0; i < n; i++) set.add(i);
274 return set;
275 }
276
277 createQueue(n) {
278 var queue = new Queue<int>();
279 for (int i = 0; i < n; i++) queue.add(i);
280 return queue;
281 }
282
283 createListMapKeys(n) {
284 return createGrowableList(n).asMap().keys;
285 }
286
287 createListMapValues(n) {
288 return createGrowableList(n).asMap().values;
289 }
290
291 createCodeUnits(n) {
292 var string = new String.fromCharCodes(new Iterable.generate(n));
293 return string.codeUnits;
294 }
295
296 createTypedList(n) {
297 var tl = new Uint8List(n);
298 for (int i = 0; i < n; i++) tl[i] = i;
299 return tl;
300 }
OLDNEW
« tests/corelib_2/list_unmodifiable_test.dart ('K') | « tests/corelib_strong/list_to_string_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698