toolkit/javascript/d3/test/core/quantile-test.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     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);