var vows = require("vows"), load = require("../load"), assert = require("../assert"); var suite = vows.describe("d3.interpolateTransform"); suite.addBatch({ "interpolateTransform": { topic: load("interpolate/transform").document(), "interpolation of a decomposed transform": { topic: function(d3) { // Use a custom d3.transform to parse a decomposed transform, since // JSDOM doesn't support consolidating SVG transform strings. d3.transform = function(s) { var m = s.split(/,/g).map(Number); return { translate: [m[0], m[1]], rotate: m[2], skew: m[3], scale: [m[4], m[5]] }; }; return d3; }, "identity": function(d3) { assert.strictEqual(d3.interpolateTransform([0, 0, 0, 0, 1, 1] + "", [0, 0, 0, 0, 1, 1] + "")(.4), ""); }, "translate": { "x": function(d3) { assert.strictEqual(d3.interpolateTransform([0, 0, 0, 0, 1, 1] + "", [10, 0, 0, 0, 1, 1] + "")(.4), "translate(4,0)"); }, "y": function(d3) { assert.strictEqual(d3.interpolateTransform([0, 0, 0, 0, 1, 1] + "", [0, 10, 0, 0, 1, 1] + "")(.4), "translate(0,4)"); }, "x and y": function(d3) { assert.strictEqual(d3.interpolateTransform([0, 0, 0, 0, 1, 1] + "", [1, 10, 0, 0, 1, 1] + "")(.4), "translate(0.4,4)"); } }, "rotate": { "simple": function(d3) { assert.strictEqual(d3.interpolateTransform([0, 0, -10, 0, 1, 1] + "", [0, 0, 30, 0, 1, 1] + "")(.4), "rotate(6)"); }, "with constant translate": function(d3) { assert.strictEqual(d3.interpolateTransform([5, 6, -10, 0, 1, 1] + "", [5, 6, 30, 0, 1, 1] + "")(.4), "translate(5,6)rotate(6)"); } }, "skew": function(d3) { assert.strictEqual(d3.interpolateTransform([0, 0, 0, 0, 1, 1] + "", [0, 0, 0, 40, 1, 1] + "")(.4), "skewX(16)"); }, "scale": function(d3) { assert.strictEqual(d3.interpolateTransform([0, 0, 0, 0, 1, 1] + "", [0, 0, 0, 0, 10, 1] + "")(.5), "scale(5.5,1)"); }, "translate and rotate": function(d3) { assert.strictEqual(d3.interpolateTransform([0, 0, 0, 0, 1, 1] + "", [100, 0, 90, 0, 1, 1] + "")(.5), "translate(50,0)rotate(45)"); } } } }); suite.export(module);