// Copyright (c) 2017, 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
 * Int32x4List.view(
 *    ByteBuffer buffer, [
 *    int offsetInBytes = 0,
 *    int length
 * ])
 * ...
 * Throws RangeError if offsetInBytes or length are negative, or if
 * offsetInBytes + (length * elementSizeInBytes) is greater than the length of
 * buffer.
 * @description Checks that an error is thrown if offsetInBytes +
 * (length * elementSizeInBytes) is greater than the length of buffer.
 * @author ngl@unipro.ru
 * @issue 43196
 */

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

Int32x4 i32x4(n) => new Int32x4(n, n, n, n);

equal(o1, o2) => o1.x == o2.x && o1.y == o2.y && o1.z == o2.z && o1.w == o2.w;

void check(list, offset, length) {
  var l = new Int32x4List.fromList(list);
  var buffer = l.buffer;
  Expect.throws(() { Int32x4List.view(buffer, offset, length); });
}

main() {
  var list = [
    i32x4(0), i32x4(1), i32x4(2), i32x4(3), i32x4(4), i32x4(5), i32x4(6),
    i32x4(7),i32x4(8), i32x4(9)
  ];
  check([i32x4(1)], 0, 2);
  check(list, 0, 11);
  check(list, 2 * Int32x4List.bytesPerElement, 9);
  check(list, 3 * Int32x4List.bytesPerElement, 9);
}
