Skip to content

Commit 9684389

Browse files
committed
Add test for scale.log.
1 parent 9a2c6a0 commit 9684389

3 files changed

Lines changed: 139 additions & 188 deletions

File tree

test/scale/log-test.js

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
require("../env");
2+
require("../../d3");
3+
4+
var vows = require("vows"),
5+
assert = require("assert");
6+
7+
var suite = vows.describe("d3.scale.log");
8+
9+
suite.addBatch({
10+
"log": {
11+
topic: function() {
12+
return d3.scale.log;
13+
},
14+
"has the default domain [1, 10]": function(log) {
15+
var x = log();
16+
assert.deepEqual(x.domain(), [1, 10]);
17+
assert.inDelta(x(5), 0.69897, 1e-6);
18+
},
19+
"has the default range [0, 1]": function(log) {
20+
var x = log();
21+
assert.deepEqual(x.range(), [0, 1]);
22+
assert.inDelta(x.invert(.5), 3.162278, 1e-6);
23+
},
24+
"has the default interpolator d3.interpolate": function(log) {
25+
var x = log().range(["red", "blue"]);
26+
assert.equal(x.interpolate(), d3.interpolate);
27+
assert.equal(x(5), "rgb(77,0,178)");
28+
},
29+
"does not clamp by default": function(log) {
30+
var x = log();
31+
assert.isFalse(x.clamp());
32+
assert.inDelta(x(.5), -0.3010299, 1e-6);
33+
assert.inDelta(x(15), 1.1760913, 1e-6);
34+
},
35+
"maps a number to a number": function(log) {
36+
var x = log().domain([1, 2]);
37+
assert.inDelta(x(.5), -1, 1e-6);
38+
assert.inDelta(x(1), 0, 1e-6);
39+
assert.inDelta(x(1.5), 0.5849625, 1e-6);
40+
assert.inDelta(x(2), 1, 1e-6);
41+
assert.inDelta(x(2.5), 1.3219281, 1e-6);
42+
},
43+
"coerces domain to numbers": function(log) {
44+
var x = log().domain([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
45+
assert.equal(typeof x.domain()[0], "number");
46+
assert.equal(typeof x.domain()[1], "number");
47+
assert.inDelta(x(new Date(1989, 09, 20)), -.2, 1e-2);
48+
assert.inDelta(x(new Date(1990, 00, 01)), 0, 1e-2);
49+
assert.inDelta(x(new Date(1990, 02, 15)), .2, 1e-2);
50+
assert.inDelta(x(new Date(1990, 04, 27)), .4, 1e-2);
51+
assert.inDelta(x(new Date(1991, 00, 01)), 1, 1e-2);
52+
assert.inDelta(x(new Date(1991, 02, 15)), 1.2, 1e-2);
53+
var x = log().domain(["1", "10"]);
54+
assert.equal(typeof x.domain()[0], "number");
55+
assert.equal(typeof x.domain()[1], "number");
56+
assert.inDelta(x(5), 0.69897, 1e-6);
57+
var x = log().domain([new Number(1), new Number(10)]);
58+
assert.equal(typeof x.domain()[0], "number");
59+
assert.equal(typeof x.domain()[1], "number");
60+
assert.inDelta(x(5), 0.69897, 1e-6);
61+
},
62+
"does not coerce range to numbers": function(log) {
63+
var x = log().range(["0", "2"]);
64+
assert.equal(typeof x.range()[0], "string");
65+
assert.equal(typeof x.range()[1], "string");
66+
},
67+
"coerces range value to number on invert": function(log) {
68+
var x = log().range(["0", "2"]);
69+
assert.inDelta(x.invert("1"), 3.1622777, 1e-6);
70+
var x = log().range([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
71+
assert.inDelta(x.invert(new Date(1990, 6, 2, 13)), 3.1622777, 1e-6);
72+
var x = log().range(["#000", "#fff"]);
73+
assert.isNaN(x.invert("#999"));
74+
},
75+
"can specify negative domain values": function(log) {
76+
var x = log().domain([-100, -1]);
77+
assert.deepEqual(x.ticks().map(x.tickFormat()), [-100, -90, -80, -70, -60, -50, -40, -30, -20, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1]);
78+
assert.inDelta(x(-50), 0.150515, 1e-6);
79+
},
80+
"can specify range values as colors": function(log) {
81+
var x = log().range(["red", "blue"]);
82+
assert.equal(x(5), "rgb(77,0,178)");
83+
var x = log().range(["#ff0000", "#0000ff"]);
84+
assert.equal(x(5), "rgb(77,0,178)");
85+
var x = log().range(["#f00", "#00f"]);
86+
assert.equal(x(5), "rgb(77,0,178)");
87+
var x = log().range([d3.rgb(255,0,0), d3.hsl(240,1,.5)]);
88+
assert.equal(x(5), "rgb(77,0,178)");
89+
var x = log().range(["hsl(0,100%,50%)", "hsl(240,100%,50%)"]);
90+
assert.equal(x(5), "rgb(77,0,178)");
91+
},
92+
"can specify range values as arrays or objects": function(log) {
93+
var x = log().range([{color: "red"}, {color: "blue"}]);
94+
assert.deepEqual(x(5), {color: "rgb(77,0,178)"});
95+
var x = log().range([["red"], ["blue"]]);
96+
assert.deepEqual(x(5), ["rgb(77,0,178)"]);
97+
},
98+
"can specify a custom interpolator": function(log) {
99+
var x = log().range(["red", "blue"]).interpolate(d3.interpolateHsl);
100+
assert.equal(x(5), "#00ffcb");
101+
},
102+
"can clamp to the domain": function(log) {
103+
var x = log().clamp(true);
104+
assert.inDelta(x(.5), 0, 1e-6);
105+
assert.inDelta(x(5), 0.69897, 1e-6);
106+
assert.inDelta(x(15), 1, 1e-6);
107+
var x = log().domain([10, 1]).clamp(true);
108+
assert.inDelta(x(.5), 1, 1e-6);
109+
assert.inDelta(x(5), 0.30103, 1e-6);
110+
assert.inDelta(x(15), 0, 1e-6);
111+
},
112+
"can generate ticks": function(log) {
113+
var x = log();
114+
assert.deepEqual(x.ticks().map(x.tickFormat()), [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
115+
var x = log().domain([100, 1]);
116+
assert.deepEqual(x.ticks().map(x.tickFormat()), [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]);
117+
},
118+
"can nice the domain, extending it to powers of ten": function(log) {
119+
var x = log().domain([1.1, 10.9]).nice();
120+
assert.deepEqual(x.domain(), [1, 100]);
121+
var x = log().domain([10.9, 1.1]).nice();
122+
assert.deepEqual(x.domain(), [100, 1]);
123+
var x = log().domain([.7, 11.001]).nice();
124+
assert.deepEqual(x.domain(), [.1, 100]);
125+
var x = log().domain([123.1, 6.7]).nice();
126+
assert.deepEqual(x.domain(), [1000, 1]);
127+
var x = log().domain([.01, .49]).nice();
128+
assert.deepEqual(x.domain(), [.01, 1]);
129+
},
130+
"can specify a polylinear domain and range": function(log) {
131+
var x = log().domain([.1, 1, 100]).range(["red", "white", "green"]);
132+
assert.equal(x(.5), "rgb(255,178,178)");
133+
assert.equal(x(50), "rgb(38,147,38)");
134+
assert.equal(x(75), "rgb(16,136,16)");
135+
}
136+
}
137+
});
138+
139+
suite.export(module);

test/scale/test-log.js

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

test/scale/test-log.out

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

0 commit comments

Comments
 (0)