| Index: tests/corelib/compare_to2_test.dart | 
| diff --git a/tests/corelib/compare_to2_test.dart b/tests/corelib/compare_to2_test.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..8100fc46b61c5f9f7200e7415a00c9129c957103 | 
| --- /dev/null | 
| +++ b/tests/corelib/compare_to2_test.dart | 
| @@ -0,0 +1,90 @@ | 
| +// 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. | 
| + | 
| +negate(x) => -x; | 
| + | 
| +main() { | 
| +  // Test matrix: | 
| +  var minNonZero = 5e-324; | 
| +  var maxDenormal = 2.225073858507201e-308; | 
| +  var minNormal = 2.2250738585072014e-308; | 
| +  var maxFraction = 0.9999999999999999; | 
| +  var minAbove1 = 1.0000000000000002; | 
| +  var maxNonInt = 4503599627370495.5; | 
| +  var maxNonIntFloorAsDouble = maxNonInt.floor(); | 
| +  var maxNonIntFloorAsInt = maxNonIntFloorAsDouble.toInt(); | 
| +  var maxExactIntAsDouble = 9007199254740992.0; | 
| +  var maxExactIntAsInt = 9007199254740992; | 
| +  var two53 = 1 << 53;  // Same as maxExactIntAsInt. | 
| +  var two53p1 = two53 + 1; | 
| +  var maxFiniteAsDouble = 1.7976931348623157e+308; | 
| +  var maxFiniteAsInt = maxFiniteAsDouble.toInt(); | 
| +  int huge = 1 << 2000; | 
| +  int hugeP1 = huge + 1; | 
| +  var inf = double.INFINITY; | 
| +  var nan = double.NAN; | 
| +  var mnan = negate(nan); | 
| +  var matrix = [ | 
| +      -inf, | 
| +      -hugeP1, | 
| +      -huge, | 
| +      [-maxFiniteAsDouble, -maxFiniteAsInt], | 
| +      -two53p1, | 
| +      [-two53, -maxExactIntAsInt, -maxExactIntAsDouble], | 
| +      -maxNonInt, | 
| +      [-maxNonIntFloorAsDouble, -maxNonIntFloorAsInt], | 
| +      [-499.0, -499], | 
| +      -minAbove1, | 
| +      [-1.0, -1], | 
| +      -maxFraction, | 
| +      -minNormal, | 
| +      -maxDenormal, | 
| +      -minNonZero, | 
| +      -0.0, | 
| +      [0,0, 0], | 
| +      minNonZero, | 
| +      maxDenormal, | 
| +      minNormal, | 
| +      maxFraction, | 
| +      [1.0, 1], | 
| +      minAbove1, | 
| +      [499.0, 499], | 
| +      [maxNonIntFloorAsDouble, maxNonIntFloorAsInt], | 
| +      maxNonInt, | 
| +      [two53, maxExactIntAsInt, maxExactIntAsDouble], | 
| +      two53p1, | 
| +      [maxFiniteAsDouble, maxFiniteAsInt], | 
| +      huge, | 
| +      hugeP1, | 
| +      inf, | 
| +      [nan, mnan], | 
| +    ]; | 
| + | 
| +  check(left, right, expectedResult) { | 
| +    if (left is List) { | 
| +      for(var x in left) check(x, right, expectedResult); | 
| +      return; | 
| +    } | 
| +    if (right is List) { | 
| +      for(var x in right) check(left, x, expectedResult); | 
| +      return; | 
| +    } | 
| +    int actual = left.compareTo(right); | 
| +    Expect.equals(expectedResult, actual, | 
| +                  "($left).compareTo($right) failed " | 
| +                  "(should have been $expectedResult, was $actual"); | 
| +  } | 
| + | 
| +  for (int i = 0; i < matrix.length; i++) { | 
| +    for (int j = 0; j < matrix.length; j++) { | 
| +      var left = matrix[i]; | 
| +      var right = matrix[j]; | 
| +      if (left is List) { | 
| +        check(left, left, 0); | 
| +      } | 
| +      check(left, right, i == j ? 0 : (i < j ? -1 : 1)); | 
| +    } | 
| +  } | 
| +} | 
|  |