d3-jsnext
Version:
d3, but futuristic
167 lines (148 loc) • 8.04 kB
JavaScript
require( 'babel/register' );
var vows = require("vows"),
load = require("../load"),
assert = require("../assert");
var suite = vows.describe("d3.layout.chord");
suite.addBatch({
"chord": {
topic: load("layout/chord").expression("d3.layout.chord"),
"of a simple matrix": {
topic: function(chord) {
return chord()
.padding(.05)
.sortSubgroups(function(a, b) { return b - a; })
.matrix([
[11975, 5871, 8916, 2868],
[ 1951, 10048, 2060, 6171],
[ 8010, 16145, 8090, 8045],
[ 1013, 990, 940, 6907]
]);
},
"computes chord groups": function(chord) {
var groups = chord.groups();
assert.equal(groups.length, 4);
assert.equal(groups[0].index, 0);
assert.inDelta(groups[0].startAngle, 0.0000000000000000, 1e-6);
assert.inDelta(groups[0].endAngle, 1.8024478065173115, 1e-6);
assert.inDelta(groups[0].value, 29630, 1e-6);
assert.equal(groups[1].index, 1);
assert.inDelta(groups[1].startAngle, 1.8524478065173116, 1e-6);
assert.inDelta(groups[1].endAngle, 3.0830761941597418, 1e-6);
assert.inDelta(groups[1].value, 20230, 1e-6);
assert.equal(groups[2].index, 2);
assert.inDelta(groups[2].startAngle, 3.1330761941597416, 1e-6);
assert.inDelta(groups[2].endAngle, 5.583991554422396, 1e-6);
assert.inDelta(groups[2].value, 40290, 1e-6);
assert.equal(groups[3].index, 3);
assert.inDelta(groups[3].startAngle, 5.6339915544223960, 1e-6);
assert.inDelta(groups[3].endAngle, 6.233185307179585, 1e-6);
assert.inDelta(groups[3].value, 9850, 1e-6);
},
"computes chords": function(chord) {
var chords = chord.chords();
assert.equal(chords.length, 10);
assert.equal(chords[0].source.index, 0);
assert.equal(chords[0].source.subindex, 0);
assert.inDelta(chords[0].source.startAngle, 0, 1e-6);
assert.inDelta(chords[0].source.endAngle, 0.7284614405347555, 1e-6);
assert.equal(chords[0].source.value, 11975);
assert.equal(chords[0].target.index, 0);
assert.equal(chords[0].target.subindex, 0);
assert.inDelta(chords[0].target.startAngle, 0, 1e-6);
assert.inDelta(chords[0].target.endAngle, 0.7284614405347555, 1e-6);
assert.equal(chords[0].target.value, 11975);
assert.equal(chords[1].source.index, 0);
assert.equal(chords[1].source.subindex, 1);
assert.inDelta(chords[1].source.startAngle, 1.2708382425228875, 1e-6);
assert.inDelta(chords[1].source.endAngle, 1.6279820519074009, 1e-6);
assert.equal(chords[1].source.value, 5871);
assert.equal(chords[1].target.index, 1);
assert.equal(chords[1].target.subindex, 0);
assert.inDelta(chords[1].target.startAngle, 2.964393248816668, 1e-6);
assert.inDelta(chords[1].target.endAngle, 3.0830761941597418, 1e-6);
assert.equal(chords[1].target.value, 1951);
assert.equal(chords[2].source.index, 0);
assert.equal(chords[2].source.subindex, 2);
assert.inDelta(chords[2].source.startAngle, 0.7284614405347555, 1e-6);
assert.inDelta(chords[2].source.endAngle, 1.2708382425228875, 1e-6);
assert.equal(chords[2].source.value, 8916);
assert.equal(chords[2].target.index, 2);
assert.equal(chords[2].target.subindex, 0);
assert.inDelta(chords[2].target.startAngle, 5.0967284113173115, 1e-6);
assert.inDelta(chords[2].target.endAngle, 5.583991554422396, 1e-6);
assert.equal(chords[2].target.value, 8010);
assert.equal(chords[3].source.index, 0);
assert.equal(chords[3].source.subindex, 3);
assert.inDelta(chords[3].source.startAngle, 1.6279820519074009, 1e-6);
assert.inDelta(chords[3].source.endAngle, 1.8024478065173115, 1e-6);
assert.equal(chords[3].source.value, 2868);
assert.equal(chords[3].target.index, 3);
assert.equal(chords[3].target.subindex, 0);
assert.inDelta(chords[3].target.startAngle, 6.05415716358929, 1e-6);
assert.inDelta(chords[3].target.endAngle, 6.115779830751019, 1e-6);
assert.equal(chords[3].target.value, 1013);
assert.equal(chords[4].source.index, 1);
assert.equal(chords[4].source.subindex, 1);
assert.inDelta(chords[4].source.startAngle, 1.8524478065173116, 1e-6);
assert.inDelta(chords[4].source.endAngle, 2.4636862661827164, 1e-6);
assert.equal(chords[4].source.value, 10048);
assert.equal(chords[4].target.index, 1);
assert.equal(chords[4].target.subindex, 1);
assert.inDelta(chords[4].target.startAngle, 1.8524478065173116, 1e-6);
assert.inDelta(chords[4].target.endAngle, 2.4636862661827164, 1e-6);
assert.equal(chords[4].target.value, 10048);
assert.equal(chords[5].source.index, 2);
assert.equal(chords[5].source.subindex, 1);
assert.inDelta(chords[5].source.startAngle, 3.1330761941597416, 1e-6);
assert.inDelta(chords[5].source.endAngle, 4.1152064620038855, 1e-6);
assert.equal(chords[5].source.value, 16145);
assert.equal(chords[5].target.index, 1);
assert.equal(chords[5].target.subindex, 2);
assert.inDelta(chords[5].target.startAngle, 2.8390796314887687, 1e-6);
assert.inDelta(chords[5].target.endAngle, 2.964393248816668, 1e-6);
assert.equal(chords[5].target.value, 2060);
assert.equal(chords[6].source.index, 1);
assert.equal(chords[6].source.subindex, 3);
assert.inDelta(chords[6].source.startAngle, 2.4636862661827164, 1e-6);
assert.inDelta(chords[6].source.endAngle, 2.8390796314887687, 1e-6);
assert.equal(chords[6].source.value, 6171);
assert.equal(chords[6].target.index, 3);
assert.equal(chords[6].target.subindex, 1);
assert.inDelta(chords[6].target.startAngle, 6.115779830751019, 1e-6);
assert.inDelta(chords[6].target.endAngle, 6.176003365292097, 1e-6);
assert.equal(chords[6].target.value, 990);
assert.equal(chords[7].source.index, 2);
assert.equal(chords[7].source.subindex, 2);
assert.inDelta(chords[7].source.startAngle, 4.1152064620038855, 1e-6);
assert.inDelta(chords[7].source.endAngle, 4.607336153354714, 1e-6);
assert.equal(chords[7].source.value, 8090);
assert.equal(chords[7].target.index, 2);
assert.equal(chords[7].target.subindex, 2);
assert.inDelta(chords[7].target.startAngle, 4.1152064620038855, 1e-6);
assert.inDelta(chords[7].target.endAngle, 4.607336153354714, 1e-6);
assert.equal(chords[7].target.value, 8090);
assert.equal(chords[8].source.index, 2);
assert.equal(chords[8].source.subindex, 3);
assert.inDelta(chords[8].source.startAngle, 4.607336153354714, 1e-6);
assert.inDelta(chords[8].source.endAngle, 5.0967284113173115, 1e-6);
assert.equal(chords[8].source.value, 8045);
assert.equal(chords[8].target.index, 3);
assert.equal(chords[8].target.subindex, 2);
assert.inDelta(chords[8].target.startAngle, 6.176003365292097, 1e-6);
assert.inDelta(chords[8].target.endAngle, 6.233185307179585, 1e-6);
assert.equal(chords[8].target.value, 940);
assert.equal(chords[9].source.index, 3);
assert.equal(chords[9].source.subindex, 3);
assert.inDelta(chords[9].source.startAngle, 5.633991554422396, 1e-6);
assert.inDelta(chords[9].source.endAngle, 6.05415716358929, 1e-6);
assert.equal(chords[9].source.value, 6907);
assert.equal(chords[9].target.index, 3);
assert.equal(chords[9].target.subindex, 3);
assert.inDelta(chords[9].target.startAngle, 5.633991554422396, 1e-6);
assert.inDelta(chords[9].target.endAngle, 6.05415716358929, 1e-6);
assert.equal(chords[9].target.value, 6907);
}
}
}
});
suite.export(module);