// 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 int compareTo(Comparable other)
/// ...
/// For ordering, the double NaN value is considered equal to itself, and greater
/// than any numeric value
/// @description Checks that NaN is greater than any other value
/// @author pagolubev

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


main() {
  double nan = double.nan;

  List values = [
    0.0,
    double.infinity,
    double.maxFinite,
    2.2250738585072014e-308, // min normal
    4.9406564584124654e-324 // min
  ];

  values.forEach((val) {
    Expect.isTrue(nan.compareTo(val) > 0);
    Expect.isTrue(val.compareTo(nan) < 0);
  });

  Expect.equals(nan.compareTo(nan), 0);
  Expect.equals(nan.compareTo(-nan), 0);
}
