// Copyright (c) 2012, 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 test for testing Math.min and Math.max.

// @dart = 2.9

import "package:expect/expect.dart";

negate(x) => -x;

main() {
  // Test matrix:
  // -inf < -499.0 == -499 < -0.0 < 0.0 == 0 < 499.0 == 499 < +inf < -NaN, NaN.
  var inf = double.infinity;
  var nan = double.nan;
  var mnan = negate(nan);

  Expect.equals(0, (-inf).compareTo(-inf));
  Expect.equals(-1, (-inf).compareTo(-499.0));
  Expect.equals(-1, (-inf).compareTo(-499));
  Expect.equals(-1, (-inf).compareTo(-0.0));
  Expect.equals(-1, (-inf).compareTo(0));
  Expect.equals(-1, (-inf).compareTo(0.0));
  Expect.equals(-1, (-inf).compareTo(499.0));
  Expect.equals(-1, (-inf).compareTo(499));
  Expect.equals(-1, (-inf).compareTo(inf));
  Expect.equals(-1, (-inf).compareTo(nan));
  Expect.equals(-1, (-inf).compareTo(mnan));

  Expect.equals(1, (-499.0).compareTo(-inf));
  Expect.equals(0, (-499.0).compareTo(-499.0));
  Expect.equals(0, (-499.0).compareTo(-499));
  Expect.equals(-1, (-499.0).compareTo(-0.0));
  Expect.equals(-1, (-499.0).compareTo(0));
  Expect.equals(-1, (-499.0).compareTo(0.0));
  Expect.equals(-1, (-499.0).compareTo(499.0));
  Expect.equals(-1, (-499.0).compareTo(499));
  Expect.equals(-1, (-499.0).compareTo(inf));
  Expect.equals(-1, (-499.0).compareTo(nan));
  Expect.equals(-1, (-499.0).compareTo(mnan));

  Expect.equals(1, (-499).compareTo(-inf));
  Expect.equals(0, (-499).compareTo(-499.0));
  Expect.equals(0, (-499).compareTo(-499));
  Expect.equals(-1, (-499).compareTo(-0.0));
  Expect.equals(-1, (-499).compareTo(0));
  Expect.equals(-1, (-499).compareTo(0.0));
  Expect.equals(-1, (-499).compareTo(499.0));
  Expect.equals(-1, (-499).compareTo(499));
  Expect.equals(-1, (-499).compareTo(inf));
  Expect.equals(-1, (-499).compareTo(nan));
  Expect.equals(-1, (-499).compareTo(mnan));

  Expect.equals(1, (-0.0).compareTo(-inf));
  Expect.equals(1, (-0.0).compareTo(-499.0));
  Expect.equals(1, (-0.0).compareTo(-499));
  Expect.equals(0, (-0.0).compareTo(-0.0));
  Expect.equals(-1, (-0.0).compareTo(0));
  Expect.equals(-1, (-0.0).compareTo(0.0));
  Expect.equals(-1, (-0.0).compareTo(499.0));
  Expect.equals(-1, (-0.0).compareTo(499));
  Expect.equals(-1, (-0.0).compareTo(inf));
  Expect.equals(-1, (-0.0).compareTo(nan));
  Expect.equals(-1, (-0.0).compareTo(mnan));

  Expect.equals(1, (0).compareTo(-inf));
  Expect.equals(1, (0).compareTo(-499.0));
  Expect.equals(1, (0).compareTo(-499));
  Expect.equals(1, (0).compareTo(-0.0));
  Expect.equals(0, (0).compareTo(0));
  Expect.equals(0, (0).compareTo(0.0));
  Expect.equals(-1, (0).compareTo(499.0));
  Expect.equals(-1, (0).compareTo(499));
  Expect.equals(-1, (0).compareTo(inf));
  Expect.equals(-1, (0).compareTo(nan));
  Expect.equals(-1, (0).compareTo(mnan));

  Expect.equals(1, (0.0).compareTo(-inf));
  Expect.equals(1, (0.0).compareTo(-499.0));
  Expect.equals(1, (0.0).compareTo(-499));
  Expect.equals(1, (0.0).compareTo(-0.0));
  Expect.equals(0, (0.0).compareTo(0));
  Expect.equals(0, (0.0).compareTo(0.0));
  Expect.equals(-1, (0.0).compareTo(499.0));
  Expect.equals(-1, (0.0).compareTo(499));
  Expect.equals(-1, (0.0).compareTo(inf));
  Expect.equals(-1, (0.0).compareTo(nan));
  Expect.equals(-1, (0.0).compareTo(mnan));

  Expect.equals(1, (499.0).compareTo(-inf));
  Expect.equals(1, (499.0).compareTo(-499.0));
  Expect.equals(1, (499.0).compareTo(-499));
  Expect.equals(1, (499.0).compareTo(-0.0));
  Expect.equals(1, (499.0).compareTo(0));
  Expect.equals(1, (499.0).compareTo(0.0));
  Expect.equals(0, (499.0).compareTo(499.0));
  Expect.equals(0, (499.0).compareTo(499));
  Expect.equals(-1, (499.0).compareTo(inf));
  Expect.equals(-1, (499.0).compareTo(nan));
  Expect.equals(-1, (499.0).compareTo(mnan));

  Expect.equals(1, (499).compareTo(-inf));
  Expect.equals(1, (499).compareTo(-499.0));
  Expect.equals(1, (499).compareTo(-499));
  Expect.equals(1, (499).compareTo(-0.0));
  Expect.equals(1, (499).compareTo(0));
  Expect.equals(1, (499).compareTo(0.0));
  Expect.equals(0, (499).compareTo(499.0));
  Expect.equals(0, (499).compareTo(499));
  Expect.equals(-1, (499).compareTo(inf));
  Expect.equals(-1, (499).compareTo(nan));
  Expect.equals(-1, (499).compareTo(mnan));

  Expect.equals(1, inf.compareTo(-inf));
  Expect.equals(1, inf.compareTo(-499.0));
  Expect.equals(1, inf.compareTo(-499));
  Expect.equals(1, inf.compareTo(-0.0));
  Expect.equals(1, inf.compareTo(0));
  Expect.equals(1, inf.compareTo(0.0));
  Expect.equals(1, inf.compareTo(499.0));
  Expect.equals(1, inf.compareTo(499));
  Expect.equals(0, inf.compareTo(inf));
  Expect.equals(-1, inf.compareTo(nan));
  Expect.equals(-1, inf.compareTo(mnan));

  Expect.equals(1, nan.compareTo(-inf));
  Expect.equals(1, nan.compareTo(-499.0));
  Expect.equals(1, nan.compareTo(-499));
  Expect.equals(1, nan.compareTo(-0.0));
  Expect.equals(1, nan.compareTo(0));
  Expect.equals(1, nan.compareTo(0.0));
  Expect.equals(1, nan.compareTo(499.0));
  Expect.equals(1, nan.compareTo(499));
  Expect.equals(1, nan.compareTo(inf));
  Expect.equals(0, nan.compareTo(nan));
  Expect.equals(0, nan.compareTo(mnan));
}
