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