| var assert = require("../assert"); | |
| module.exports = { | |
| topic: function(d3) { | |
| var s = d3.select("body").append("div").selectAll("div") | |
| .data(["one", "two", "three", "four"]) | |
| .enter().append("div") | |
| .attr("class", String); | |
| s.filter(function(d, i) { return i > 0; }).append("span"); | |
| s.filter(function(d, i) { return i > 1; }).append("span"); | |
| s[0][3] = null; | |
| return s.transition() | |
| .delay(function(d, i) { return i * 13; }) | |
| .duration(function(d, i) { return i * 21; }); | |
| }, | |
| "selects all matching elements": function(transition) { | |
| var t = transition.selectAll("span"); | |
| assert.domEqual(t[1][0].parentNode, transition[0][1]); | |
| assert.domEqual(t[2][0].parentNode, transition[0][2]); | |
| assert.domEqual(t[2][1].parentNode, transition[0][2]); | |
| }, | |
| "ignores null elements": function(transition) { | |
| var t = transition.selectAll("span"); | |
| assert.equal(t.length, 3); | |
| }, | |
| "propagates delay to the selected elements": function(transition) { | |
| var t = transition.selectAll("span"); | |
| assert.domEqual(t[1][0].__transition__[t.id].delay, 13); | |
| assert.domEqual(t[2][0].__transition__[t.id].delay, 26); | |
| assert.domEqual(t[2][1].__transition__[t.id].delay, 26); | |
| }, | |
| "propagates duration to the selected elements": function(transition) { | |
| var t = transition.selectAll("span"); | |
| assert.domEqual(t[1][0].__transition__[t.id].duration, 21); | |
| assert.domEqual(t[2][0].__transition__[t.id].duration, 42); | |
| assert.domEqual(t[2][1].__transition__[t.id].duration, 42); | |
| }, | |
| "returns empty if no match is found": function(transition) { | |
| var t = transition.selectAll("span"); | |
| assert.isEmpty(t[0]); | |
| }, | |
| "inherits transition id": function(transition) { | |
| var id = transition.id, | |
| t0 = transition.selectAll("span"), | |
| t1 = transition.selectAll("span"); | |
| assert.equal(t0.id, id); | |
| assert.equal(t1.id, id); | |
| }, | |
| "groups are arrays, not instances of NodeList": function(transition) { | |
| var t = transition.selectAll(function() { return this.getElementsByClassName("span"); }); | |
| assert.isTrue(Array.isArray(t[0])); | |
| } | |
| }; |