|
1 |
| -import { createConversionChecker } from '../helpers/helpers.js'; |
2 |
| - |
3 | 1 | QUnit.test('Math.clamp', assert => {
|
4 | 2 | const { clamp } = Math;
|
5 | 3 | assert.isFunction(clamp);
|
6 | 4 | assert.name(clamp, 'clamp');
|
7 | 5 | assert.arity(clamp, 3);
|
8 | 6 | assert.looksNative(clamp);
|
9 | 7 | assert.nonEnumerable(Math, 'clamp');
|
| 8 | + |
10 | 9 | assert.same(clamp(2, 4, 6), 4);
|
11 | 10 | assert.same(clamp(4, 2, 6), 4);
|
12 | 11 | assert.same(clamp(6, 2, 4), 4);
|
13 | 12 |
|
14 |
| - const checker1 = createConversionChecker(2); |
15 |
| - const checker2 = createConversionChecker(4); |
16 |
| - const checker3 = createConversionChecker(5); |
17 |
| - assert.same(clamp(checker1, checker2, checker3), 4, 'object wrapper'); |
18 |
| - assert.same(checker1.$valueOf, 1, 'checker1 valueOf calls'); |
19 |
| - assert.same(checker1.$toString, 0, 'checker1 toString calls'); |
20 |
| - assert.same(checker2.$valueOf, 1, 'checker2 valueOf calls'); |
21 |
| - assert.same(checker2.$toString, 0, 'checker2 toString calls'); |
22 |
| - assert.same(checker3.$valueOf, 1, 'checker3 valueOf calls'); |
23 |
| - assert.same(checker3.$toString, 0, 'checker3 toString calls'); |
| 13 | + assert.same(clamp(NaN, 4, 6), NaN, 'If value is NaN, return NaN.'); |
| 14 | + assert.same(clamp(-0, 0, 1), 0, 'If value is -0π½ and min is +0π½, return +0π½.'); |
| 15 | + assert.same(clamp(0, -0, 1), 0, 'If value is +0π½ and min is -0π½, return +0π½.'); |
| 16 | + assert.same(clamp(-0, -1, 0), -0, 'If value is -0π½ and max is +0π½, return -0π½.'); |
| 17 | + assert.same(clamp(0, -1, -0), -0, 'If value is +0π½ and max is -0π½, return -0π½.'); |
| 18 | + |
| 19 | + assert.throws(() => clamp(Object(2), 1, 3), TypeError, 'If value is not a Number, throw a TypeError exception.'); |
| 20 | + assert.throws(() => clamp(2, Object(1), 3), TypeError, 'If min is not a Number, throw a TypeError exception.'); |
| 21 | + assert.throws(() => clamp(2, NaN, 3), RangeError, 'If min is NaN, throw a RangeError exception.'); |
| 22 | + assert.throws(() => clamp(2, 1, Object(3)), TypeError, 'If max is not a Number, throw a TypeError exception.'); |
| 23 | + assert.throws(() => clamp(2, 1, NaN), RangeError, 'If max is NaN, throw a RangeError exception.'); |
| 24 | + assert.throws(() => clamp(2, 0, -0), RangeError, 'If min is +0π½ and max is -0π½, throw a RangeError exception.'); |
| 25 | + assert.throws(() => clamp(2, 3, 1), RangeError, 'If min > max, throw a RangeError exception.'); |
24 | 26 | });
|
0 commit comments