@@ -2,83 +2,90 @@ import { describe, expect, it } from 'vitest';
2
2
3
3
import { constrainNumber } from './constrainNumber' ;
4
4
5
+ expect . addEqualityTesters ( [
6
+ function ( a , b ) {
7
+ if ( typeof a === 'number' && typeof b === 'number' ) {
8
+ return a === b ;
9
+ }
10
+ } ,
11
+ ] ) ;
12
+
5
13
describe ( 'constrainNumber' , ( ) => {
6
14
// Default constraints to be used in tests
7
15
const defaultConstraints = { min : 0 , max : 10 , step : 1 } ;
8
16
9
17
it ( 'should keep values within range' , ( ) => {
10
- expect ( constrainNumber ( 5 , defaultConstraints ) ) . toBe ( 5 ) ;
11
- expect ( constrainNumber ( - 5 , defaultConstraints ) ) . toBe ( 0 ) ;
12
- expect ( constrainNumber ( 15 , defaultConstraints ) ) . toBe ( 10 ) ;
18
+ expect ( constrainNumber ( 5 , defaultConstraints ) ) . toEqual ( 5 ) ;
19
+ expect ( constrainNumber ( - 5 , defaultConstraints ) ) . toEqual ( 0 ) ;
20
+ expect ( constrainNumber ( 15 , defaultConstraints ) ) . toEqual ( 10 ) ;
13
21
} ) ;
14
22
15
23
it ( 'should round to nearest multiple' , ( ) => {
16
24
const constraints = { min : 0 , max : 10 , step : 2 } ;
17
- expect ( constrainNumber ( 1 , constraints ) ) . toBe ( 2 ) ;
18
- expect ( constrainNumber ( 2 , constraints ) ) . toBe ( 2 ) ;
19
- expect ( constrainNumber ( 3 , constraints ) ) . toBe ( 4 ) ;
20
- expect ( constrainNumber ( 9 , constraints ) ) . toBe ( 10 ) ;
21
- expect ( constrainNumber ( 11 , constraints ) ) . toBe ( 10 ) ;
25
+ expect ( constrainNumber ( 1 , constraints ) ) . toEqual ( 2 ) ;
26
+ expect ( constrainNumber ( 2 , constraints ) ) . toEqual ( 2 ) ;
27
+ expect ( constrainNumber ( 3 , constraints ) ) . toEqual ( 4 ) ;
28
+ expect ( constrainNumber ( 9 , constraints ) ) . toEqual ( 10 ) ;
29
+ expect ( constrainNumber ( 11 , constraints ) ) . toEqual ( 10 ) ;
22
30
} ) ;
23
31
24
32
it ( 'should handle negative multiples' , ( ) => {
25
33
const constraints = { min : - 10 , max : 10 , step : 3 } ;
26
- expect ( constrainNumber ( - 9 , constraints ) ) . toBe ( - 9 ) ;
27
- expect ( constrainNumber ( - 8 , constraints ) ) . toBe ( - 9 ) ;
28
- expect ( constrainNumber ( - 7 , constraints ) ) . toBe ( - 6 ) ;
29
- expect ( constrainNumber ( - 3 , constraints ) ) . toBe ( - 3 ) ;
30
- expect ( constrainNumber ( - 2 , constraints ) ) . toBe ( - 3 ) ;
31
- // In JS, -0 !== +0... :)
32
- expect ( constrainNumber ( - 1 , constraints ) ) . toBe ( 0 ) ;
33
- expect ( constrainNumber ( 0 , constraints ) ) . toBe ( 0 ) ;
34
- expect ( constrainNumber ( 1 , constraints ) ) . toBe ( 0 ) ;
35
- expect ( constrainNumber ( 2 , constraints ) ) . toBe ( 3 ) ;
36
- expect ( constrainNumber ( 3 , constraints ) ) . toBe ( 3 ) ;
37
- expect ( constrainNumber ( 4 , constraints ) ) . toBe ( 3 ) ;
38
- expect ( constrainNumber ( 7 , constraints ) ) . toBe ( 6 ) ;
39
- expect ( constrainNumber ( 8 , constraints ) ) . toBe ( 9 ) ;
40
- expect ( constrainNumber ( 9 , constraints ) ) . toBe ( 9 ) ;
34
+ expect ( constrainNumber ( - 9 , constraints ) ) . toEqual ( - 9 ) ;
35
+ expect ( constrainNumber ( - 8 , constraints ) ) . toEqual ( - 9 ) ;
36
+ expect ( constrainNumber ( - 7 , constraints ) ) . toEqual ( - 6 ) ;
37
+ expect ( constrainNumber ( - 3 , constraints ) ) . toEqual ( - 3 ) ;
38
+ expect ( constrainNumber ( - 2 , constraints ) ) . toEqual ( - 3 ) ;
39
+ expect ( constrainNumber ( - 1 , constraints ) ) . toEqual ( 0 ) ;
40
+ expect ( constrainNumber ( 0 , constraints ) ) . toEqual ( 0 ) ;
41
+ expect ( constrainNumber ( 1 , constraints ) ) . toEqual ( 0 ) ;
42
+ expect ( constrainNumber ( 2 , constraints ) ) . toEqual ( 3 ) ;
43
+ expect ( constrainNumber ( 3 , constraints ) ) . toEqual ( 3 ) ;
44
+ expect ( constrainNumber ( 4 , constraints ) ) . toEqual ( 3 ) ;
45
+ expect ( constrainNumber ( 7 , constraints ) ) . toEqual ( 6 ) ;
46
+ expect ( constrainNumber ( 8 , constraints ) ) . toEqual ( 9 ) ;
47
+ expect ( constrainNumber ( 9 , constraints ) ) . toEqual ( 9 ) ;
41
48
} ) ;
42
49
43
50
it ( 'should respect boundaries when rounding' , ( ) => {
44
51
const constraints = { min : 0 , max : 10 , step : 4 } ;
45
52
// Value at 9 would normally round to 8
46
- expect ( constrainNumber ( 9 , constraints ) ) . toBe ( 8 ) ;
53
+ expect ( constrainNumber ( 9 , constraints ) ) . toEqual ( 8 ) ;
47
54
// Value at 11 would normally round to 12, but max is 10
48
- expect ( constrainNumber ( 11 , constraints ) ) . toBe ( 10 ) ;
55
+ expect ( constrainNumber ( 11 , constraints ) ) . toEqual ( 10 ) ;
49
56
} ) ;
50
57
51
58
it ( 'should handle decimal multiples' , ( ) => {
52
59
const constraints = { min : 0 , max : 1 , step : 0.25 } ;
53
- expect ( constrainNumber ( 0.3 , constraints ) ) . toBe ( 0.25 ) ;
54
- expect ( constrainNumber ( 0.87 , constraints ) ) . toBe ( 0.75 ) ;
55
- expect ( constrainNumber ( 0.88 , constraints ) ) . toBe ( 1.0 ) ;
56
- expect ( constrainNumber ( 0.13 , constraints ) ) . toBe ( 0.25 ) ;
60
+ expect ( constrainNumber ( 0.3 , constraints ) ) . toEqual ( 0.25 ) ;
61
+ expect ( constrainNumber ( 0.87 , constraints ) ) . toEqual ( 0.75 ) ;
62
+ expect ( constrainNumber ( 0.88 , constraints ) ) . toEqual ( 1.0 ) ;
63
+ expect ( constrainNumber ( 0.13 , constraints ) ) . toEqual ( 0.25 ) ;
57
64
} ) ;
58
65
59
66
it ( 'should apply overrides correctly' , ( ) => {
60
67
// Override min
61
- expect ( constrainNumber ( 2 , defaultConstraints , { min : 5 } ) ) . toBe ( 5 ) ;
68
+ expect ( constrainNumber ( 2 , defaultConstraints , { min : 5 } ) ) . toEqual ( 5 ) ;
62
69
63
70
// Override max
64
- expect ( constrainNumber ( 8 , defaultConstraints , { max : 7 } ) ) . toBe ( 7 ) ;
71
+ expect ( constrainNumber ( 8 , defaultConstraints , { max : 7 } ) ) . toEqual ( 7 ) ;
65
72
66
73
// Override multipleOf
67
- expect ( constrainNumber ( 4.7 , defaultConstraints , { step : 2 } ) ) . toBe ( 4 ) ;
74
+ expect ( constrainNumber ( 4.7 , defaultConstraints , { step : 2 } ) ) . toEqual ( 4 ) ;
68
75
69
76
// Override all
70
- expect ( constrainNumber ( 15 , defaultConstraints , { min : 5 , max : 20 , step : 5 } ) ) . toBe ( 15 ) ;
77
+ expect ( constrainNumber ( 15 , defaultConstraints , { min : 5 , max : 20 , step : 5 } ) ) . toEqual ( 15 ) ;
71
78
} ) ;
72
79
73
80
it ( 'should handle edge cases' , ( ) => {
74
81
// Value exactly at min
75
- expect ( constrainNumber ( 0 , defaultConstraints ) ) . toBe ( 0 ) ;
82
+ expect ( constrainNumber ( 0 , defaultConstraints ) ) . toEqual ( 0 ) ;
76
83
77
84
// Value exactly at max
78
- expect ( constrainNumber ( 10 , defaultConstraints ) ) . toBe ( 10 ) ;
85
+ expect ( constrainNumber ( 10 , defaultConstraints ) ) . toEqual ( 10 ) ;
79
86
80
87
// multipleOf larger than range
81
88
const narrowConstraints = { min : 5 , max : 7 , step : 5 } ;
82
- expect ( constrainNumber ( 6 , narrowConstraints ) ) . toBe ( 5 ) ;
89
+ expect ( constrainNumber ( 6 , narrowConstraints ) ) . toEqual ( 5 ) ;
83
90
} ) ;
84
91
} ) ;
0 commit comments