| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 // Dart test for testing Math.min and Math.max. | |
| 5 | |
| 6 import "package:expect/expect.dart"; | |
| 7 | |
| 8 negate(x) => -x; | |
| 9 | |
| 10 main() { | |
| 11 // Test matrix: | |
| 12 var minNonZero = 5e-324; | |
| 13 var maxDenormal = 2.225073858507201e-308; | |
| 14 var minNormal = 2.2250738585072014e-308; | |
| 15 var maxFraction = 0.9999999999999999; | |
| 16 var minAbove1 = 1.0000000000000002; | |
| 17 var maxNonInt = 4503599627370495.5; | |
| 18 var maxNonIntFloorAsInt = maxNonInt.floor(); | |
| 19 var maxNonIntFloorAsDouble = maxNonIntFloorAsInt.toDouble(); | |
| 20 var maxExactIntAsDouble = 9007199254740992.0; | |
| 21 var maxExactIntAsInt = 9007199254740992; | |
| 22 var two53 = 1 << 53; // Same as maxExactIntAsInt. | |
| 23 var two53p1 = two53 + 1; | |
| 24 var maxFiniteAsDouble = 1.7976931348623157e+308; | |
| 25 var maxFiniteAsInt = maxFiniteAsDouble.truncate(); | |
| 26 int huge = 1 << 2000; | |
| 27 int hugeP1 = huge + 1; | |
| 28 var inf = double.INFINITY; | |
| 29 var nan = double.NAN; | |
| 30 var mnan = negate(nan); | |
| 31 var matrix = [ | |
| 32 -inf, | |
| 33 -hugeP1, | |
| 34 -huge, | |
| 35 [-maxFiniteAsDouble, -maxFiniteAsInt], | |
| 36 -two53p1, | |
| 37 [-two53, -maxExactIntAsInt, -maxExactIntAsDouble], | |
| 38 -maxNonInt, | |
| 39 [-maxNonIntFloorAsDouble, -maxNonIntFloorAsInt], | |
| 40 [-499.0, -499], | |
| 41 -minAbove1, | |
| 42 [-1.0, -1], | |
| 43 -maxFraction, | |
| 44 -minNormal, | |
| 45 -maxDenormal, | |
| 46 -minNonZero, | |
| 47 -0.0, | |
| 48 [0, 0, 0], | |
| 49 minNonZero, | |
| 50 maxDenormal, | |
| 51 minNormal, | |
| 52 maxFraction, | |
| 53 [1.0, 1], | |
| 54 minAbove1, | |
| 55 [499.0, 499], | |
| 56 [maxNonIntFloorAsDouble, maxNonIntFloorAsInt], | |
| 57 maxNonInt, | |
| 58 [two53, maxExactIntAsInt, maxExactIntAsDouble], | |
| 59 two53p1, | |
| 60 [maxFiniteAsDouble, maxFiniteAsInt], | |
| 61 huge, | |
| 62 hugeP1, | |
| 63 inf, | |
| 64 [nan, mnan], | |
| 65 ]; | |
| 66 | |
| 67 check(left, right, expectedResult) { | |
| 68 if (left is List) { | |
| 69 for (var x in left) check(x, right, expectedResult); | |
| 70 return; | |
| 71 } | |
| 72 if (right is List) { | |
| 73 for (var x in right) check(left, x, expectedResult); | |
| 74 return; | |
| 75 } | |
| 76 int actual = left.compareTo(right); | |
| 77 Expect.equals( | |
| 78 expectedResult, | |
| 79 actual, | |
| 80 "($left).compareTo($right) failed " | |
| 81 "(should have been $expectedResult, was $actual"); | |
| 82 } | |
| 83 | |
| 84 for (int i = 0; i < matrix.length; i++) { | |
| 85 for (int j = 0; j < matrix.length; j++) { | |
| 86 var left = matrix[i]; | |
| 87 var right = matrix[j]; | |
| 88 if (left is List) { | |
| 89 check(left, left, 0); | |
| 90 } | |
| 91 check(left, right, i == j ? 0 : (i < j ? -1 : 1)); | |
| 92 } | |
| 93 } | |
| 94 } | |
| OLD | NEW |