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

// @dart = 2.9

/// @assertion
/// void setRange(
///   int start,
///   int end,
///   Iterable<E> iterable, [
///   int skipCount = 0
/// ])
/// ...
/// If iterable is this list, the operation copies the elements originally in the
/// range from skipCount to skipCount + (end - start) to the range start to end,
/// even if the two ranges overlap.
/// @description Checks that the correct range is set with correct elements when
/// the two ranges overlap.
/// @author ngl@unipro.ru


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

main() {
  var l = new Uint32List.fromList([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
  var buffer = l.buffer;
  var l1 = new Uint32List.view(buffer, 12, 4);

  l.setRange(2, 4, l1, 2);
  Expect.listEquals([0, 1, 5, 6, 4, 5, 6, 7, 8, 9], l);

  l.setRange(5, 9, l1, 0);
  Expect.listEquals([0, 1, 5, 6, 4, 6, 4, 5, 6, 9], l);
}
