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