@@ -57,6 +57,33 @@ suite.addBatch({
5757 "returns undefined if the input value is NaN" : function ( quantile ) {
5858 var x = quantile ( ) . domain ( [ 3 , 6 , 7 , 8 , 8 , 10 , 13 , 15 , 16 , 20 ] ) . range ( [ 0 , 1 , 2 , 3 ] ) ;
5959 assert . isUndefined ( x ( NaN ) ) ;
60+ } ,
61+ "invertExtent" : {
62+ "maps a value in the range to a domain extent" : function ( quantile ) {
63+ var x = quantile ( ) . domain ( [ 3 , 6 , 7 , 8 , 8 , 10 , 13 , 15 , 16 , 20 ] ) . range ( [ 0 , 1 , 2 , 3 ] ) ;
64+ assert . deepEqual ( x . invertExtent ( 0 ) , [ 3 , 7.25 ] ) ;
65+ assert . deepEqual ( x . invertExtent ( 1 ) , [ 7.25 , 9 ] ) ;
66+ assert . deepEqual ( x . invertExtent ( 2 ) , [ 9 , 14.5 ] ) ;
67+ assert . deepEqual ( x . invertExtent ( 3 ) , [ 14.5 , 20 ] ) ;
68+ } ,
69+ "allows arbitrary range values" : function ( quantile ) {
70+ var a = { } , b = { } , x = quantile ( ) . domain ( [ 3 , 6 , 7 , 8 , 8 , 10 , 13 , 15 , 16 , 20 ] ) . range ( [ a , b ] ) ;
71+ assert . deepEqual ( x . invertExtent ( a ) , [ 3 , 9 ] ) ;
72+ assert . deepEqual ( x . invertExtent ( b ) , [ 9 , 20 ] ) ;
73+ } ,
74+ "returns [NaN, NaN] when the given value is not in the range" : function ( quantile ) {
75+ var x = quantile ( ) . domain ( [ 3 , 6 , 7 , 8 , 8 , 10 , 13 , 15 , 16 , 20 ] ) ;
76+ assert . ok ( x . invertExtent ( - 1 ) . every ( isNaN ) ) ;
77+ assert . ok ( x . invertExtent ( .5 ) . every ( isNaN ) ) ;
78+ assert . ok ( x . invertExtent ( 2 ) . every ( isNaN ) ) ;
79+ assert . ok ( x . invertExtent ( 'a' ) . every ( isNaN ) ) ;
80+ } ,
81+ "returns the first match if duplicate values exist in the range" : function ( quantile ) {
82+ var x = quantile ( ) . domain ( [ 3 , 6 , 7 , 8 , 8 , 10 , 13 , 15 , 16 , 20 ] ) . range ( [ 0 , 1 , 2 , 0 ] ) ;
83+ assert . deepEqual ( x . invertExtent ( 0 ) , [ 3 , 7.25 ] ) ;
84+ assert . deepEqual ( x . invertExtent ( 1 ) , [ 7.25 , 9 ] ) ;
85+ assert . deepEqual ( x . invertExtent ( 2 ) , [ 9 , 14.5 ] ) ;
86+ }
6087 }
6188 }
6289} ) ;
0 commit comments