Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: tests/lib/math/min_max_test.dart

Issue 24918003: Revert "Revert "Reinstate type checks in Math.min and Math.max"" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sdk/lib/math/math.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 int get hashCode => value.hashCode;
26 }
27
28 var wrap1 = new Wrap(1);
29 var wrap2 = new Wrap(2);
30
14 testMin() { 31 testMin() {
15 testMin1(); 32 testMin1();
16 testMin2(); 33 testMin2();
17 testMin3(); 34 testMin3();
35 testMinChecks();
18 } 36 }
19 37
20 testMin1() { 38 testMin1() {
21 Expect.equals(0, min(0, 2)); 39 Expect.equals(0, min(0, 2));
22 Expect.equals(0, min(2, 0)); 40 Expect.equals(0, min(2, 0));
23 41
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, 9));
26 Expect.equals(-10, min(-10, 0)); 44 Expect.equals(-10, min(-10, 0));
27 Expect.equals(-10, min(-9, -10)); 45 Expect.equals(-10, min(-9, -10));
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 Expect.isTrue(min(inf, -499.0).isNegative); 290 Expect.isTrue(min(inf, -499.0).isNegative);
273 Expect.isTrue(min(inf, -499).isNegative); 291 Expect.isTrue(min(inf, -499).isNegative);
274 Expect.isTrue(min(inf, -0.0).isNegative); 292 Expect.isTrue(min(inf, -0.0).isNegative);
275 Expect.isFalse(min(inf, 0.0).isNegative); 293 Expect.isFalse(min(inf, 0.0).isNegative);
276 Expect.isFalse(min(inf, 0).isNegative); 294 Expect.isFalse(min(inf, 0).isNegative);
277 Expect.isFalse(min(inf, 499).isNegative); 295 Expect.isFalse(min(inf, 499).isNegative);
278 Expect.isFalse(min(inf, 499.0).isNegative); 296 Expect.isFalse(min(inf, 499.0).isNegative);
279 Expect.isFalse(min(inf, inf).isNegative); 297 Expect.isFalse(min(inf, inf).isNegative);
280 } 298 }
281 299
300 testMinChecks() {
301 // Min and max work only on numbers.
302 // These throw a type assertion or ArgumentError.
303 Expect.throws(() => min(wrap1, wrap2));
304 Expect.throws(() => min(wrap1, 0));
305 Expect.throws(() => min(0, wrap2));
306 }
307
282 testMax() { 308 testMax() {
283 testMax1(); 309 testMax1();
284 testMax2(); 310 testMax2();
285 testMax3(); 311 testMax3();
312 testMaxChecks();
286 } 313 }
287 314
288 testMax1() { 315 testMax1() {
289 Expect.equals(2, max(0, 2)); 316 Expect.equals(2, max(0, 2));
290 Expect.equals(2, max(2, 0)); 317 Expect.equals(2, max(2, 0));
291 318
292 Expect.equals(-9, max(-10, -9)); 319 Expect.equals(-9, max(-10, -9));
293 Expect.equals(9, max(-10, 9)); 320 Expect.equals(9, max(-10, 9));
294 Expect.equals(0, max(-10, 0)); 321 Expect.equals(0, max(-10, 0));
295 Expect.equals(-9, max(-9, -10)); 322 Expect.equals(-9, max(-9, -10));
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 Expect.isTrue(max(-inf, -inf) is double); 557 Expect.isTrue(max(-inf, -inf) is double);
531 558
532 Expect.isFalse(max(-inf, 0.0).isNegative); 559 Expect.isFalse(max(-inf, 0.0).isNegative);
533 Expect.isFalse(max(-inf, 0).isNegative); 560 Expect.isFalse(max(-inf, 0).isNegative);
534 Expect.isTrue(max(-inf, -0.0).isNegative); 561 Expect.isTrue(max(-inf, -0.0).isNegative);
535 Expect.isTrue(max(-inf, -499).isNegative); 562 Expect.isTrue(max(-inf, -499).isNegative);
536 Expect.isTrue(max(-inf, -499.0).isNegative); 563 Expect.isTrue(max(-inf, -499.0).isNegative);
537 Expect.isTrue(max(-inf, -inf).isNegative); 564 Expect.isTrue(max(-inf, -inf).isNegative);
538 } 565 }
539 566
567 testMaxChecks() {
568 // Min and max work only on numbers.
569 // These throw a type assertion or ArgumentError.
570 Expect.throws(() => min(wrap1, wrap2));
571 Expect.throws(() => min(wrap1, 0));
572 Expect.throws(() => min(0, wrap2));
573 }
574
540 main() { 575 main() {
541 testMin(); 576 testMin();
542 testMin(); 577 testMin();
543 testMax(); 578 testMax();
544 testMax(); 579 testMax();
545 } 580 }
OLDNEW
« no previous file with comments | « sdk/lib/math/math.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698