1 IN: models.range.tests
\r
2 USING: arrays generic kernel math models namespaces sequences assocs
\r
3 tools.test models.range ;
\r
6 : setup-range ( -- range ) 0 0 0 255 1 <range> ;
\r
7 : setup-stepped-range ( -- range ) 0 0 0 255 2 <range> ;
\r
9 ! clamp-value should not go past range ends
\r
10 [ 0 ] [ -10 setup-range clamp-value ] unit-test
\r
11 [ 255 ] [ 2000 setup-range clamp-value ] unit-test
\r
12 [ 14 ] [ 14 setup-range clamp-value ] unit-test
\r
15 [ 14 ] [ 15 setup-stepped-range step-value ] unit-test
\r
17 ! range min/max/page values should be correct
\r
18 [ 0 ] [ setup-range range-page-value ] unit-test
\r
19 [ 0 ] [ setup-range range-min-value ] unit-test
\r
20 [ 255 ] [ setup-range range-max-value ] unit-test
\r
22 ! should be able to set the value within the range and get back
\r
23 [ 15 ] [ setup-range 15 over set-range-value range-value ] unit-test
\r
24 [ 0 ] [ setup-range -15 over set-range-value range-value ] unit-test
\r
25 [ 255 ] [ setup-range 4000 over set-range-value range-value ] unit-test
\r
27 ! should be able to change the range min/max/page value
\r
28 [ 1 ] [ setup-range 1 over set-range-page-value range-page-value ] unit-test
\r
29 [ 50 ] [ setup-range 50 over set-range-min-value range-min-value ] unit-test
\r
30 [ 4000 ] [ setup-range 4000 over set-range-max-value range-max-value ] unit-test
\r
32 ! should be able to move by positive and negative values
\r
33 [ 30 ] [ setup-range 30 over move-by range-value ] unit-test
\r
34 [ 0 ] [ setup-range 30 over move-by -30 over move-by range-value ] unit-test
\r
36 ! should be able to move by a page of 10
\r
38 setup-range 10 over set-range-page-value
\r
39 1 over move-by-page range-value
\r