57 строки
2.1 KiB
JavaScript
57 строки
2.1 KiB
JavaScript
var vows = require("vows"),
|
|
load = require("../load"),
|
|
assert = require("../assert");
|
|
|
|
var suite = vows.describe("d3.quantile");
|
|
|
|
suite.addBatch({
|
|
"quantile": {
|
|
topic: load("arrays/quantile").expression("d3.quantile"),
|
|
"requires sorted numeric input": function(quantile) {
|
|
assert.equal(quantile([1, 2, 3, 4], 0), 1);
|
|
assert.equal(quantile([1, 2, 3, 4], 1), 4);
|
|
assert.equal(quantile([4, 3, 2, 1], 0), 4);
|
|
assert.equal(quantile([4, 3, 2, 1], 1), 1);
|
|
},
|
|
"uses the R-7 algorithm": function(quantile) {
|
|
var data = [3, 6, 7, 8, 8, 10, 13, 15, 16, 20];
|
|
assert.equal(quantile(data, 0), 3);
|
|
assert.equal(quantile(data, .25), 7.25);
|
|
assert.equal(quantile(data, .5), 9);
|
|
assert.equal(quantile(data, .75), 14.5);
|
|
assert.equal(quantile(data, 1), 20);
|
|
var data = [3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20];
|
|
assert.equal(quantile(data, 0), 3);
|
|
assert.equal(quantile(data, .25), 7.5);
|
|
assert.equal(quantile(data, .5), 9);
|
|
assert.equal(quantile(data, .75), 14);
|
|
assert.equal(quantile(data, 1), 20);
|
|
},
|
|
"coerces values to numbers": function(quantile) {
|
|
var strings = ["1", "2", "3", "4"];
|
|
assert.strictEqual(quantile(strings, 1/3), 2);
|
|
assert.strictEqual(quantile(strings, 1/2), 2.5);
|
|
assert.strictEqual(quantile(strings, 2/3), 3);
|
|
var dates = [new Date(2011, 0, 1), new Date(2012, 0, 1)];
|
|
assert.strictEqual(quantile(dates, 0), +new Date(2011, 0, 1));
|
|
assert.strictEqual(quantile(dates, 1/2), +new Date(2011, 6, 2, 13));
|
|
assert.strictEqual(quantile(dates, 1), +new Date(2012, 0, 1));
|
|
},
|
|
"returns an exact value for integer p-values": function(quantile) {
|
|
var data = [1, 2, 3, 4];
|
|
assert.equal(quantile(data, 1/3), 2);
|
|
assert.equal(quantile(data, 2/3), 3);
|
|
},
|
|
"returns the first value for p = 0": function(quantile) {
|
|
var data = [1, 2, 3, 4];
|
|
assert.equal(quantile(data, 0), 1);
|
|
},
|
|
"returns the last value for p = 1": function(quantile) {
|
|
var data = [1, 2, 3, 4];
|
|
assert.equal(quantile(data, 1), 4);
|
|
}
|
|
}
|
|
});
|
|
|
|
suite.export(module);
|