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

/// @assertion Iterable<E> getRange(int start, int end)
/// ...
/// A range from start to end is valid if 0 <= start <= end <= len, where len is
/// this list's length. The range starts at start and has length end - start. An
/// empty range (with end == start) is valid.
/// @description Checks that an error is thrown if the start and end are not
/// valid ranges at the time of the call to this method.
/// @author msyabro


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

Float32x4 pack(v) => new Float32x4.splat(v);

check(List<Float32x4> list) {
  var l = new Float32x4List.fromList(list);
  Expect.throws(() {
    l.getRange(-1, list.length);
  });

  Expect.throws(() {
    l.getRange(0, list.length + 1);
  });

  Expect.throws(() {
    l.getRange(-1, list.length + 1);
  });

  Expect.throws(() {
    l.getRange(0x80000000, 0x7fffffff);
  });
}

main() {
  check([]);
  check([pack(1.0)]);
  check(new Float32x4List(10));
}
