// Copyright (c) 2011, 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  abstract double truncateToDouble()
/// Returns the integer obtained by discarding any fractional digits from this.
/// @description Checks that [:truncateToDouble():] does not change the object.
/// @author msyabro

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

check(double d) {
  double oldVal = d;
  d.truncateToDouble();
  Expect.equals(oldVal, d);
}

main() {
  check(.0);
  check(.1);
  check(1.0);
  check(33.333);
  check(4.9406564584124654e-324);  // min subnormal
  check(2.2250738585072014e-308);  // min normal
  check(1.7976931348623157e308);  // max normal
}
