@@ -114,6 +114,12 @@ suite.addBatch({
114114 var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangePoints ( [ 0 , 120 ] , 2 ) ;
115115 assert . deepEqual ( x . range ( ) , [ 30 , 60 , 90 ] ) ;
116116 } ,
117+ "correctly handles empty domains" : function ( ordinal ) {
118+ var x = ordinal ( ) . domain ( [ ] ) . rangePoints ( [ 0 , 120 ] ) ;
119+ assert . deepEqual ( x . range ( ) , [ ] ) ;
120+ assert . isUndefined ( x ( "b" ) ) ;
121+ assert . deepEqual ( x . domain ( ) , [ ] ) ;
122+ } ,
117123 "correctly handles singleton domains" : function ( ordinal ) {
118124 var x = ordinal ( ) . domain ( [ "a" ] ) . rangePoints ( [ 0 , 120 ] ) ;
119125 assert . deepEqual ( x . range ( ) , [ 60 ] ) ;
@@ -122,7 +128,7 @@ suite.addBatch({
122128 } ,
123129 "can be set to a descending range" : function ( ordinal ) {
124130 var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangePoints ( [ 120 , 0 ] ) ;
125- assert . deepEqual ( x . range ( ) , [ 120 , 60 , 0 ] ) ;
131+ assert . deepEqual ( x . range ( ) , [ 120 , 60 , 0 ] ) ;
126132 var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangePoints ( [ 120 , 0 ] , 1 ) ;
127133 assert . deepEqual ( x . range ( ) , [ 100 , 60 , 20 ] ) ;
128134 var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangePoints ( [ 120 , 0 ] , 2 ) ;
@@ -157,6 +163,72 @@ suite.addBatch({
157163 }
158164 } ,
159165
166+ "rangeRoundPoints" : {
167+ "computes discrete points in a continuous range" : function ( ordinal ) {
168+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 120 ] ) ;
169+ assert . deepEqual ( x . range ( ) , [ 0 , 60 , 120 ] ) ;
170+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 120 ] , 1 ) ;
171+ assert . deepEqual ( x . range ( ) , [ 20 , 60 , 100 ] ) ;
172+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 120 ] , 2 ) ;
173+ assert . deepEqual ( x . range ( ) , [ 30 , 60 , 90 ] ) ;
174+ } ,
175+ "rounds to the nearest equispaced integer values" : function ( ordinal ) {
176+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 119 ] ) ;
177+ assert . deepEqual ( x . range ( ) , [ 1 , 60 , 119 ] ) ;
178+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 119 ] , 1 ) ;
179+ assert . deepEqual ( x . range ( ) , [ 21 , 60 , 99 ] ) ;
180+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 119 ] , 2 ) ;
181+ assert . deepEqual ( x . range ( ) , [ 31 , 60 , 89 ] ) ;
182+ } ,
183+ "correctly handles empty domains" : function ( ordinal ) {
184+ var x = ordinal ( ) . domain ( [ ] ) . rangeRoundPoints ( [ 0 , 119 ] ) ;
185+ assert . deepEqual ( x . range ( ) , [ ] ) ;
186+ assert . isUndefined ( x ( "b" ) ) ;
187+ assert . deepEqual ( x . domain ( ) , [ ] ) ;
188+ } ,
189+ "correctly handles singleton domains" : function ( ordinal ) {
190+ var x = ordinal ( ) . domain ( [ "a" ] ) . rangeRoundPoints ( [ 0 , 119 ] ) ;
191+ assert . deepEqual ( x . range ( ) , [ 60 ] ) ;
192+ assert . isUndefined ( x ( "b" ) ) ;
193+ assert . deepEqual ( x . domain ( ) , [ "a" ] ) ;
194+ } ,
195+ "can be set to a descending range" : function ( ordinal ) {
196+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 119 , 0 ] ) ;
197+ assert . deepEqual ( x . range ( ) , [ 119 , 60 , 1 ] ) ;
198+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 119 , 0 ] , 1 ) ;
199+ assert . deepEqual ( x . range ( ) , [ 99 , 60 , 21 ] ) ;
200+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 119 , 0 ] , 2 ) ;
201+ assert . deepEqual ( x . range ( ) , [ 89 , 60 , 31 ] ) ;
202+ } ,
203+ "has a rangeBand of zero" : function ( ordinal ) {
204+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 119 ] ) ;
205+ assert . equal ( x . rangeBand ( ) , 0 ) ;
206+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 119 ] , 1 ) ;
207+ assert . equal ( x . rangeBand ( ) , 0 ) ;
208+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 119 ] , 2 ) ;
209+ assert . equal ( x . rangeBand ( ) , 0 ) ;
210+ var x = ordinal ( ) . domain ( [ "a" ] ) . rangeRoundPoints ( [ 0 , 119 ] ) ;
211+ assert . equal ( x . rangeBand ( ) , 0 ) ;
212+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 119 , 0 ] ) ;
213+ assert . equal ( x . rangeBand ( ) , 0 ) ;
214+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 119 , 0 ] , 1 ) ;
215+ assert . equal ( x . rangeBand ( ) , 0 ) ;
216+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 119 , 0 ] , 2 ) ;
217+ assert . equal ( x . rangeBand ( ) , 0 ) ;
218+ } ,
219+ "returns undefined for values outside the domain" : function ( ordinal ) {
220+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 1 ] ) ;
221+ assert . isUndefined ( x ( "d" ) ) ;
222+ assert . isUndefined ( x ( "e" ) ) ;
223+ assert . isUndefined ( x ( "f" ) ) ;
224+ } ,
225+ "does not implicitly add values to the domain" : function ( ordinal ) {
226+ var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeRoundPoints ( [ 0 , 1 ] ) ;
227+ x ( "d" ) , x ( "e" ) ;
228+ assert . deepEqual ( x . domain ( ) , [ "a" , "b" , "c" ] ) ;
229+ }
230+ } ,
231+
160232 "rangeBands" : {
161233 "computes discrete bands in a continuous range" : function ( ordinal ) {
162234 var x = ordinal ( ) . domain ( [ "a" , "b" , "c" ] ) . rangeBands ( [ 0 , 120 ] ) ;
0 commit comments