@@ -17,6 +17,10 @@ tape("bisector(comparator).left(array, value) returns the index of the first mat
1717 test . equal ( bisectLeft ( boxes , box ( 3 ) ) , 3 ) ;
1818} ) ;
1919
20+ tape ( "bisector(comparator).left(empty, value) returns zero" , ( test ) => {
21+ test . equal ( d3 . bisector ( ( ) => { throw new Error ( ) ; } ) . left ( [ ] , 1 ) , 0 ) ;
22+ } ) ;
23+
2024tape ( "bisector(comparator).left(array, value) returns the insertion point of a non-exact match" , ( test ) => {
2125 const boxes = [ 1 , 2 , 3 ] . map ( box ) ;
2226 const bisectLeft = d3 . bisector ( ascendingBox ) . left ;
@@ -92,6 +96,10 @@ tape("bisector(comparator).right(array, value) returns the index after the last
9296 test . equal ( bisectRight ( boxes , box ( 3 ) ) , 4 ) ;
9397} ) ;
9498
99+ tape ( "bisector(comparator).right(empty, value) returns zero" , ( test ) => {
100+ test . equal ( d3 . bisector ( ( ) => { throw new Error ( ) ; } ) . right ( [ ] , 1 ) , 0 ) ;
101+ } ) ;
102+
95103tape ( "bisector(comparator).right(array, value) returns the insertion point of a non-exact match" , ( test ) => {
96104 const boxes = [ 1 , 2 , 3 ] . map ( box ) ;
97105 const bisectRight = d3 . bisector ( ascendingBox ) . right ;
@@ -285,6 +293,46 @@ tape("bisector(accessor).right(array, value) handles large sparse d3", (test) =>
285293 test . equal ( bisectRight ( boxes , 6 , i - 5 , i ) , i - 0 ) ;
286294} ) ;
287295
296+ tape ( "bisector(accessor).center(array, value) returns the closest index" , ( test ) => {
297+ const data = [ 0 , 1 , 2 , 3 , 4 ] ;
298+ const bisectCenter = d3 . bisector ( d => + d ) . center ;
299+ test . equal ( bisectCenter ( data , 2 ) , 2 ) ;
300+ test . equal ( bisectCenter ( data , 2.2 ) , 2 ) ;
301+ test . equal ( bisectCenter ( data , 2.6 ) , 3 ) ;
302+ test . equal ( bisectCenter ( data , 3 ) , 3 ) ;
303+ } ) ;
304+
305+ tape ( "bisector(comparator).center(array, value) returns the closest index" , ( test ) => {
306+ const data = [ 0 , 1 , 2 , 3 , 4 ] ;
307+ const bisectCenter = d3 . bisector ( ( d , x ) => + d - x ) . center ;
308+ test . equal ( bisectCenter ( data , 2 ) , 2 ) ;
309+ test . equal ( bisectCenter ( data , 2.2 ) , 2 ) ;
310+ test . equal ( bisectCenter ( data , 2.6 ) , 3 ) ;
311+ test . equal ( bisectCenter ( data , 3 ) , 3 ) ;
312+ } ) ;
313+
314+ tape ( "bisector(comparator).center(empty, value) returns zero" , ( test ) => {
315+ test . equal ( d3 . bisector ( ( ) => { throw new Error ( ) ; } ) . center ( [ ] , 1 ) , 0 ) ;
316+ } ) ;
317+
318+ tape ( "bisector(ascending).center(array, value) returns the left value" , ( test ) => {
319+ const data = [ 0 , 1 , 2 , 3 , 4 ] ;
320+ const bisectCenter = d3 . bisector ( d3 . ascending ) . center ;
321+ test . equal ( bisectCenter ( data , 2.0 ) , 2 ) ;
322+ test . equal ( bisectCenter ( data , 2.2 ) , 3 ) ;
323+ test . equal ( bisectCenter ( data , 2.6 ) , 3 ) ;
324+ test . equal ( bisectCenter ( data , 3.0 ) , 3 ) ;
325+ } ) ;
326+
327+ tape ( "bisector(ordinalAccessor).center(array, value) returns the left value" , ( test ) => {
328+ const data = [ "aa" , "bb" , "cc" , "dd" , "ee" ] ;
329+ const bisectCenter = d3 . bisector ( d => d ) . center ;
330+ test . equal ( bisectCenter ( data , "cc" ) , 2 ) ;
331+ test . equal ( bisectCenter ( data , "ce" ) , 3 ) ;
332+ test . equal ( bisectCenter ( data , "cf" ) , 3 ) ;
333+ test . equal ( bisectCenter ( data , "dd" ) , 3 ) ;
334+ } ) ;
335+
288336function box ( value ) {
289337 return { value : value } ;
290338}
0 commit comments