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);
