| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import "dart:collection"; | 5 import "dart:collection"; |
| 6 import "dart:typed_data"; | 6 import "dart:typed_data"; |
| 7 import "package:expect/expect.dart"; | 7 import "package:expect/expect.dart"; |
| 8 | 8 |
| 9 void main() { | 9 void main() { |
| 10 // Typed lists - fixed length and can only contain integers. | 10 // Typed lists - fixed length and can only contain integers. |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 | 369 |
| 370 list.replaceRange(2, 3, [5, 5, 5]); | 370 list.replaceRange(2, 3, [5, 5, 5]); |
| 371 Expect.listEquals([1, 2, 5, 5, 5, 0, 0, 7, 2, 3, 2, 1], list); | 371 Expect.listEquals([1, 2, 5, 5, 5, 0, 0, 7, 2, 3, 2, 1], list); |
| 372 | 372 |
| 373 list.replaceRange(2, 4, [6, 6]); | 373 list.replaceRange(2, 4, [6, 6]); |
| 374 Expect.listEquals([1, 2, 6, 6, 5, 0, 0, 7, 2, 3, 2, 1], list); | 374 Expect.listEquals([1, 2, 6, 6, 5, 0, 0, 7, 2, 3, 2, 1], list); |
| 375 | 375 |
| 376 list.replaceRange(6, 8, []); | 376 list.replaceRange(6, 8, []); |
| 377 Expect.listEquals([1, 2, 6, 6, 5, 0, 2, 3, 2, 1], list); | 377 Expect.listEquals([1, 2, 6, 6, 5, 0, 2, 3, 2, 1], list); |
| 378 | 378 |
| 379 // Operations that change the length cause ConcurrentModificationError. | 379 // Operations that change the length may cause ConcurrentModificationError. |
| 380 // Reducing the length may cause a RangeError before the |
| 381 // ConcurrentModificationError in production mode. |
| 382 bool checkedMode = false; |
| 383 assert((checkedMode = true)); |
| 384 |
| 380 void testConcurrentModification(action()) { | 385 void testConcurrentModification(action()) { |
| 381 testIterator(int when) { | 386 testIterator(int when) { |
| 382 list.length = 4; | 387 list.length = 4; |
| 383 list.setAll(0, [0, 1, 2, 3]); | 388 list.setAll(0, [0, 1, 2, 3]); |
| 384 Expect.throws(() { | 389 Expect.throws(() { |
| 385 for (var element in list) { | 390 for (var element in list) { |
| 386 if (element == when) action(); | 391 if (element == when) { |
| 392 when = -1; // Prevent triggering more than once. |
| 393 action(); |
| 394 } |
| 387 } | 395 } |
| 388 }, (e) => e is ConcurrentModificationError); | 396 }, (e) => !checkedMode || e is ConcurrentModificationError); |
| 389 } | 397 } |
| 390 testForEach(int when) { | 398 testForEach(int when) { |
| 391 list.length = 4; | 399 list.length = 4; |
| 392 list.setAll(0, [0, 1, 2, 3]); | 400 list.setAll(0, [0, 1, 2, 3]); |
| 393 Expect.throws(() { | 401 Expect.throws(() { |
| 394 list.forEach((var element) { | 402 list.forEach((var element) { |
| 395 if (element == when) action(); | 403 if (element == when) { |
| 404 when = -1; |
| 405 action(); |
| 406 } |
| 396 }); | 407 }); |
| 397 }, (e) => e is ConcurrentModificationError); | 408 }, (e) => e is ConcurrentModificationError); |
| 398 } | 409 } |
| 399 // Test the change at different points of the iteration. | 410 // Test the change at different points of the iteration. |
| 400 testIterator(0); | 411 testIterator(0); |
| 401 testIterator(1); | 412 testIterator(1); |
| 402 testIterator(3); | 413 testIterator(3); |
| 403 testForEach(0); | 414 testForEach(0); |
| 404 testForEach(1); | 415 testForEach(1); |
| 405 testForEach(3); | 416 testForEach(3); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 | 508 |
| 498 void testListConstructor() { | 509 void testListConstructor() { |
| 499 Expect.throws(() { new List(0).add(4); }); // Is fixed-length. | 510 Expect.throws(() { new List(0).add(4); }); // Is fixed-length. |
| 500 Expect.throws(() { new List(-2); }); // Not negative. /// 01: ok | 511 Expect.throws(() { new List(-2); }); // Not negative. /// 01: ok |
| 501 Expect.throws(() { new List(null); }); // Not null. | 512 Expect.throws(() { new List(null); }); // Not null. |
| 502 Expect.listEquals([4], new List()..add(4)); | 513 Expect.listEquals([4], new List()..add(4)); |
| 503 Expect.throws(() { new List.filled(0, 42).add(4); }); // Is fixed-length. | 514 Expect.throws(() { new List.filled(0, 42).add(4); }); // Is fixed-length. |
| 504 Expect.throws(() { new List.filled(-2, 42); }); // Not negative. | 515 Expect.throws(() { new List.filled(-2, 42); }); // Not negative. |
| 505 Expect.throws(() { new List.filled(null, 42); }); // Not null. | 516 Expect.throws(() { new List.filled(null, 42); }); // Not null. |
| 506 } | 517 } |
| OLD | NEW |