@@ -41,7 +41,84 @@ describe("histogram", () => {
4141 const data = [ 1 , 12 , 13 , 13 , 3 , 14 , 19 , 6 ] ;
4242 const h = [ ...histogram ( data , n => n , { buckets : 3 } ) ] ;
4343 expect ( h ) . to . have . length ;
44+ expect ( h . length ) . to . equal ( 3 ) ;
4445 const h2 = [ ...histogram ( data , n => n , { min : 0 , range : 5 } ) ] ;
4546 expect ( h2 ) . to . have . length ;
47+ expect ( h2 . length ) . to . equal ( 4 ) ;
48+ } ) ;
49+
50+
51+ it ( "sparse buckets" , ( ) => {
52+ const data = [ 1 , 6 , 13 , 13 , 3 , 14 , 19 , 4 ] ;
53+ const h = [ ...histogram ( data , n => n , { buckets : 3 } ) ] ;
54+ expect ( h ) . to . have . length ;
55+ expect ( h . length ) . to . equal ( 3 ) ;
56+ for ( let i = 0 ; i < h . length ; i ++ ) {
57+ switch ( i ) {
58+ case 0 :
59+ expect ( h [ i ] . from ) . to . equal ( 1 ) ;
60+ expect ( h [ i ] . to ) . to . equal ( 7 ) ;
61+ expect ( h [ i ] . value ) . to . deep . equal ( [ 1 , 6 , 3 , 4 ] ) ;
62+ break ;
63+ case 1 :
64+ expect ( h [ i ] . from ) . to . equal ( 7 ) ;
65+ expect ( h [ i ] . to ) . to . equal ( 13 ) ;
66+ expect ( h [ i ] . value ) . to . deep . equal ( [ ] ) ;
67+ break ;
68+ case 2 :
69+ expect ( h [ i ] . from ) . to . be . equal ( 13 ) ;
70+ expect ( h [ i ] . to ) . to . be . equal ( 19 ) ;
71+ expect ( h [ i ] . value ) . to . deep . equal ( [ 13 , 13 , 14 , 19 ] ) ;
72+ break ;
73+ }
74+ }
75+ const data2 = [ 1 , 13 , 12 , 13 , 3 , 14 , 19 , 4 ] ;
76+ const h2 = [ ...histogram ( data2 , n => n , { min : 0 , range : 5 } ) ] ;
77+ expect ( h2 ) . to . have . length ;
78+ expect ( h2 . length ) . to . equal ( 4 ) ;
79+ for ( let i = 0 ; i < h . length ; i ++ ) {
80+ switch ( i ) {
81+ case 0 :
82+ expect ( h2 [ i ] . from ) . to . equal ( 0 ) ;
83+ expect ( h2 [ i ] . to ) . to . equal ( 5 ) ;
84+ expect ( h2 [ i ] . value ) . to . deep . equal ( [ 1 , 3 , 4 ] ) ;
85+ break ;
86+ case 1 :
87+ expect ( h2 [ i ] . from ) . to . equal ( 5 ) ;
88+ expect ( h2 [ i ] . to ) . to . equal ( 10 ) ;
89+ expect ( h2 [ i ] . value ) . to . deep . equal ( [ ] ) ;
90+ break ;
91+ case 2 :
92+ expect ( h2 [ i ] . from ) . to . be . equal ( 10 ) ;
93+ expect ( h2 [ i ] . to ) . to . be . equal ( 15 ) ;
94+ expect ( h2 [ i ] . value ) . to . deep . equal ( [ 13 , 12 , 13 , 14 ] ) ;
95+ break ;
96+ case 3 :
97+ expect ( h2 [ i ] . from ) . to . be . equal ( 15 ) ;
98+ expect ( h2 [ i ] . to ) . to . be . equal ( 20 ) ;
99+ expect ( h2 [ i ] . value ) . to . deep . equal ( [ 19 ] ) ;
100+ break ;
101+ }
102+ }
103+ } ) ;
104+
105+ it ( "empty source with buckets" , ( ) => {
106+ const h = [ ...histogram < number > ( n => n , { buckets : 10 } ) ( [ ] ) ] ;
107+ expect ( h . length ) . to . equal ( 10 ) ;
108+ for ( const b of h ) {
109+ expect ( b . from ) . to . be . NaN ;
110+ expect ( b . to ) . to . be . NaN ;
111+ expect ( b . value ) . to . deep . equal ( [ ] ) ;
112+ }
113+ } ) ;
114+
115+ it ( "empty source with buckets 2" , ( ) => {
116+ const data : number [ ] = [ ] ;
117+ const h = [ ...histogram ( data , n => n , { buckets : 3 } ) ] ;
118+ expect ( h ) . to . have . length ;
119+ expect ( h . length ) . to . equal ( 3 ) ;
120+ const h2 = [ ...histogram ( data , n => n , { min : 0 , range : 5 } ) ] ;
121+ expect ( h2 ) . to . have . length ;
122+ expect ( h2 . length ) . to . equal ( 0 ) ;
46123 } ) ;
47124} ) ;
0 commit comments