@@ -59,6 +59,32 @@ suite.addBatch({
5959 assert . equal ( x ( .6 ) , b ) ;
6060 assert . equal ( x ( .8 ) , c ) ;
6161 assert . equal ( x ( 1 ) , c ) ;
62+ } ,
63+ "invertExtent" : {
64+ "maps a value in the range to a domain extent" : function ( quantize ) {
65+ var x = quantize ( ) . range ( [ 0 , 1 , 2 , 3 ] ) ;
66+ assert . deepEqual ( x . invertExtent ( 0 ) , [ 0 , .25 ] ) ;
67+ assert . deepEqual ( x . invertExtent ( 1 ) , [ .25 , .5 ] ) ;
68+ assert . deepEqual ( x . invertExtent ( 2 ) , [ .5 , .75 ] ) ;
69+ assert . deepEqual ( x . invertExtent ( 3 ) , [ .75 , 1 ] ) ;
70+ } ,
71+ "allows arbitrary range values" : function ( quantize ) {
72+ var a = { } , b = { } , x = quantize ( ) . range ( [ a , b ] ) ;
73+ assert . deepEqual ( x . invertExtent ( a ) , [ 0 , .5 ] ) ;
74+ assert . deepEqual ( x . invertExtent ( b ) , [ .5 , 1 ] ) ;
75+ } ,
76+ "returns [NaN, NaN] when the given value is not in the range" : function ( quantize ) {
77+ var x = quantize ( ) ;
78+ assert . ok ( x . invertExtent ( - 1 ) . every ( isNaN ) ) ;
79+ assert . ok ( x . invertExtent ( .5 ) . every ( isNaN ) ) ;
80+ assert . ok ( x . invertExtent ( 2 ) . every ( isNaN ) ) ;
81+ assert . ok ( x . invertExtent ( 'a' ) . every ( isNaN ) ) ;
82+ } ,
83+ "returns the first match if duplicate values exist in the range" : function ( quantize ) {
84+ var x = quantize ( ) . range ( [ 0 , 1 , 2 , 0 ] ) ;
85+ assert . deepEqual ( x . invertExtent ( 0 ) , [ 0 , .25 ] ) ;
86+ assert . deepEqual ( x . invertExtent ( 1 ) , [ .25 , .5 ] ) ;
87+ }
6288 }
6389 }
6490} ) ;
0 commit comments