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

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

Issue 24911003: 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 }
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
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
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 }
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