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 23658055: 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
14 testMin() { 30 testMin() {
15 testMin1(); 31 testMin1();
16 testMin2(); 32 testMin2();
17 testMin3(); 33 testMin3();
34 testMinChecks();
18 } 35 }
19 36
20 testMin1() { 37 testMin1() {
21 Expect.equals(0, min(0, 2)); 38 Expect.equals(0, min(0, 2));
22 Expect.equals(0, min(2, 0)); 39 Expect.equals(0, min(2, 0));
23 40
24 Expect.equals(-10, min(-10, -9)); 41 Expect.equals(-10, min(-10, -9));
25 Expect.equals(-10, min(-10, 9)); 42 Expect.equals(-10, min(-10, 9));
26 Expect.equals(-10, min(-10, 0)); 43 Expect.equals(-10, min(-10, 0));
27 Expect.equals(-10, min(-9, -10)); 44 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); 289 Expect.isTrue(min(inf, -499.0).isNegative);
273 Expect.isTrue(min(inf, -499).isNegative); 290 Expect.isTrue(min(inf, -499).isNegative);
274 Expect.isTrue(min(inf, -0.0).isNegative); 291 Expect.isTrue(min(inf, -0.0).isNegative);
275 Expect.isFalse(min(inf, 0.0).isNegative); 292 Expect.isFalse(min(inf, 0.0).isNegative);
276 Expect.isFalse(min(inf, 0).isNegative); 293 Expect.isFalse(min(inf, 0).isNegative);
277 Expect.isFalse(min(inf, 499).isNegative); 294 Expect.isFalse(min(inf, 499).isNegative);
278 Expect.isFalse(min(inf, 499.0).isNegative); 295 Expect.isFalse(min(inf, 499.0).isNegative);
279 Expect.isFalse(min(inf, inf).isNegative); 296 Expect.isFalse(min(inf, inf).isNegative);
280 } 297 }
281 298
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
282 testMax() { 306 testMax() {
283 testMax1(); 307 testMax1();
284 testMax2(); 308 testMax2();
285 testMax3(); 309 testMax3();
310 testMaxChecks();
286 } 311 }
287 312
288 testMax1() { 313 testMax1() {
289 Expect.equals(2, max(0, 2)); 314 Expect.equals(2, max(0, 2));
290 Expect.equals(2, max(2, 0)); 315 Expect.equals(2, max(2, 0));
291 316
292 Expect.equals(-9, max(-10, -9)); 317 Expect.equals(-9, max(-10, -9));
293 Expect.equals(9, max(-10, 9)); 318 Expect.equals(9, max(-10, 9));
294 Expect.equals(0, max(-10, 0)); 319 Expect.equals(0, max(-10, 0));
295 Expect.equals(-9, max(-9, -10)); 320 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); 555 Expect.isTrue(max(-inf, -inf) is double);
531 556
532 Expect.isFalse(max(-inf, 0.0).isNegative); 557 Expect.isFalse(max(-inf, 0.0).isNegative);
533 Expect.isFalse(max(-inf, 0).isNegative); 558 Expect.isFalse(max(-inf, 0).isNegative);
534 Expect.isTrue(max(-inf, -0.0).isNegative); 559 Expect.isTrue(max(-inf, -0.0).isNegative);
535 Expect.isTrue(max(-inf, -499).isNegative); 560 Expect.isTrue(max(-inf, -499).isNegative);
536 Expect.isTrue(max(-inf, -499.0).isNegative); 561 Expect.isTrue(max(-inf, -499.0).isNegative);
537 Expect.isTrue(max(-inf, -inf).isNegative); 562 Expect.isTrue(max(-inf, -inf).isNegative);
538 } 563 }
539 564
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
540 main() { 572 main() {
541 testMin(); 573 testMin();
542 testMin(); 574 testMin();
543 testMax(); 575 testMax();
544 testMax(); 576 testMax();
545 } 577 }
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