// Copyright (c) 2016, 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 RangeError.range(num invalidValue, int minValue, int maxValue,
 *    [String name, String message])
 * Create a new RangeError with for an invalid value being outside a range.
 *
 * The allowed range is from minValue to maxValue, inclusive.
 * If minValue or maxValue are null, the range is infinite in that direction.
 * @description Checks that this constructor creates RangeError for an invalid
 * value being outside a range.
 * @author sgrekhov@unipro.ru
 */
import "../../../Utils/expect.dart";

check(num invalidValue, int? minValue, int? maxValue) {
  RangeError re = new RangeError.range(invalidValue, minValue, maxValue);
  Expect.equals(minValue, re.start);
  Expect.equals(maxValue, re.end);
  Expect.equals(invalidValue, re.invalidValue);
}

main() {
  check(-1, 1, 5);
  check(14, -1, 5);
  check(1, 1, 5);
  check(15, null, 5);
  check(-1, null, 5);
  check(-1, 1, null);
  check(17, 1, null);
  check(3.14, 1, 5);
  check(-1, null, null);
}
