|
1 require("../env"); |
|
2 require("../../d3"); |
|
3 |
|
4 var vows = require("vows"), |
|
5 assert = require("assert"); |
|
6 |
|
7 var suite = vows.describe("d3.quantile"); |
|
8 |
|
9 suite.addBatch({ |
|
10 "quantile": { |
|
11 topic: function() { |
|
12 return d3.quantile; |
|
13 }, |
|
14 "requires sorted numeric input": function(quantile) { |
|
15 assert.equal(quantile([1, 2, 3, 4], 0), 1); |
|
16 assert.equal(quantile([1, 2, 3, 4], 1), 4); |
|
17 assert.equal(quantile([4, 3, 2, 1], 0), 4); |
|
18 assert.equal(quantile([4, 3, 2, 1], 1), 1); |
|
19 }, |
|
20 "uses the R-7 algorithm": function(quantile) { |
|
21 var data = [3, 6, 7, 8, 8, 10, 13, 15, 16, 20]; |
|
22 assert.equal(quantile(data, 0), 3); |
|
23 assert.equal(quantile(data, .25), 7.25); |
|
24 assert.equal(quantile(data, .5), 9); |
|
25 assert.equal(quantile(data, .75), 14.5); |
|
26 assert.equal(quantile(data, 1), 20); |
|
27 var data = [3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20]; |
|
28 assert.equal(quantile(data, 0), 3); |
|
29 assert.equal(quantile(data, .25), 7.5); |
|
30 assert.equal(quantile(data, .5), 9); |
|
31 assert.equal(quantile(data, .75), 14); |
|
32 assert.equal(quantile(data, 1), 20); |
|
33 }, |
|
34 "returns an exact value for integer p-values": function(quantile) { |
|
35 var a = {}, b = {}, c = {}, d = {}, data = [a, b, c, d]; |
|
36 assert.equal(quantile(data, 1/3), b); |
|
37 assert.equal(quantile(data, 2/3), c); |
|
38 }, |
|
39 "returns the first value for p = 0": function(quantile) { |
|
40 var a = {}, b = {}, c = {}, d = {}, data = [a, b, c, d]; |
|
41 assert.equal(quantile(data, 0), a); |
|
42 }, |
|
43 "returns the last value for p = 1": function(quantile) { |
|
44 var a = {}, b = {}, c = {}, d = {}, data = [a, b, c, d]; |
|
45 assert.equal(quantile(data, 1), d); |
|
46 } |
|
47 } |
|
48 }); |
|
49 |
|
50 suite.export(module); |