| 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));
|
| + }
|
| + }
|
| +}
|
|
|