// 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 String toStringAsFixed(int fractionDigits)
/// The parameter fractionDigits must be an integer satisfying:
/// 0 <= fractionDigits <= 20.
/// @description Checks that correct exception is thrown.
/// @author msyabro
/// @issue 42919

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

final List<double> values = const [
   .0,
   4.9406564584124654e-324, // min
   2.2250738585072014e-308, // min normal
   1.7976931348623157e308, // max normal
   .7,
   .9999999999999999,
   1.0,
   1.0000000000000002,
   10.0,
   99.0,
   99.99999999999999,
   100.0,
   100.00000000000001,
   101.0,
   6031769.5,
   4.2949672959999995E9,
   4.294967296E9,
   4.294967296000001E9,
   4.5035996273704955E15,
   4.503599627370496E15,
   4.503599627370497E15,
   3.273390607896142E150,
   1 / 0,
   0 / 0
];

dynamic getNull() => null;

check(double val) {
  Expect.throws(() => val.toStringAsFixed(getNull()), null, "Failed for '$val'");
}

main() {
  values.forEach((double d) {
    check(d);
    check(-d);
  });
}
