| Index: client/tests/client/html/ListsTests.dart
 | 
| diff --git a/client/tests/client/html/ListsTests.dart b/client/tests/client/html/ListsTests.dart
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..711753061097be12f9e3b0d75a021a93030794f3
 | 
| --- /dev/null
 | 
| +++ b/client/tests/client/html/ListsTests.dart
 | 
| @@ -0,0 +1,159 @@
 | 
| +// Copyright (c) 2012, 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.
 | 
| +
 | 
| +
 | 
| +void testLists() {
 | 
| +  group('setRange', () {
 | 
| +    test('one element', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Lists.setRange(list, 1, 1, ["D"], 0);
 | 
| +      Expect.listEquals(["A", "D", "C"], list);
 | 
| +    });
 | 
| +
 | 
| +    test('several elements', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Lists.setRange(list, 1, 2, ["D", "E"], 0);
 | 
| +      Expect.listEquals(["A", "D", "E"], list);
 | 
| +    });
 | 
| +
 | 
| +    test('fewer than all source elements', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Lists.setRange(list, 1, 1, ["D", "E"], 0);
 | 
| +      Expect.listEquals(["A", "D", "C"], list);
 | 
| +    });
 | 
| +
 | 
| +    test('startFrom', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Lists.setRange(list, 1, 1, ["D", "E"], 1);
 | 
| +      Expect.listEquals(["A", "E", "C"], list);
 | 
| +    });
 | 
| +
 | 
| +    test('negative length', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Expect.throws(
 | 
| +          () => Lists.setRange(list, 1, -1, ["D"], 0),
 | 
| +          (e) => e is IllegalArgumentException);
 | 
| +    });
 | 
| +
 | 
| +    test('off the end of dest', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Expect.throws(() {
 | 
| +        Lists.setRange(list, 2, 2, ["D", "E"], 0);
 | 
| +      }, (e) => e is IndexOutOfRangeException);
 | 
| +    });
 | 
| +
 | 
| +    test('off the beginning of dest', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Expect.throws(
 | 
| +          () => Lists.setRange(list, -1, 1, ["D"], 0),
 | 
| +          (e) => e is IndexOutOfRangeException);
 | 
| +    });
 | 
| +
 | 
| +    test('off the end of source', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Expect.throws(
 | 
| +          () => Lists.setRange(list, 1, 2, ["D"], 0),
 | 
| +          (e) => e is IndexOutOfRangeException);
 | 
| +    });
 | 
| +
 | 
| +    test('off the beginning of source', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Expect.throws(
 | 
| +          () => Lists.setRange(list, 1, 1, ["D"], -1),
 | 
| +          (e) => e is IndexOutOfRangeException);
 | 
| +    });
 | 
| +  });
 | 
| +
 | 
| +  group('removeRange', () {
 | 
| +    void removeRange(list, start, length) =>
 | 
| +      Lists.removeRange(list, start, length, (i) => list.removeRange(i, 1));
 | 
| +
 | 
| +    test('one element', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      removeRange(list, 1, 1);
 | 
| +      Expect.listEquals(["A", "C"], list);
 | 
| +    });
 | 
| +
 | 
| +    test('two elements', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      removeRange(list, 1, 2);
 | 
| +      Expect.listEquals(["A"], list);
 | 
| +    });
 | 
| +
 | 
| +    test('all elements', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      removeRange(list, 0, 3);
 | 
| +      Expect.isTrue(list.isEmpty());
 | 
| +    });
 | 
| +
 | 
| +    test('negative length', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Expect.throws(
 | 
| +          () => removeRange(list, 2, -1),
 | 
| +          (e) => e is IllegalArgumentException);
 | 
| +    });
 | 
| +
 | 
| +    test('off the end', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Expect.throws(
 | 
| +          () => removeRange(list, 2, 3),
 | 
| +          (e) => e is IndexOutOfRangeException);
 | 
| +    });
 | 
| +
 | 
| +    test('off the beginning', () {
 | 
| +      var list = ["A", "B", "C"];
 | 
| +      Expect.throws(
 | 
| +          () => removeRange(list, -1, 1),
 | 
| +          (e) => e is IndexOutOfRangeException);
 | 
| +    });
 | 
| +  });
 | 
| +
 | 
| +  group('getRange', () {
 | 
| +    test('one element', () {
 | 
| +      Expect.listEquals(["C"], Lists.getRange(["A", "B", "C"], 2, 1));
 | 
| +    });
 | 
| +
 | 
| +    test('two elements', () {
 | 
| +      Expect.listEquals(["B", "C"], Lists.getRange(["A", "B", "C"], 1, 2));
 | 
| +    });
 | 
| +
 | 
| +    test('negative length', () {
 | 
| +      Expect.throws(
 | 
| +          () => Lists.getRange(["A", "B", "C"], 2, -1),
 | 
| +          (e) => e is IllegalArgumentException);
 | 
| +    });
 | 
| +
 | 
| +    test('off the end', () {
 | 
| +      Expect.throws(
 | 
| +          () => Lists.getRange(["A", "B", "C"], 2, 2),
 | 
| +          (e) => e is IndexOutOfRangeException);
 | 
| +    });
 | 
| +
 | 
| +    test('off the beginning', () {
 | 
| +      Expect.throws(
 | 
| +          () => Lists.getRange(["A", "B", "C"], -1, 2),
 | 
| +          (e) => e is IndexOutOfRangeException);
 | 
| +    });
 | 
| +  });
 | 
| +
 | 
| +  test('indexOf', () {
 | 
| +    var list = ["A", "B", "C"];
 | 
| +    Expect.equals(0, Lists.indexOf(list, "A", 0, list.length));
 | 
| +    Expect.equals(1, Lists.indexOf(list, "B", 0, list.length));
 | 
| +    Expect.equals(2, Lists.indexOf(list, "C", 0, list.length));
 | 
| +    Expect.equals(-1, Lists.indexOf(list, "D", 0, list.length));
 | 
| +    Expect.equals(1, Lists.indexOf(list, "B", 1, list.length));
 | 
| +    Expect.equals(-1, Lists.indexOf(list, "B", 2, list.length));
 | 
| +  });
 | 
| +
 | 
| +  test('lastIndexOf', () {
 | 
| +    var list = ["A", "B", "C"];
 | 
| +    Expect.equals(0, Lists.lastIndexOf(list, "A", list.length - 1));
 | 
| +    Expect.equals(1, Lists.lastIndexOf(list, "B", list.length - 1));
 | 
| +    Expect.equals(2, Lists.lastIndexOf(list, "C", list.length - 1));
 | 
| +    Expect.equals(-1, Lists.lastIndexOf(list, "D", list.length - 1));
 | 
| +    Expect.equals(1, Lists.lastIndexOf(list, "B", 1));
 | 
| +    Expect.equals(-1, Lists.lastIndexOf(list, "E", 0));
 | 
| +  });
 | 
| +}
 | 
| 
 |