Skip to content

Commit d6f4b2a

Browse files
committed
Add test for scale.sqrt.
1 parent 0872e94 commit d6f4b2a

3 files changed

Lines changed: 166 additions & 89 deletions

File tree

test/scale/pow-test.js

Lines changed: 166 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,18 +158,182 @@ suite.addBatch({
158158
var x = pow().domain([0, .49]).nice();
159159
assert.deepEqual(x.domain(), [0, .5]);
160160
},
161-
"can specify a polylinear domain and range": function(pow) {
161+
"can specify a polypower domain and range": function(pow) {
162162
var x = pow().domain([-10, 0, 100]).range(["red", "white", "green"]);
163163
assert.equal(x(-5), "rgb(255,128,128)");
164164
assert.equal(x(50), "rgb(128,192,128)");
165165
assert.equal(x(75), "rgb(64,160,64)");
166166
},
167-
"nicing a polylinear domain only affects the extent": function(pow) {
167+
"nicing a polypower domain only affects the extent": function(pow) {
168168
var x = pow().domain([1.1, 1, 2, 3, 10.9]).nice();
169169
assert.deepEqual(x.domain(), [1, 1, 2, 3, 11]);
170170
var x = pow().domain([123.1, 1, 2, 3, -.9]).nice();
171171
assert.deepEqual(x.domain(), [130, 1, 2, 3, -10]);
172172
}
173+
},
174+
"sqrt": {
175+
topic: function() {
176+
return d3.scale.sqrt;
177+
},
178+
"has the default domain [0, 1]": function(sqrt) {
179+
var x = sqrt();
180+
assert.deepEqual(x.domain(), [0, 1]);
181+
assert.inDelta(x(.5), 0.7071068, 1e-6);
182+
},
183+
"has the default range [0, 1]": function(sqrt) {
184+
var x = sqrt();
185+
assert.deepEqual(x.range(), [0, 1]);
186+
assert.inDelta(x.invert(.5), .25, 1e-6);
187+
},
188+
"has the default exponent .5": function(sqrt) {
189+
var x = sqrt();
190+
assert.equal(x.exponent(), .5);
191+
},
192+
"has the default interpolator d3.interpolate": function(sqrt) {
193+
var x = sqrt().range(["red", "blue"]);
194+
assert.equal(x.interpolate(), d3.interpolate);
195+
assert.equal(x(.5), "rgb(75,0,180)");
196+
},
197+
"does not clamp by default": function(sqrt) {
198+
var x = sqrt();
199+
assert.isFalse(x.clamp());
200+
assert.inDelta(x(-.5), -0.7071068, 1e-6);
201+
assert.inDelta(x(1.5), 1.22474487, 1e-6);
202+
},
203+
"maps a number to a number": function(sqrt) {
204+
var x = sqrt().domain([1, 2]);
205+
assert.inDelta(x(.5), -0.7071068, 1e-6);
206+
assert.inDelta(x(1), 0, 1e-6);
207+
assert.inDelta(x(1.5), 0.5425821, 1e-6);
208+
assert.inDelta(x(2), 1, 1e-6);
209+
assert.inDelta(x(2.5), 1.4029932, 1e-6);
210+
},
211+
"observes the specified exponent": function(sqrt) {
212+
var x = sqrt().exponent(.5).domain([1, 2]);
213+
assert.inDelta(x(1), 0, 1e-6);
214+
assert.inDelta(x(1.5), 0.5425821, 1e-6);
215+
assert.inDelta(x(2), 1, 1e-6);
216+
var x = sqrt().exponent(2).domain([1, 2]);
217+
assert.inDelta(x(1), 0, 1e-6);
218+
assert.inDelta(x(1.5), .41666667, 1e-6);
219+
assert.inDelta(x(2), 1, 1e-6);
220+
var x = sqrt().exponent(-1).domain([1, 2]);
221+
assert.inDelta(x(1), 0, 1e-6);
222+
assert.inDelta(x(1.5), .6666667, 1e-6);
223+
assert.inDelta(x(2), 1, 1e-6);
224+
},
225+
"changing the exponent does not change the domain or range": function(sqrt) {
226+
var x = sqrt().domain([1, 2]).range([3, 4]), f = d3.format(".6f");
227+
x.exponent(.5);
228+
assert.deepEqual(x.domain().map(f), [1, 2]);
229+
assert.deepEqual(x.range(), [3, 4]);
230+
x.exponent(2);
231+
assert.deepEqual(x.domain().map(f), [1, 2]);
232+
assert.deepEqual(x.range(), [3, 4]);
233+
x.exponent(-1);
234+
assert.deepEqual(x.domain().map(f), [1, 2]);
235+
assert.deepEqual(x.range(), [3, 4]);
236+
},
237+
"coerces domain to numbers": function(sqrt) {
238+
var x = sqrt().domain([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
239+
assert.equal(typeof x.domain()[0], "number");
240+
assert.equal(typeof x.domain()[1], "number");
241+
assert.inDelta(x(new Date(1989, 09, 20)), -.2, 1e-2);
242+
assert.inDelta(x(new Date(1990, 00, 01)), 0, 1e-2);
243+
assert.inDelta(x(new Date(1990, 02, 15)), .2, 1e-2);
244+
assert.inDelta(x(new Date(1990, 04, 27)), .4, 1e-2);
245+
assert.inDelta(x(new Date(1991, 00, 01)), 1, 1e-2);
246+
assert.inDelta(x(new Date(1991, 02, 15)), 1.2, 1e-2);
247+
var x = sqrt().domain(["0", "1"]);
248+
assert.equal(typeof x.domain()[0], "number");
249+
assert.equal(typeof x.domain()[1], "number");
250+
assert.inDelta(x(.5), 0.7071068, 1e-6);
251+
var x = sqrt().domain([new Number(0), new Number(1)]);
252+
assert.equal(typeof x.domain()[0], "number");
253+
assert.equal(typeof x.domain()[1], "number");
254+
assert.inDelta(x(.5), 0.7071068, 1e-6);
255+
},
256+
"does not coerce range to numbers": function(sqrt) {
257+
var x = sqrt().range(["0", "2"]);
258+
assert.equal(typeof x.range()[0], "string");
259+
assert.equal(typeof x.range()[1], "string");
260+
},
261+
"coerces range value to number on invert": function(sqrt) {
262+
var x = sqrt().range(["0", "2"]);
263+
assert.inDelta(x.invert("1"), .25, 1e-6);
264+
var x = sqrt().range([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
265+
assert.inDelta(x.invert(new Date(1990, 6, 2, 13)), .25, 1e-6);
266+
var x = sqrt().range(["#000", "#fff"]);
267+
assert.isNaN(x.invert("#999"));
268+
},
269+
"can specify range values as colors": function(sqrt) {
270+
var x = sqrt().range(["red", "blue"]);
271+
assert.equal(x(.25), "rgb(128,0,128)");
272+
var x = sqrt().range(["#ff0000", "#0000ff"]);
273+
assert.equal(x(.25), "rgb(128,0,128)");
274+
var x = sqrt().range(["#f00", "#00f"]);
275+
assert.equal(x(.25), "rgb(128,0,128)");
276+
var x = sqrt().range([d3.rgb(255,0,0), d3.hsl(240,1,.5)]);
277+
assert.equal(x(.25), "rgb(128,0,128)");
278+
var x = sqrt().range(["hsl(0,100%,50%)", "hsl(240,100%,50%)"]);
279+
assert.equal(x(.25), "rgb(128,0,128)");
280+
},
281+
"can specify range values as arrays or objects": function(sqrt) {
282+
var x = sqrt().range([{color: "red"}, {color: "blue"}]);
283+
assert.deepEqual(x(.25), {color: "rgb(128,0,128)"});
284+
var x = sqrt().range([["red"], ["blue"]]);
285+
assert.deepEqual(x(.25), ["rgb(128,0,128)"]);
286+
},
287+
"can specify a custom interpolator": function(sqrt) {
288+
var x = sqrt().range(["red", "blue"]).interpolate(d3.interpolateHsl);
289+
assert.equal(x(.25), "#00ff00");
290+
},
291+
"can clamp to the domain": function(sqrt) {
292+
var x = sqrt().clamp(true);
293+
assert.inDelta(x(-.5), 0, 1e-6);
294+
assert.inDelta(x(.25), .5, 1e-6);
295+
assert.inDelta(x(1.5), 1, 1e-6);
296+
var x = sqrt().domain([1, 0]).clamp(true);
297+
assert.inDelta(x(-.5), 1, 1e-6);
298+
assert.inDelta(x(.25), .5, 1e-6);
299+
assert.inDelta(x(1.5), 0, 1e-6);
300+
},
301+
"can generate ticks of varying degree": function(sqrt) {
302+
var x = sqrt();
303+
assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
304+
assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
305+
assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
306+
assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
307+
var x = sqrt().domain([1, 0]);
308+
assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
309+
assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
310+
assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
311+
assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
312+
},
313+
"can nice the domain, extending it to round numbers": function(sqrt) {
314+
var x = sqrt().domain([1.1, 10.9]).nice(), f = d3.format(".6f");
315+
assert.deepEqual(x.domain().map(f), [1, 11]);
316+
var x = sqrt().domain([10.9, 1.1]).nice();
317+
assert.deepEqual(x.domain().map(f), [11, 1]);
318+
var x = sqrt().domain([.7, 11.001]).nice();
319+
assert.deepEqual(x.domain().map(f), [0, 12]);
320+
var x = sqrt().domain([123.1, 6.7]).nice();
321+
assert.deepEqual(x.domain().map(f), [130, 0]);
322+
var x = sqrt().domain([0, .49]).nice();
323+
assert.deepEqual(x.domain().map(f), [0, .5]);
324+
},
325+
"can specify a polypower domain and range": function(sqrt) {
326+
var x = sqrt().domain([-10, 0, 100]).range(["red", "white", "green"]);
327+
assert.equal(x(-5), "rgb(255,75,75)");
328+
assert.equal(x(50), "rgb(75,165,75)");
329+
assert.equal(x(75), "rgb(34,145,34)");
330+
},
331+
"nicing a polypower domain only affects the extent": function(sqrt) {
332+
var x = sqrt().domain([1.1, 1, 2, 3, 10.9]).nice(), f = d3.format(".6f");
333+
assert.deepEqual(x.domain().map(f), [1, 1, 2, 3, 11]);
334+
var x = sqrt().domain([123.1, 1, 2, 3, -.9]).nice();
335+
assert.deepEqual(x.domain().map(f), [130, 1, 2, 3, "−10.000000"]);
336+
}
173337
}
174338
});
175339

test/scale/test-sqrt.js

Lines changed: 0 additions & 51 deletions
This file was deleted.

test/scale/test-sqrt.out

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)