blob: 96597230e24a3e45a7f6289ebae3e2f11b2e9d8c [file] [log] [blame]
// Copyright (c) 2011, 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 test program for testing arrays.
import "package:expect/expect.dart";
class A {}
class B {}
class ListTest {
static void TestIterator() {
List<int> a = new List<int>.filled(10, -1);
int count = 0;
// Basic iteration over ObjectList.
for (int elem in a) {
Expect.equals(-1, elem);
count++;
}
Expect.equals(10, count);
// List length is 0.
List<int> fa = new List<int>.empty(growable: true);
count = 0;
for (int elem in fa) {
count++;
}
Expect.equals(0, count);
// Iterate over ImmutableList.
List<int> ca = const [0, 1, 2, 3, 4, 5];
int sum = 0;
for (int elem in ca) {
sum += elem;
fa.add(elem);
}
Expect.equals(15, sum);
// Iterate over List.
int sum2 = 0;
for (int elem in fa) {
sum2 += elem;
}
Expect.equals(sum, sum2);
}
static void testSublistTypeArguments() {
final list1 = new List<A>.empty().sublist(0);
Expect.isTrue(list1 is List<A>);
Expect.isTrue(list1 is! List<B>);
final list2 = new List<A>.empty().toList(growable: false);
Expect.isTrue(list2 is List<A>);
Expect.isTrue(list2 is! List<B>);
}
static void testMain() {
int len = 10;
List a = new List.filled(len, null);
Expect.equals(true, a is List);
Expect.equals(len, a.length);
a.forEach((element) {
Expect.equals(null, element);
});
a[1] = 1;
Expect.equals(1, a[1]);
Expect.throwsRangeError(() => a[len]);
Expect.throws(() {
List a = new List<dynamic>.filled(4, null);
// Ensure that we catch null coming in even in weak mode.
a.setRange(1, 2, a, null as dynamic);
});
Expect.throws(() {
List a = new List<dynamic>.filled(4, null);
// Ensure that we catch null coming in even in weak mode.
a.setRange(1, 2, const [1, 2, 3, 4], null as dynamic);
});
Expect.throwsRangeError(() {
List a = new List.filled(4, null);
a.setRange(10, 11, a, 1);
});
a = new List.filled(4, null);
List b = new List.filled(4, null);
b.setRange(0, 4, a, 0);
List<int> unsorted = [4, 3, 9, 12, -4, 9];
int compare(a, b) {
if (a < b) return -1;
if (a > b) return 1;
return 0;
}
unsorted.sort(compare);
Expect.equals(6, unsorted.length);
Expect.equals(-4, unsorted[0]);
Expect.equals(12, unsorted[unsorted.length - 1]);
int compare2(a, b) {
if (a < b) return 1;
if (a > b) return -1;
return 0;
}
unsorted.sort(compare2);
Expect.equals(12, unsorted[0]);
Expect.equals(-4, unsorted[unsorted.length - 1]);
Set<int> t = new Set<int>.from(unsorted);
Expect.equals(true, t.contains(9));
Expect.equals(true, t.contains(-4));
Expect.equals(false, t.contains(-3));
Expect.equals(6, unsorted.length);
Expect.equals(5, t.length);
TestIterator();
int element = unsorted[2];
Expect.equals(9, element);
Expect.throws(() => new List.filled(-1, 0));
Expect.throws(() => new List.filled(0x7ffffffffffff000, 0));
List list = new List.empty(growable: true);
Expect.throwsRangeError(list.removeLast);
Expect.equals(0, list.length);
}
}
main() {
ListTest.testMain();
ListTest.testSublistTypeArguments();
}