| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 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 | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 // Dart test for testing Math.min and Math.max. | 4 // Dart test for testing Math.min and Math.max. |
| 5 // VMOptions=--optimization-counter-threshold=10 | 5 // VMOptions=--optimization-counter-threshold=10 |
| 6 | 6 |
| 7 library min_max_test; | 7 library min_max_test; |
| 8 import "package:expect/expect.dart"; | 8 import "package:expect/expect.dart"; |
| 9 import 'dart:math'; | 9 import 'dart:math'; |
| 10 | 10 |
| 11 var inf = double.INFINITY; | 11 var inf = double.INFINITY; |
| 12 var nan = double.NAN; | 12 var nan = double.NAN; |
| 13 | 13 |
| 14 // A class that might work if [min] and [max] worked for non-numbers. | |
| 15 class Wrap implements Comparable { | |
| 16 final value; | |
| 17 Wrap(this.value); | |
| 18 int compare(Wrap other) => value.compare(other.value); | |
| 19 bool operator<(Wrap other) => compare(other) < 0; | |
| 20 bool operator<=(Wrap other) => compare(other) <= 0; | |
| 21 bool operator>(Wrap other) => compare(other) > 0; | |
| 22 bool operator>=(Wrap other) => compare(other) >= 0; | |
| 23 bool operator==(other) => other is Wrap && compare(other) == 0; | |
| 24 String toString() => 'Wrap($value)'; | |
| 25 } | |
| 26 | |
| 27 var wrap1 = new Wrap(1); | |
| 28 var wrap2 = new Wrap(2); | |
| 29 | |
| 30 testMin() { | 14 testMin() { |
| 31 testMin1(); | 15 testMin1(); |
| 32 testMin2(); | 16 testMin2(); |
| 33 testMin3(); | 17 testMin3(); |
| 34 testMinChecks(); | |
| 35 } | 18 } |
| 36 | 19 |
| 37 testMin1() { | 20 testMin1() { |
| 38 Expect.equals(0, min(0, 2)); | 21 Expect.equals(0, min(0, 2)); |
| 39 Expect.equals(0, min(2, 0)); | 22 Expect.equals(0, min(2, 0)); |
| 40 | 23 |
| 41 Expect.equals(-10, min(-10, -9)); | 24 Expect.equals(-10, min(-10, -9)); |
| 42 Expect.equals(-10, min(-10, 9)); | 25 Expect.equals(-10, min(-10, 9)); |
| 43 Expect.equals(-10, min(-10, 0)); | 26 Expect.equals(-10, min(-10, 0)); |
| 44 Expect.equals(-10, min(-9, -10)); | 27 Expect.equals(-10, min(-9, -10)); |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 Expect.isTrue(min(inf, -499.0).isNegative); | 272 Expect.isTrue(min(inf, -499.0).isNegative); |
| 290 Expect.isTrue(min(inf, -499).isNegative); | 273 Expect.isTrue(min(inf, -499).isNegative); |
| 291 Expect.isTrue(min(inf, -0.0).isNegative); | 274 Expect.isTrue(min(inf, -0.0).isNegative); |
| 292 Expect.isFalse(min(inf, 0.0).isNegative); | 275 Expect.isFalse(min(inf, 0.0).isNegative); |
| 293 Expect.isFalse(min(inf, 0).isNegative); | 276 Expect.isFalse(min(inf, 0).isNegative); |
| 294 Expect.isFalse(min(inf, 499).isNegative); | 277 Expect.isFalse(min(inf, 499).isNegative); |
| 295 Expect.isFalse(min(inf, 499.0).isNegative); | 278 Expect.isFalse(min(inf, 499.0).isNegative); |
| 296 Expect.isFalse(min(inf, inf).isNegative); | 279 Expect.isFalse(min(inf, inf).isNegative); |
| 297 } | 280 } |
| 298 | 281 |
| 299 testMinChecks() { | |
| 300 // Min and max work only on numbers. | |
| 301 Expect.throws(() => min(wrap1, wrap2), (e) => e is ArgumentError); | |
| 302 Expect.throws(() => min(wrap1, 0), (e) => e is ArgumentError); | |
| 303 Expect.throws(() => min(0, wrap2), (e) => e is ArgumentError); | |
| 304 } | |
| 305 | |
| 306 testMax() { | 282 testMax() { |
| 307 testMax1(); | 283 testMax1(); |
| 308 testMax2(); | 284 testMax2(); |
| 309 testMax3(); | 285 testMax3(); |
| 310 testMaxChecks(); | |
| 311 } | 286 } |
| 312 | 287 |
| 313 testMax1() { | 288 testMax1() { |
| 314 Expect.equals(2, max(0, 2)); | 289 Expect.equals(2, max(0, 2)); |
| 315 Expect.equals(2, max(2, 0)); | 290 Expect.equals(2, max(2, 0)); |
| 316 | 291 |
| 317 Expect.equals(-9, max(-10, -9)); | 292 Expect.equals(-9, max(-10, -9)); |
| 318 Expect.equals(9, max(-10, 9)); | 293 Expect.equals(9, max(-10, 9)); |
| 319 Expect.equals(0, max(-10, 0)); | 294 Expect.equals(0, max(-10, 0)); |
| 320 Expect.equals(-9, max(-9, -10)); | 295 Expect.equals(-9, max(-9, -10)); |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 Expect.isTrue(max(-inf, -inf) is double); | 530 Expect.isTrue(max(-inf, -inf) is double); |
| 556 | 531 |
| 557 Expect.isFalse(max(-inf, 0.0).isNegative); | 532 Expect.isFalse(max(-inf, 0.0).isNegative); |
| 558 Expect.isFalse(max(-inf, 0).isNegative); | 533 Expect.isFalse(max(-inf, 0).isNegative); |
| 559 Expect.isTrue(max(-inf, -0.0).isNegative); | 534 Expect.isTrue(max(-inf, -0.0).isNegative); |
| 560 Expect.isTrue(max(-inf, -499).isNegative); | 535 Expect.isTrue(max(-inf, -499).isNegative); |
| 561 Expect.isTrue(max(-inf, -499.0).isNegative); | 536 Expect.isTrue(max(-inf, -499.0).isNegative); |
| 562 Expect.isTrue(max(-inf, -inf).isNegative); | 537 Expect.isTrue(max(-inf, -inf).isNegative); |
| 563 } | 538 } |
| 564 | 539 |
| 565 testMaxChecks() { | |
| 566 // Min and max work only on numbers. | |
| 567 Expect.throws(() => min(wrap1, wrap2), (e) => e is ArgumentError); | |
| 568 Expect.throws(() => min(wrap1, 0), (e) => e is ArgumentError); | |
| 569 Expect.throws(() => min(0, wrap2), (e) => e is ArgumentError); | |
| 570 } | |
| 571 | |
| 572 main() { | 540 main() { |
| 573 testMin(); | 541 testMin(); |
| 574 testMin(); | 542 testMin(); |
| 575 testMax(); | 543 testMax(); |
| 576 testMax(); | 544 testMax(); |
| 577 } | 545 } |
| OLD | NEW |