// 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.

/**
 * @assertion abstract void removeRange(int start, int end)
 * An error occurs if start.. end is not a valid range for this.
 * @description Checks that an [RangeError] is thrown
 * if [start] or [end] are out of range.
 * @author vasya
 */
library removeRange_A03_t02;

import "../../../Utils/expect.dart";

checkList(l, start, end) {
  Expect.throws(() {l.removeRange(start, end);}, (e) => e is RangeError);
}

test(List<E> create<E>([int length, E fill])) {

  void check(int listSize, int start, int end) {
    List l = create();
    l.length = listSize;
    checkList(l, start, end);
  }

  check(0, 0, 1);
  check(1, 1, 2);
  check(100, 99, 101);
  check(799, 0, 800);
}
