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 // VMOptions=--optimization-counter-threshold=10 --no-background-compilation | |
6 | |
7 library min_max_test; | |
8 | |
9 import "package:expect/expect.dart"; | |
10 import 'dart:math'; | |
11 | |
12 var inf = double.INFINITY; | |
13 var nan = double.NAN; | |
14 | |
15 // A class that might work if [min] and [max] worked for non-numbers. | |
16 class Wrap implements Comparable { | |
17 final value; | |
18 Wrap(this.value); | |
19 int compareTo(Wrap other) => value.compareTo(other.value); | |
20 bool operator <(Wrap other) => compareTo(other) < 0; | |
21 bool operator <=(Wrap other) => compareTo(other) <= 0; | |
22 bool operator >(Wrap other) => compareTo(other) > 0; | |
23 bool operator >=(Wrap other) => compareTo(other) >= 0; | |
24 bool operator ==(other) => other is Wrap && compareTo(other) == 0; | |
25 String toString() => 'Wrap($value)'; | |
26 int get hashCode => value.hashCode; | |
27 } | |
28 | |
29 var wrap1 = new Wrap(1); | |
30 var wrap2 = new Wrap(2); | |
31 | |
32 testMin() { | |
33 testMin1(); | |
34 testMin2(); | |
35 testMin3(); | |
36 testMinChecks(); | |
37 } | |
38 | |
39 testMin1() { | |
40 Expect.equals(0, min(0, 2)); | |
41 Expect.equals(0, min(2, 0)); | |
42 | |
43 Expect.equals(-10, min(-10, -9)); | |
44 Expect.equals(-10, min(-10, 9)); | |
45 Expect.equals(-10, min(-10, 0)); | |
46 Expect.equals(-10, min(-9, -10)); | |
47 Expect.equals(-10, min(9, -10)); | |
48 Expect.equals(-10, min(0, -10)); | |
49 | |
50 Expect.equals(0.5, min(0.5, 2.5)); | |
51 Expect.equals(0.5, min(2.5, 0.5)); | |
52 | |
53 Expect.equals(-10.5, min(-10.5, -9.5)); | |
54 Expect.equals(-10.5, min(-10.5, 9.5)); | |
55 Expect.equals(-10.5, min(-10.5, 0.5)); | |
56 Expect.equals(-10.5, min(-9.5, -10.5)); | |
57 Expect.equals(-10.5, min(9.5, -10.5)); | |
58 Expect.equals(-10.5, min(0.5, -10.5)); | |
59 // Test matrix: | |
60 // NaN, -infinity, -499.0, -499, -0.0, 0.0, 0, 499.0, 499, +infinity. | |
61 | |
62 Expect.isTrue(min(nan, nan).isNaN); | |
63 Expect.isTrue(min(nan, -inf).isNaN); | |
64 Expect.isTrue(min(nan, -499.0).isNaN); | |
65 Expect.isTrue(min(nan, -499).isNaN); | |
66 Expect.isTrue(min(nan, -0.0).isNaN); | |
67 Expect.isTrue(min(nan, 0.0).isNaN); | |
68 Expect.isTrue(min(nan, 499.0).isNaN); | |
69 Expect.isTrue(min(nan, 499).isNaN); | |
70 Expect.isTrue(min(nan, inf).isNaN); | |
71 | |
72 Expect.equals(-inf, min(-inf, -inf)); | |
73 Expect.equals(-inf, min(-inf, -499.0)); | |
74 Expect.equals(-inf, min(-inf, -499)); | |
75 Expect.equals(-inf, min(-inf, -0.0)); | |
76 Expect.equals(-inf, min(-inf, 0.0)); | |
77 Expect.equals(-inf, min(-inf, 0)); | |
78 Expect.equals(-inf, min(-inf, 499)); | |
79 Expect.equals(-inf, min(-inf, 499.0)); | |
80 Expect.equals(-inf, min(-inf, inf)); | |
81 Expect.isTrue(min(-inf, nan).isNaN); | |
82 | |
83 Expect.equals(-inf, min(-499.0, -inf)); | |
84 Expect.equals(-499.0, min(-499.0, -499.0)); | |
85 Expect.equals(-499.0, min(-499.0, -499)); | |
86 Expect.equals(-499.0, min(-499.0, -0.0)); | |
87 Expect.equals(-499.0, min(-499.0, 0.0)); | |
88 Expect.equals(-499.0, min(-499.0, 0)); | |
89 Expect.equals(-499.0, min(-499.0, 499.0)); | |
90 Expect.equals(-499.0, min(-499.0, 499)); | |
91 Expect.equals(-499.0, min(-499.0, inf)); | |
92 Expect.isTrue(min(-499.0, nan).isNaN); | |
93 | |
94 Expect.isTrue(min(-499.0, -499.0) is double); | |
95 Expect.isTrue(min(-499.0, -499) is double); | |
96 Expect.isTrue(min(-499.0, -0.0) is double); | |
97 Expect.isTrue(min(-499.0, 0.0) is double); | |
98 Expect.isTrue(min(-499.0, 0) is double); | |
99 Expect.isTrue(min(-499.0, 499.0) is double); | |
100 Expect.isTrue(min(-499.0, 499) is double); | |
101 Expect.isTrue(min(-499.0, inf) is double); | |
102 | |
103 Expect.equals(-inf, min(-499, -inf)); | |
104 Expect.equals(-499, min(-499, -499.0)); | |
105 Expect.equals(-499, min(-499, -499)); | |
106 Expect.equals(-499, min(-499, -0.0)); | |
107 Expect.equals(-499, min(-499, 0.0)); | |
108 Expect.equals(-499, min(-499, 0)); | |
109 Expect.equals(-499, min(-499, 499.0)); | |
110 Expect.equals(-499, min(-499, 499)); | |
111 Expect.equals(-499, min(-499, inf)); | |
112 Expect.isTrue(min(-499, nan).isNaN); | |
113 | |
114 Expect.isTrue(min(-499, -499.0) is int); | |
115 Expect.isTrue(min(-499, -499) is int); | |
116 Expect.isTrue(min(-499, -0.0) is int); | |
117 Expect.isTrue(min(-499, 0.0) is int); | |
118 Expect.isTrue(min(-499, 0) is int); | |
119 Expect.isTrue(min(-499, 499.0) is int); | |
120 Expect.isTrue(min(-499, 499) is int); | |
121 Expect.isTrue(min(-499, inf) is int); | |
122 | |
123 Expect.equals(-inf, min(-0.0, -inf)); | |
124 Expect.equals(-499.0, min(-0.0, -499.0)); | |
125 Expect.equals(-499, min(-0.0, -499)); | |
126 Expect.equals(-0.0, min(-0.0, -0.0)); | |
127 Expect.equals(-0.0, min(-0.0, 0.0)); | |
128 Expect.equals(-0.0, min(-0.0, 0)); | |
129 Expect.equals(-0.0, min(-0.0, 499.0)); | |
130 Expect.equals(-0.0, min(-0.0, 499)); | |
131 Expect.equals(-0.0, min(-0.0, inf)); | |
132 Expect.isTrue(min(-0.0, nan).isNaN); | |
133 } | |
134 | |
135 testMin2() { | |
136 Expect.isTrue(min(-0.0, -499.0) is double); | |
137 Expect.isTrue(min(-0.0, -499) is int); | |
138 Expect.isTrue(min(-0.0, -0.0) is double); | |
139 Expect.isTrue(min(-0.0, 0.0) is double); | |
140 Expect.isTrue(min(-0.0, 0) is double); | |
141 Expect.isTrue(min(-0.0, 499.0) is double); | |
142 Expect.isTrue(min(-0.0, 499) is double); | |
143 Expect.isTrue(min(-0.0, inf) is double); | |
144 | |
145 Expect.isTrue(min(-0.0, -499.0).isNegative); | |
146 Expect.isTrue(min(-0.0, -499).isNegative); | |
147 Expect.isTrue(min(-0.0, -0.0).isNegative); | |
148 Expect.isTrue(min(-0.0, 0.0).isNegative); | |
149 Expect.isTrue(min(-0.0, 0).isNegative); | |
150 Expect.isTrue(min(-0.0, 499.0).isNegative); | |
151 Expect.isTrue(min(-0.0, 499).isNegative); | |
152 Expect.isTrue(min(-0.0, inf).isNegative); | |
153 | |
154 Expect.equals(-inf, min(0.0, -inf)); | |
155 Expect.equals(-499.0, min(0.0, -499.0)); | |
156 Expect.equals(-499, min(0.0, -499)); | |
157 Expect.equals(-0.0, min(0.0, -0.0)); | |
158 Expect.equals(0.0, min(0.0, 0.0)); | |
159 Expect.equals(0.0, min(0.0, 0)); | |
160 Expect.equals(0.0, min(0.0, 499.0)); | |
161 Expect.equals(0.0, min(0.0, 499)); | |
162 Expect.equals(0.0, min(0.0, inf)); | |
163 Expect.isTrue(min(0.0, nan).isNaN); | |
164 | |
165 Expect.isTrue(min(0.0, -499.0) is double); | |
166 Expect.isTrue(min(0.0, -499) is int); | |
167 Expect.isTrue(min(0.0, -0.0) is double); | |
168 Expect.isTrue(min(0.0, 0.0) is double); | |
169 Expect.isTrue(min(0.0, 0) is double); | |
170 Expect.isTrue(min(0.0, 499.0) is double); | |
171 Expect.isTrue(min(0.0, 499) is double); | |
172 Expect.isTrue(min(0.0, inf) is double); | |
173 | |
174 Expect.isTrue(min(0.0, -499.0).isNegative); | |
175 Expect.isTrue(min(0.0, -499).isNegative); | |
176 Expect.isTrue(min(0.0, -0.0).isNegative); | |
177 Expect.isFalse(min(0.0, 0.0).isNegative); | |
178 Expect.isFalse(min(0.0, 0).isNegative); | |
179 Expect.isFalse(min(0.0, 499.0).isNegative); | |
180 Expect.isFalse(min(0.0, 499).isNegative); | |
181 Expect.isFalse(min(0.0, inf).isNegative); | |
182 | |
183 Expect.equals(-inf, min(0, -inf)); | |
184 Expect.equals(-499.0, min(0, -499.0)); | |
185 Expect.equals(-499, min(0, -499)); | |
186 Expect.equals(-0.0, min(0, -0.0)); | |
187 Expect.equals(0, min(0, 0.0)); | |
188 Expect.equals(0, min(0, 0)); | |
189 Expect.equals(0, min(0, 499.0)); | |
190 Expect.equals(0, min(0, 499)); | |
191 Expect.equals(0, min(0, inf)); | |
192 Expect.isTrue(min(0, nan).isNaN); | |
193 | |
194 Expect.isTrue(min(0, -499.0) is double); | |
195 Expect.isTrue(min(0, -499) is int); | |
196 Expect.isTrue(min(0, -0.0) is double); | |
197 Expect.isTrue(min(0, 0.0) is int); | |
198 Expect.isTrue(min(0, 0) is int); | |
199 Expect.isTrue(min(0, 499.0) is int); | |
200 Expect.isTrue(min(0, 499) is int); | |
201 Expect.isTrue(min(0, inf) is int); | |
202 Expect.isTrue(min(0, -499.0).isNegative); | |
203 Expect.isTrue(min(0, -499).isNegative); | |
204 Expect.isTrue(min(0, -0.0).isNegative); | |
205 Expect.isFalse(min(0, 0.0).isNegative); | |
206 Expect.isFalse(min(0, 0).isNegative); | |
207 Expect.isFalse(min(0, 499.0).isNegative); | |
208 Expect.isFalse(min(0, 499).isNegative); | |
209 Expect.isFalse(min(0, inf).isNegative); | |
210 } | |
211 | |
212 testMin3() { | |
213 Expect.equals(-inf, min(499.0, -inf)); | |
214 Expect.equals(-499.0, min(499.0, -499.0)); | |
215 Expect.equals(-499, min(499.0, -499)); | |
216 Expect.equals(-0.0, min(499.0, -0.0)); | |
217 Expect.equals(0.0, min(499.0, 0.0)); | |
218 Expect.equals(0, min(499.0, 0)); | |
219 Expect.equals(499.0, min(499.0, 499.0)); | |
220 Expect.equals(499.0, min(499.0, 499)); | |
221 Expect.equals(499.0, min(499.0, inf)); | |
222 Expect.isTrue(min(499.0, nan).isNaN); | |
223 | |
224 Expect.isTrue(min(499.0, -499.0) is double); | |
225 Expect.isTrue(min(499.0, -499) is int); | |
226 Expect.isTrue(min(499.0, -0.0) is double); | |
227 Expect.isTrue(min(499.0, 0.0) is double); | |
228 Expect.isTrue(min(499.0, 0) is int); | |
229 Expect.isTrue(min(499.0, 499) is double); | |
230 Expect.isTrue(min(499.0, 499.0) is double); | |
231 Expect.isTrue(min(499.0, inf) is double); | |
232 | |
233 Expect.isTrue(min(499.0, -499.0).isNegative); | |
234 Expect.isTrue(min(499.0, -499).isNegative); | |
235 Expect.isTrue(min(499.0, -0.0).isNegative); | |
236 Expect.isFalse(min(499.0, 0.0).isNegative); | |
237 Expect.isFalse(min(499.0, 0).isNegative); | |
238 Expect.isFalse(min(499.0, 499).isNegative); | |
239 Expect.isFalse(min(499.0, 499.0).isNegative); | |
240 Expect.isFalse(min(499.0, inf).isNegative); | |
241 | |
242 Expect.equals(-inf, min(499, -inf)); | |
243 Expect.equals(-499.0, min(499, -499.0)); | |
244 Expect.equals(-499, min(499, -499)); | |
245 Expect.equals(-0.0, min(499, -0.0)); | |
246 Expect.equals(0.0, min(499, 0.0)); | |
247 Expect.equals(0, min(499, 0)); | |
248 Expect.equals(499, min(499, 499.0)); | |
249 Expect.equals(499, min(499, 499)); | |
250 Expect.equals(499, min(499, inf)); | |
251 Expect.isTrue(min(499, nan).isNaN); | |
252 | |
253 Expect.isTrue(min(499, -499.0) is double); | |
254 Expect.isTrue(min(499, -499) is int); | |
255 Expect.isTrue(min(499, -0.0) is double); | |
256 Expect.isTrue(min(499, 0.0) is double); | |
257 Expect.isTrue(min(499, 0) is int); | |
258 Expect.isTrue(min(499, 499.0) is int); | |
259 Expect.isTrue(min(499, 499) is int); | |
260 Expect.isTrue(min(499, inf) is int); | |
261 | |
262 Expect.isTrue(min(499, -499.0).isNegative); | |
263 Expect.isTrue(min(499, -499).isNegative); | |
264 Expect.isTrue(min(499, -0.0).isNegative); | |
265 Expect.isFalse(min(499, 0.0).isNegative); | |
266 Expect.isFalse(min(499, 0).isNegative); | |
267 Expect.isFalse(min(499, 499.0).isNegative); | |
268 Expect.isFalse(min(499, 499).isNegative); | |
269 Expect.isFalse(min(499, inf).isNegative); | |
270 | |
271 Expect.equals(-inf, min(inf, -inf)); | |
272 Expect.equals(-499.0, min(inf, -499.0)); | |
273 Expect.equals(-499, min(inf, -499)); | |
274 Expect.equals(-0.0, min(inf, -0.0)); | |
275 Expect.equals(0.0, min(inf, 0.0)); | |
276 Expect.equals(0, min(inf, 0)); | |
277 Expect.equals(499.0, min(inf, 499.0)); | |
278 Expect.equals(499, min(inf, 499)); | |
279 Expect.equals(inf, min(inf, inf)); | |
280 Expect.isTrue(min(inf, nan).isNaN); | |
281 | |
282 Expect.isTrue(min(inf, -499.0) is double); | |
283 Expect.isTrue(min(inf, -499) is int); | |
284 Expect.isTrue(min(inf, -0.0) is double); | |
285 Expect.isTrue(min(inf, 0.0) is double); | |
286 Expect.isTrue(min(inf, 0) is int); | |
287 Expect.isTrue(min(inf, 499) is int); | |
288 Expect.isTrue(min(inf, 499.0) is double); | |
289 Expect.isTrue(min(inf, inf) is double); | |
290 | |
291 Expect.isTrue(min(inf, -499.0).isNegative); | |
292 Expect.isTrue(min(inf, -499).isNegative); | |
293 Expect.isTrue(min(inf, -0.0).isNegative); | |
294 Expect.isFalse(min(inf, 0.0).isNegative); | |
295 Expect.isFalse(min(inf, 0).isNegative); | |
296 Expect.isFalse(min(inf, 499).isNegative); | |
297 Expect.isFalse(min(inf, 499.0).isNegative); | |
298 Expect.isFalse(min(inf, inf).isNegative); | |
299 } | |
300 | |
301 testMinChecks() { | |
302 // Min and max work only on numbers. | |
303 // These throw a type assertion or ArgumentError. | |
304 Expect.throws(() => min(wrap1, wrap2)); | |
305 Expect.throws(() => min(wrap1, 0)); | |
306 Expect.throws(() => min(0, wrap2)); | |
307 } | |
308 | |
309 testMax() { | |
310 testMax1(); | |
311 testMax2(); | |
312 testMax3(); | |
313 testMaxChecks(); | |
314 } | |
315 | |
316 testMax1() { | |
317 Expect.equals(2, max(0, 2)); | |
318 Expect.equals(2, max(2, 0)); | |
319 | |
320 Expect.equals(-9, max(-10, -9)); | |
321 Expect.equals(9, max(-10, 9)); | |
322 Expect.equals(0, max(-10, 0)); | |
323 Expect.equals(-9, max(-9, -10)); | |
324 Expect.equals(9, max(9, -10)); | |
325 Expect.equals(0, max(0, -10)); | |
326 | |
327 Expect.equals(2.5, max(0.5, 2.5)); | |
328 Expect.equals(2.5, max(2.5, 0.5)); | |
329 | |
330 Expect.equals(-9.5, max(-10.5, -9.5)); | |
331 Expect.equals(9.5, max(-10.5, 9.5)); | |
332 Expect.equals(0.5, max(-10.5, 0.5)); | |
333 Expect.equals(-9.5, max(-9.5, -10.5)); | |
334 Expect.equals(9.5, max(9.5, -10.5)); | |
335 Expect.equals(0.5, max(0.5, -10.5)); | |
336 | |
337 // Test matrix: | |
338 // NaN, infinity, 499.0, 499, 0.0, 0, -0.0, -499.0, -499, -infinity. | |
339 | |
340 Expect.isTrue(max(nan, nan).isNaN); | |
341 Expect.isTrue(max(nan, -inf).isNaN); | |
342 Expect.isTrue(max(nan, -499.0).isNaN); | |
343 Expect.isTrue(max(nan, -499).isNaN); | |
344 Expect.isTrue(max(nan, -0.0).isNaN); | |
345 Expect.isTrue(max(nan, 0.0).isNaN); | |
346 Expect.isTrue(max(nan, 499.0).isNaN); | |
347 Expect.isTrue(max(nan, 499).isNaN); | |
348 Expect.isTrue(max(nan, inf).isNaN); | |
349 | |
350 Expect.equals(inf, max(inf, inf)); | |
351 Expect.equals(inf, max(inf, 499.0)); | |
352 Expect.equals(inf, max(inf, 499)); | |
353 Expect.equals(inf, max(inf, 0.0)); | |
354 Expect.equals(inf, max(inf, 0)); | |
355 Expect.equals(inf, max(inf, -0.0)); | |
356 Expect.equals(inf, max(inf, -499)); | |
357 Expect.equals(inf, max(inf, -499.0)); | |
358 Expect.equals(inf, max(inf, -inf)); | |
359 Expect.isTrue(max(inf, nan).isNaN); | |
360 | |
361 Expect.equals(inf, max(499.0, inf)); | |
362 Expect.equals(499.0, max(499.0, 499.0)); | |
363 Expect.equals(499.0, max(499.0, 499)); | |
364 Expect.equals(499.0, max(499.0, 0.0)); | |
365 Expect.equals(499.0, max(499.0, 0)); | |
366 Expect.equals(499.0, max(499.0, -0.0)); | |
367 Expect.equals(499.0, max(499.0, -499)); | |
368 Expect.equals(499.0, max(499.0, -499.0)); | |
369 Expect.equals(499.0, max(499.0, -inf)); | |
370 Expect.isTrue(max(499.0, nan).isNaN); | |
371 | |
372 Expect.isTrue(max(499.0, 499.0) is double); | |
373 Expect.isTrue(max(499.0, 499) is double); | |
374 Expect.isTrue(max(499.0, 0.0) is double); | |
375 Expect.isTrue(max(499.0, 0) is double); | |
376 Expect.isTrue(max(499.0, -0.0) is double); | |
377 Expect.isTrue(max(499.0, -499) is double); | |
378 Expect.isTrue(max(499.0, -499.0) is double); | |
379 Expect.isTrue(max(499.0, -inf) is double); | |
380 | |
381 Expect.equals(inf, max(499, inf)); | |
382 Expect.equals(499, max(499, 499.0)); | |
383 Expect.equals(499, max(499, 499)); | |
384 Expect.equals(499, max(499, 0.0)); | |
385 Expect.equals(499, max(499, 0)); | |
386 Expect.equals(499, max(499, -0.0)); | |
387 Expect.equals(499, max(499, -499)); | |
388 Expect.equals(499, max(499, -499.0)); | |
389 Expect.equals(499, max(499, -inf)); | |
390 Expect.isTrue(max(499, nan).isNaN); | |
391 | |
392 Expect.isTrue(max(499, 499.0) is int); | |
393 Expect.isTrue(max(499, 499) is int); | |
394 Expect.isTrue(max(499, 0.0) is int); | |
395 Expect.isTrue(max(499, 0) is int); | |
396 Expect.isTrue(max(499, -0.0) is int); | |
397 Expect.isTrue(max(499, -499) is int); | |
398 Expect.isTrue(max(499, -499.0) is int); | |
399 Expect.isTrue(max(499, -inf) is int); | |
400 | |
401 Expect.equals(inf, max(0.0, inf)); | |
402 Expect.equals(499.0, max(0.0, 499.0)); | |
403 Expect.equals(499, max(0.0, 499)); | |
404 Expect.equals(0.0, max(0.0, 0.0)); | |
405 Expect.equals(0.0, max(0.0, 0)); | |
406 Expect.equals(0.0, max(0.0, -0.0)); | |
407 Expect.equals(0.0, max(0.0, -499)); | |
408 Expect.equals(0.0, max(0.0, -499.0)); | |
409 Expect.equals(0.0, max(0.0, -inf)); | |
410 Expect.isTrue(max(0.0, nan).isNaN); | |
411 | |
412 Expect.isTrue(max(0.0, 499.0) is double); | |
413 Expect.isTrue(max(0.0, 499) is int); | |
414 Expect.isTrue(max(0.0, 0.0) is double); | |
415 Expect.isTrue(max(0.0, 0) is double); | |
416 Expect.isTrue(max(0.0, -0.0) is double); | |
417 Expect.isTrue(max(0.0, -499) is double); | |
418 Expect.isTrue(max(0.0, -499.0) is double); | |
419 Expect.isTrue(max(0.0, -inf) is double); | |
420 } | |
421 | |
422 testMax2() { | |
423 Expect.isFalse(max(0.0, 0.0).isNegative); | |
424 Expect.isFalse(max(0.0, 0).isNegative); | |
425 Expect.isFalse(max(0.0, -0.0).isNegative); | |
426 Expect.isFalse(max(0.0, -499).isNegative); | |
427 Expect.isFalse(max(0.0, -499.0).isNegative); | |
428 Expect.isFalse(max(0.0, -inf).isNegative); | |
429 | |
430 Expect.equals(inf, max(0, inf)); | |
431 Expect.equals(499.0, max(0, 499.0)); | |
432 Expect.equals(499, max(0, 499)); | |
433 Expect.equals(0, max(0, 0.0)); | |
434 Expect.equals(0, max(0, 0)); | |
435 Expect.equals(0, max(0, -0.0)); | |
436 Expect.equals(0, max(0, -499)); | |
437 Expect.equals(0, max(0, -499.0)); | |
438 Expect.equals(0, max(0, -inf)); | |
439 Expect.isTrue(max(0, nan).isNaN); | |
440 | |
441 Expect.isTrue(max(0, 499.0) is double); | |
442 Expect.isTrue(max(0, 499) is int); | |
443 Expect.isTrue(max(0, 0.0) is int); | |
444 Expect.isTrue(max(0, 0) is int); | |
445 Expect.isTrue(max(0, -0.0) is int); | |
446 Expect.isTrue(max(0, -499) is int); | |
447 Expect.isTrue(max(0, -499.0) is int); | |
448 Expect.isTrue(max(0, -inf) is int); | |
449 | |
450 Expect.isFalse(max(0, 0.0).isNegative); | |
451 Expect.isFalse(max(0, 0).isNegative); | |
452 Expect.isFalse(max(0, -0.0).isNegative); | |
453 Expect.isFalse(max(0, -499).isNegative); | |
454 Expect.isFalse(max(0, -499.0).isNegative); | |
455 Expect.isFalse(max(0, -inf).isNegative); | |
456 | |
457 Expect.equals(inf, max(-0.0, inf)); | |
458 Expect.equals(499.0, max(-0.0, 499.0)); | |
459 Expect.equals(499, max(-0.0, 499)); | |
460 Expect.equals(0.0, max(-0.0, 0.0)); | |
461 Expect.equals(0.0, max(-0.0, 0)); | |
462 Expect.equals(-0.0, max(-0.0, -0.0)); | |
463 Expect.equals(-0.0, max(-0.0, -499)); | |
464 Expect.equals(-0.0, max(-0.0, -499.0)); | |
465 Expect.equals(-0.0, max(-0.0, -inf)); | |
466 Expect.isTrue(max(-0.0, nan).isNaN); | |
467 | |
468 Expect.isTrue(max(-0.0, 499.0) is double); | |
469 Expect.isTrue(max(-0.0, 499) is int); | |
470 Expect.isTrue(max(-0.0, 0.0) is double); | |
471 Expect.isTrue(max(-0.0, 0) is int); | |
472 Expect.isTrue(max(-0.0, -0.0) is double); | |
473 Expect.isTrue(max(-0.0, -499) is double); | |
474 Expect.isTrue(max(-0.0, -499.0) is double); | |
475 Expect.isTrue(max(-0.0, -inf) is double); | |
476 } | |
477 | |
478 testMax3() { | |
479 Expect.isFalse(max(-0.0, 0.0).isNegative); | |
480 Expect.isFalse(max(-0.0, 0).isNegative); | |
481 Expect.isTrue(max(-0.0, -0.0).isNegative); | |
482 Expect.isTrue(max(-0.0, -499).isNegative); | |
483 Expect.isTrue(max(-0.0, -499.0).isNegative); | |
484 Expect.isTrue(max(-0.0, -inf).isNegative); | |
485 | |
486 Expect.equals(inf, max(-499, inf)); | |
487 Expect.equals(499.0, max(-499, 499.0)); | |
488 Expect.equals(499, max(-499, 499)); | |
489 Expect.equals(0.0, max(-499, 0.0)); | |
490 Expect.equals(0.0, max(-499, 0)); | |
491 Expect.equals(-0.0, max(-499, -0.0)); | |
492 Expect.equals(-499, max(-499, -499)); | |
493 Expect.equals(-499, max(-499, -499.0)); | |
494 Expect.equals(-499, max(-499, -inf)); | |
495 Expect.isTrue(max(-499, nan).isNaN); | |
496 | |
497 Expect.isTrue(max(-499, 499.0) is double); | |
498 Expect.isTrue(max(-499, 499) is int); | |
499 Expect.isTrue(max(-499, 0.0) is double); | |
500 Expect.isTrue(max(-499, 0) is int); | |
501 Expect.isTrue(max(-499, -0.0) is double); | |
502 Expect.isTrue(max(-499, -499) is int); | |
503 Expect.isTrue(max(-499, -499.0) is int); | |
504 Expect.isTrue(max(-499, -inf) is int); | |
505 | |
506 Expect.isFalse(max(-499, 0.0).isNegative); | |
507 Expect.isFalse(max(-499, 0).isNegative); | |
508 Expect.isTrue(max(-499, -0.0).isNegative); | |
509 Expect.isTrue(max(-499, -499).isNegative); | |
510 Expect.isTrue(max(-499, -499.0).isNegative); | |
511 Expect.isTrue(max(-499, -inf).isNegative); | |
512 | |
513 Expect.equals(inf, max(-499.0, inf)); | |
514 Expect.equals(499.0, max(-499.0, 499.0)); | |
515 Expect.equals(499, max(-499.0, 499)); | |
516 Expect.equals(0.0, max(-499.0, 0.0)); | |
517 Expect.equals(0.0, max(-499.0, 0)); | |
518 Expect.equals(-0.0, max(-499.0, -0.0)); | |
519 Expect.equals(-499.0, max(-499.0, -499)); | |
520 Expect.equals(-499.0, max(-499.0, -499.0)); | |
521 Expect.equals(-499.0, max(-499.0, -inf)); | |
522 Expect.isTrue(max(-499.0, nan).isNaN); | |
523 | |
524 Expect.isTrue(max(-499.0, 499.0) is double); | |
525 Expect.isTrue(max(-499.0, 499) is int); | |
526 Expect.isTrue(max(-499.0, 0.0) is double); | |
527 Expect.isTrue(max(-499.0, 0) is int); | |
528 Expect.isTrue(max(-499.0, -0.0) is double); | |
529 Expect.isTrue(max(-499.0, -499) is double); | |
530 Expect.isTrue(max(-499.0, -499.0) is double); | |
531 Expect.isTrue(max(-499.0, -inf) is double); | |
532 | |
533 Expect.isFalse(max(-499.0, 0.0).isNegative); | |
534 Expect.isFalse(max(-499.0, 0).isNegative); | |
535 Expect.isTrue(max(-499.0, -0.0).isNegative); | |
536 Expect.isTrue(max(-499.0, -499).isNegative); | |
537 Expect.isTrue(max(-499.0, -499.0).isNegative); | |
538 Expect.isTrue(max(-499.0, -inf).isNegative); | |
539 | |
540 Expect.equals(inf, max(-inf, inf)); | |
541 Expect.equals(499.0, max(-inf, 499.0)); | |
542 Expect.equals(499, max(-inf, 499)); | |
543 Expect.equals(0.0, max(-inf, 0.0)); | |
544 Expect.equals(0.0, max(-inf, 0)); | |
545 Expect.equals(-0.0, max(-inf, -0.0)); | |
546 Expect.equals(-499, max(-inf, -499)); | |
547 Expect.equals(-499.0, max(-inf, -499.0)); | |
548 Expect.equals(-inf, max(-inf, -inf)); | |
549 Expect.isTrue(max(-inf, nan).isNaN); | |
550 | |
551 Expect.isTrue(max(-inf, 499.0) is double); | |
552 Expect.isTrue(max(-inf, 499) is int); | |
553 Expect.isTrue(max(-inf, 0.0) is double); | |
554 Expect.isTrue(max(-inf, 0) is int); | |
555 Expect.isTrue(max(-inf, -0.0) is double); | |
556 Expect.isTrue(max(-inf, -499) is int); | |
557 Expect.isTrue(max(-inf, -499.0) is double); | |
558 Expect.isTrue(max(-inf, -inf) is double); | |
559 | |
560 Expect.isFalse(max(-inf, 0.0).isNegative); | |
561 Expect.isFalse(max(-inf, 0).isNegative); | |
562 Expect.isTrue(max(-inf, -0.0).isNegative); | |
563 Expect.isTrue(max(-inf, -499).isNegative); | |
564 Expect.isTrue(max(-inf, -499.0).isNegative); | |
565 Expect.isTrue(max(-inf, -inf).isNegative); | |
566 } | |
567 | |
568 testMaxChecks() { | |
569 // Min and max work only on numbers. | |
570 // These throw a type assertion or ArgumentError. | |
571 Expect.throws(() => min(wrap1, wrap2)); | |
572 Expect.throws(() => min(wrap1, 0)); | |
573 Expect.throws(() => min(0, wrap2)); | |
574 } | |
575 | |
576 main() { | |
577 testMin(); | |
578 testMin(); | |
579 testMax(); | |
580 testMax(); | |
581 } | |
OLD | NEW |