dart-sdk/tests/corelib_2/list_for_each_test.dart
Michael Thomsen e4cc3c98e5 [3.0 alpha] Remove deprecated dart:core List() constructor.
TEST=ci

Bug: Contributes to https://github.com/dart-lang/sdk/issues/49529
Change-Id: Ic129ef2d89f625d9ec6a7a1c301cffddd60b2ff7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/258920
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Michael Thomsen <mit@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2022-12-15 11:36:22 +00:00

70 lines
1.5 KiB
Dart

// 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.
// @dart = 2.9
import "package:expect/expect.dart";
import "dart:collection";
class MyList extends ListBase {
List list;
MyList(this.list);
get length => list.length;
set length(value) {
list.length = value;
}
operator [](index) => list[index];
operator []=(index, val) {
list[index] = val;
}
toString() => list.toString();
}
void testWithoutModification(List list) {
var seen = [];
list.forEach(seen.add);
Expect.listEquals(list, seen);
}
void testWithModification(List list) {
if (list.isEmpty) return;
Expect.throws(() => list.forEach((_) => list.add(0)),
(e) => e is ConcurrentModificationError);
}
main() {
List fixedLengthList = new List.filled(10, null);
for (int i = 0; i < 10; i++) fixedLengthList[i] = i + 1;
List growableList = [];
growableList.length = 10;
for (int i = 0; i < 10; i++) growableList[i] = i + 1;
var growableLists = [
[],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
new MyList([1, 2, 3, 4, 5]),
growableList,
];
var fixedLengthLists = [
const [],
fixedLengthList,
const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
new MyList(const [1, 2]),
];
for (var list in growableLists) {
print(list);
testWithoutModification(list);
testWithModification(list);
}
for (var list in fixedLengthLists) {
testWithoutModification(list);
}
}