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