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

// VMOptions=--intrinsify
// VMOptions=--no_intrinsify

import 'package:expect/expect.dart';

main() {
  for (int x in [0, 1, 0xffff, 0xffffffff, 0x111111111111, 0xffffffffffff]) {
    test(x);
    test(-x);
  }

  // Test with ints outside the 53-bit range that are known to have an
  // exact double representation.
  test(9007199254840856);
  test(144115188075954880);
  test(936748722493162112);
}

test(int x) {
  Expect.equals(x, x.toDouble().toInt(), "bad test argument ($x)");
  Expect.equals(x.hashCode, x.toDouble().hashCode);
}
