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

// Test for int.parse with limited 64-bit integers.

import "package:expect/expect.dart";

main() {
  Expect.equals(0, int.parse("0"));
  Expect.equals(1, int.parse("1"));
  Expect.equals(-1, int.parse("-1"));

  Expect.equals(0x7ffffffffffffffe, int.parse("0x7ffffffffffffffe"));
  Expect.equals(0x7fffffffffffffff, int.parse("0x7fffffffffffffff"));
  Expect.equals(-0x7fffffffffffffff, int.parse("-0x7fffffffffffffff"));
  Expect.equals(-0x7fffffffffffffff - 1, int.parse("-0x8000000000000000"));
  Expect.equals(1 << 63, int.parse("0x8000000000000000"));

  Expect.equals(8999999999999999999, int.parse("8999999999999999999"));
  Expect.equals(-8999999999999999999, int.parse("-8999999999999999999"));
  Expect.equals(9223372036854775807, int.parse("9223372036854775807"));
  Expect.equals(-9223372036854775807, int.parse("-9223372036854775807"));
  Expect.equals(-9223372036854775807 - 1, int.parse("-9223372036854775808"));

  Expect.throws(() => int.parse("-0x8000000000000001"));
  Expect.throws(() => int.parse("9223372036854775808"));
  Expect.throws(() => int.parse("9223372036854775809"));
  Expect.throws(() => int.parse("-9223372036854775809"));
  Expect.throws(() => int.parse("10000000000000000000"));

  Expect.equals(
      0x7fffffffffffffff,
      int.parse(
          "111111111111111111111111111111111111111111111111111111111111111",
          radix: 2));
  Expect.equals(
      -0x7fffffffffffffff,
      int.parse(
          "-111111111111111111111111111111111111111111111111111111111111111",
          radix: 2));
  Expect.equals(
      -0x7fffffffffffffff - 1,
      int.parse(
          "-1000000000000000000000000000000000000000000000000000000000000000",
          radix: 2));

  Expect.throws(() => int.parse(
      "1000000000000000000000000000000000000000000000000000000000000000",
      radix: 2));
  Expect.throws(() => int.parse(
      "1111111111111111111111111111111111111111111111111111111111111110",
      radix: 2));
  Expect.throws(() => int.parse(
      "1111111111111111111111111111111111111111111111111111111111111111",
      radix: 2));
  Expect.throws(() => int.parse(
      "-1000000000000000000000000000000000000000000000000000000000000001",
      radix: 2));
}
