// 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 int parse(String source, {int radix, int onError(String source)})
 * Parse source as a, possibly signed, integer literal and return its value.
 *
 * The source must be a non-empty sequence of base-radix digits, optionally
 * prefixed with a minus or plus sign ('-' or '+').
 *
 * The radix must be in the range 2..36. The digits used are first the decimal
 * digits 0..9, and then the letters 'a'..'z' with values 10 through 35. Also
 * accepts upper-case letters with the same values as the lower-case ones.
 * ...
 * @description Checks that radix argument must be in the range 2..36
 * @author sgrekhov@unipro.ru
 */
import "../../../Utils/expect.dart";

main() {
  Expect.throws(() {int.parse("1", radix: 1);});
  Expect.throws(() {int.parse("1", radix: 0);});
  Expect.throws(() {int.parse("1", radix: -1);});
  Expect.throws(() {int.parse("1", radix: -20);});
  Expect.throws(() {int.parse("1", radix: 37);});
  Expect.throws(() {int.parse("1", radix: -37);});
  Expect.throws(() {int.parse("1", radix: 9007199254740991);});

  for (int i = 2; i <= 36; i++) {
    int.parse("1", radix: i);
  }
}
