Skip to content

Commit cdfbca9

Browse files
committed
Add test for scale.quantile.
1 parent d6f4b2a commit cdfbca9

3 files changed

Lines changed: 64 additions & 247 deletions

File tree

test/scale/quantile-test.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
require("../env");
2+
require("../../d3");
3+
4+
var vows = require("vows"),
5+
assert = require("assert");
6+
7+
var suite = vows.describe("d3.scale.quantile");
8+
9+
suite.addBatch({
10+
"quantile": {
11+
topic: function() {
12+
return d3.scale.quantile;
13+
},
14+
"has the empty domain by default": function(quantile) {
15+
assert.isEmpty(quantile().domain());
16+
},
17+
"has the empty range by default": function(quantile) {
18+
assert.isEmpty(quantile().range());
19+
},
20+
"uses the R-7 algorithm to compute quantiles": function(quantile) {
21+
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
22+
assert.deepEqual([3, 6, 6.9, 7, 7.1].map(x), [0, 0, 0, 0, 0]);
23+
assert.deepEqual([8, 8.9].map(x), [1, 1]);
24+
assert.deepEqual([9, 9.1, 10, 13].map(x), [2, 2, 2, 2]);
25+
assert.deepEqual([14.9, 15, 15.1, 16, 20].map(x), [3, 3, 3, 3, 3]);
26+
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
27+
assert.deepEqual([3, 6, 6.9, 7, 7.1].map(x), [0, 0, 0, 0, 0]);
28+
assert.deepEqual([8, 8.9].map(x), [1, 1]);
29+
assert.deepEqual([9, 9.1, 10, 13].map(x), [2, 2, 2, 2]);
30+
assert.deepEqual([14.9, 15, 15.1, 16, 20].map(x), [3, 3, 3, 3, 3]);
31+
},
32+
"domain values are sorted in ascending order": function(quantile) {
33+
var x = d3.scale.quantile().domain([6, 3, 7, 8, 8, 13, 20, 15, 16, 10]);
34+
assert.deepEqual(x.domain(), [3, 6, 7, 8, 8, 10, 13, 15, 16, 20]);
35+
},
36+
"non-numeric domain values are ignored": function(quantile) {
37+
var x = d3.scale.quantile().domain([6, 3, NaN, undefined, 7, 8, 8, 13, 20, 15, 16, 10, NaN]);
38+
assert.deepEqual(x.domain(), [3, 6, 7, 8, 8, 10, 13, 15, 16, 20]);
39+
},
40+
"quantiles returns the inner thresholds": function(quantile) {
41+
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
42+
assert.deepEqual(x.quantiles(), [7.25, 9, 14.5]);
43+
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
44+
assert.deepEqual(x.quantiles(), [7.5, 9, 14]);
45+
},
46+
"range cardinality determines the number of quantiles": function(quantile) {
47+
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]);;
48+
assert.deepEqual(x.range([0, 1, 2, 3]).quantiles(), [7.25, 9, 14.5]);
49+
assert.deepEqual(x.range([0, 1]).quantiles(), [9]);
50+
assert.deepEqual(x.range([,,,,,]).quantiles(), [6.8, 8, 11.2, 15.2]);
51+
assert.deepEqual(x.range([,,,,,,]).quantiles(), [6.5, 8, 9, 13, 15.5]);
52+
},
53+
"range values are arbitrary": function(quantile) {
54+
var a = new Object(), b = new Object(), c = new Object();
55+
var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]).range([a, b, c, a]);
56+
assert.deepEqual([3, 6, 6.9, 7, 7.1].map(x), [a, a, a, a, a]);
57+
assert.deepEqual([8, 8.9].map(x), [b, b]);
58+
assert.deepEqual([9, 9.1, 10, 13].map(x), [c, c, c, c]);
59+
assert.deepEqual([14.9, 15, 15.1, 16, 20].map(x), [a, a, a, a, a]);
60+
}
61+
}
62+
});
63+
64+
suite.export(module);

test/scale/test-quantile.js

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

test/scale/test-quantile.out

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

0 commit comments

Comments
 (0)