@@ -2,83 +2,90 @@ import { describe, expect, it } from 'vitest';
22
33import { constrainNumber } from './constrainNumber' ;
44
5+ expect . addEqualityTesters ( [
6+ function ( a , b ) {
7+ if ( typeof a === 'number' && typeof b === 'number' ) {
8+ return a === b ;
9+ }
10+ } ,
11+ ] ) ;
12+
513describe ( 'constrainNumber' , ( ) => {
614 // Default constraints to be used in tests
715 const defaultConstraints = { min : 0 , max : 10 , step : 1 } ;
816
917 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 ) ;
1321 } ) ;
1422
1523 it ( 'should round to nearest multiple' , ( ) => {
1624 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 ) ;
2230 } ) ;
2331
2432 it ( 'should handle negative multiples' , ( ) => {
2533 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 ) ;
4148 } ) ;
4249
4350 it ( 'should respect boundaries when rounding' , ( ) => {
4451 const constraints = { min : 0 , max : 10 , step : 4 } ;
4552 // Value at 9 would normally round to 8
46- expect ( constrainNumber ( 9 , constraints ) ) . toBe ( 8 ) ;
53+ expect ( constrainNumber ( 9 , constraints ) ) . toEqual ( 8 ) ;
4754 // 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 ) ;
4956 } ) ;
5057
5158 it ( 'should handle decimal multiples' , ( ) => {
5259 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 ) ;
5764 } ) ;
5865
5966 it ( 'should apply overrides correctly' , ( ) => {
6067 // Override min
61- expect ( constrainNumber ( 2 , defaultConstraints , { min : 5 } ) ) . toBe ( 5 ) ;
68+ expect ( constrainNumber ( 2 , defaultConstraints , { min : 5 } ) ) . toEqual ( 5 ) ;
6269
6370 // Override max
64- expect ( constrainNumber ( 8 , defaultConstraints , { max : 7 } ) ) . toBe ( 7 ) ;
71+ expect ( constrainNumber ( 8 , defaultConstraints , { max : 7 } ) ) . toEqual ( 7 ) ;
6572
6673 // Override multipleOf
67- expect ( constrainNumber ( 4.7 , defaultConstraints , { step : 2 } ) ) . toBe ( 4 ) ;
74+ expect ( constrainNumber ( 4.7 , defaultConstraints , { step : 2 } ) ) . toEqual ( 4 ) ;
6875
6976 // 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 ) ;
7178 } ) ;
7279
7380 it ( 'should handle edge cases' , ( ) => {
7481 // Value exactly at min
75- expect ( constrainNumber ( 0 , defaultConstraints ) ) . toBe ( 0 ) ;
82+ expect ( constrainNumber ( 0 , defaultConstraints ) ) . toEqual ( 0 ) ;
7683
7784 // Value exactly at max
78- expect ( constrainNumber ( 10 , defaultConstraints ) ) . toBe ( 10 ) ;
85+ expect ( constrainNumber ( 10 , defaultConstraints ) ) . toEqual ( 10 ) ;
7986
8087 // multipleOf larger than range
8188 const narrowConstraints = { min : 5 , max : 7 , step : 5 } ;
82- expect ( constrainNumber ( 6 , narrowConstraints ) ) . toBe ( 5 ) ;
89+ expect ( constrainNumber ( 6 , narrowConstraints ) ) . toEqual ( 5 ) ;
8390 } ) ;
8491} ) ;
0 commit comments