feb05c33c3
Fixes http://dartbug.com/3689. R=ahe@google.com BUG= TEST= Review URL: https://chromiumcodereview.appspot.com//10553034 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8790 260f80e4-7a28-3924-810f-c04153c831b5
153 lines
4.1 KiB
Dart
153 lines
4.1 KiB
Dart
// 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.
|
|
|
|
class ListTest {
|
|
|
|
static testMain() {
|
|
testList();
|
|
testExpandableList();
|
|
}
|
|
|
|
static void expectValues(list, val1, val2, val3, val4) {
|
|
Expect.equals(true, list.length == 4);
|
|
Expect.equals(true, list.length == 4);
|
|
Expect.equals(true, !list.isEmpty());
|
|
Expect.equals(list[0], val1);
|
|
Expect.equals(list[1], val2);
|
|
Expect.equals(list[2], val3);
|
|
Expect.equals(list[3], val4);
|
|
}
|
|
|
|
static void testClosures(List list) {
|
|
testMap(val) {return val * 2 + 10; }
|
|
Collection mapped = list.map(testMap);
|
|
Expect.equals(mapped.length, list.length);
|
|
for (var i = 0; i < list.length; i++) {
|
|
Expect.equals(mapped[i], list[i]*2 + 10);
|
|
}
|
|
|
|
testFilter(val) { return val == 3; }
|
|
Collection filtered = list.filter(testFilter);
|
|
Expect.equals(filtered.length, 1);
|
|
|
|
testEvery(val) { return val != 11; }
|
|
bool test = list.every(testEvery);
|
|
Expect.equals(true, test);
|
|
|
|
testSome(val) { return val == 1; }
|
|
test = list.some(testSome);
|
|
Expect.equals(true, test);
|
|
|
|
testSomeFirst(val) { return val == 0; }
|
|
test = list.some(testSomeFirst);
|
|
Expect.equals(true, test);
|
|
|
|
testSomeLast(val) { return val == (list.length - 1); }
|
|
test = list.some(testSomeLast);
|
|
Expect.equals(true, test);
|
|
}
|
|
|
|
static void testList() {
|
|
List list = new List(4);
|
|
Expect.equals(list.length, 4);
|
|
list[0] = 4;
|
|
expectValues(list, 4, null, null, null);
|
|
String val = "fisk";
|
|
list[1] = val;
|
|
expectValues(list, 4, val, null, null);
|
|
double d = 2.0;
|
|
list[3] = d;
|
|
expectValues(list, 4, val, null, d);
|
|
|
|
for (int i = 0; i < list.length; i++) {
|
|
list[i] = i;
|
|
}
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
Expect.equals(i, list[i]);
|
|
Expect.equals(i, list.indexOf(i));
|
|
Expect.equals(i, list.lastIndexOf(i));
|
|
}
|
|
|
|
Expect.equals(-1, list.indexOf(100));
|
|
Expect.equals(-1, list.lastIndexOf(100));
|
|
list[2] = new Yes();
|
|
Expect.equals(2, list.indexOf(100));
|
|
Expect.equals(2, list.lastIndexOf(100));
|
|
list[3] = new Yes();
|
|
Expect.equals(2, list.indexOf(100));
|
|
Expect.equals(3, list.lastIndexOf(100));
|
|
list[2] = 2;
|
|
Expect.equals(3, list.indexOf(100));
|
|
Expect.equals(3, list.lastIndexOf(100));
|
|
list[3] = 3;
|
|
Expect.equals(-1, list.indexOf(100));
|
|
Expect.equals(-1, list.lastIndexOf(100));
|
|
|
|
testClosures(list);
|
|
|
|
var exception = null;
|
|
try {
|
|
list.clear();
|
|
} catch (UnsupportedOperationException e) {
|
|
exception = e;
|
|
}
|
|
Expect.equals(true, exception != null);
|
|
}
|
|
|
|
static void testExpandableList() {
|
|
List list = new List();
|
|
Expect.equals(true, list.isEmpty());
|
|
Expect.equals(list.length, 0);
|
|
list.add(4);
|
|
Expect.equals(1, list.length);
|
|
Expect.equals(true, !list.isEmpty());
|
|
Expect.equals(list.length, 1);
|
|
Expect.equals(list.length, 1);
|
|
Expect.equals(list.removeLast(), 4);
|
|
|
|
for (int i = 0; i < 10; i++) {
|
|
list.add(i);
|
|
}
|
|
|
|
Expect.equals(list.length, 10);
|
|
for (int i = 0; i < 10; i++) {
|
|
Expect.equals(i, list[i]);
|
|
Expect.equals(i, list.indexOf(i));
|
|
Expect.equals(i, list.lastIndexOf(i));
|
|
}
|
|
|
|
Expect.equals(-1, list.indexOf(100));
|
|
Expect.equals(-1, list.lastIndexOf(100));
|
|
list[2] = new Yes();
|
|
Expect.equals(2, list.indexOf(100));
|
|
Expect.equals(2, list.lastIndexOf(100));
|
|
list[3] = new Yes();
|
|
Expect.equals(2, list.indexOf(100));
|
|
Expect.equals(3, list.lastIndexOf(100));
|
|
list[2] = 2;
|
|
Expect.equals(3, list.indexOf(100));
|
|
Expect.equals(3, list.lastIndexOf(100));
|
|
list[3] = 3;
|
|
Expect.equals(-1, list.indexOf(100));
|
|
Expect.equals(-1, list.lastIndexOf(100));
|
|
|
|
testClosures(list);
|
|
|
|
Expect.equals(list.removeLast(), 9);
|
|
list.clear();
|
|
Expect.equals(list.length, 0);
|
|
Expect.equals(list.length, 0);
|
|
Expect.equals(true, list.isEmpty());
|
|
}
|
|
}
|
|
|
|
class Yes {
|
|
operator ==(var other) => true;
|
|
}
|
|
|
|
main() {
|
|
ListTest.testMain();
|
|
}
|