Codebase list node-d3-shape / cdf8382 test / offset / diverging-test.js
cdf8382

Tree @cdf8382 (Download .tar.gz)

diverging-test.js @cdf8382raw · history · blame

var tape = require("tape"),
    shape = require("../../");

tape("stackOffsetDiverging(series, order) applies a zero baseline, ignoring existing offsets", function(test) {
  var series = [
    [[1, 2], [2, 4], [3, 4]],
    [[0, 3], [0, 4], [0, 2]],
    [[0, 5], [0, 2], [0, 4]]
  ];
  shape.stackOffsetDiverging(series, shape.stackOrderNone(series));
  test.deepEqual(series, [
    [[0, 1], [0, 2], [0, 1]],
    [[1, 4], [2, 6], [1, 3]],
    [[4, 9], [6, 8], [3, 7]]
  ]);
  test.end();
});

tape("stackOffsetDiverging(series, order) handles a single series", function(test) {
  var series = [
    [[1, 2], [2, 4], [3, 4]]
  ];
  shape.stackOffsetDiverging(series, shape.stackOrderNone(series));
  test.deepEqual(series, [
    [[0, 1], [0, 2], [0, 1]]
  ]);
  test.end();
});

tape("stackOffsetDiverging(series, order) treats NaN as zero", function(test) {
  var series = [
    [[0, 1], [0,   2], [0, 1]],
    [[0, 3], [0, NaN], [0, 2]],
    [[0, 5], [0,   2], [0, 4]]
  ];
  shape.stackOffsetDiverging(series, shape.stackOrderNone(series));
  test.ok(isNaN(series[1][1][1]));
  series[1][1][1] = "NaN"; // can’t test.equal NaN
  test.deepEqual(series, [
    [[0, 1], [0,     2], [0, 1]],
    [[1, 4], [0, "NaN"], [1, 3]],
    [[4, 9], [2,     4], [3, 7]]
  ]);
  test.end();
});

tape("stackOffsetDiverging(series, order) observes the specified order", function(test) {
  var series = [
    [[0, 1], [0, 2], [0, 1]],
    [[0, 3], [0, 4], [0, 2]],
    [[0, 5], [0, 2], [0, 4]]
  ];
  shape.stackOffsetDiverging(series, shape.stackOrderReverse(series));
  test.deepEqual(series, [
    [[8, 9], [6, 8], [6, 7]],
    [[5, 8], [2, 6], [4, 6]],
    [[0, 5], [0, 2], [0, 4]]
  ]);
  test.end();
});

tape("stackOffsetDiverging(series, order) puts negative values below zero, in order", function(test) {
  var series = [
    [[0,  1], [0, -2], [0, -1]],
    [[0, -3], [0, -4], [0, -2]],
    [[0, -5], [0, -2], [0,  4]]
  ];
  shape.stackOffsetDiverging(series, shape.stackOrderNone(series));
  test.deepEqual(series, [
    [[ 0,  1], [-2,  0], [-1,  0]],
    [[-3,  0], [-6, -2], [-3, -1]],
    [[-8, -3], [-8, -6], [ 0,  4]]
  ]);
  test.end();
});

tape("stackOffsetDiverging(series, order) puts zero values at zero, in order", function(test) {
  var series = [
    [[0, 1], [0, 2], [0, -1]],
    [[0, 3], [0, 0], [0, 0]],
    [[0, 5], [0, 2], [0, 4]]
  ];
  shape.stackOffsetDiverging(series, shape.stackOrderNone(series));
  test.deepEqual(series, [
    [[0, 1], [0, 2], [-1, 0]],
    [[1, 4], [0, 0], [0, 0]],
    [[4, 9], [2, 4], [0, 4]]
  ]);
  test.end();
});