diff --git a/test/svg/line-test.js b/test/svg/line-test.js new file mode 100644 index 00000000..d4a3dacc --- /dev/null +++ b/test/svg/line-test.js @@ -0,0 +1,83 @@ +require("../env"); +require("../../d3"); + +var vows = require("vows"), + assert = require("assert"); + +var suite = vows.describe("d3.svg.line"); + +suite.addBatch({ + "line": { + topic: function() { + return d3.svg.line; + }, + "default accessors assume tuple input": function(line) { + var a = line(); + assert.pathEqual(a([[0, 0]]), "M0,0"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0,0L1,1"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M0,0L1,1L2,0"); + }, + "can specify x-accessor as a function": function(line) { + var i = 0, a = line().x(function() { return ++i; }); + assert.pathEqual(a([[0, 0]]), "M1,0"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M2,0L3,1"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M4,0L5,1L6,0"); + }, + "can specify y-accessor as a function": function(line) { + var i = 0, a = line().y(function() { return ++i; }); + assert.pathEqual(a([[0, 0]]), "M0,1"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0,2L1,3"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M0,4L1,5L2,6"); + }, + "can specify y-accessor as a constant": function(line) { + var a = line().y(-1); + assert.pathEqual(a([[0, 0]]), "M0,-1"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0,-1L1,-1"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M0,-1L1,-1L2,-1"); + }, + "supports step-before interpolation": function(line) { + var a = line().interpolate("step-before"); + assert.pathEqual(a([[0, 0]]), "M0,0"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0,0V1H1"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M0,0V1H1V0H2"); + }, + "supports step-after interpolation": function(line) { + var a = line().interpolate("step-after"); + assert.pathEqual(a([[0, 0]]), "M0,0"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0,0H1V1"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M0,0H1V1H2V0"); + }, + "supports basis interpolation": function(line) { + var a = line().interpolate("basis"); + assert.pathEqual(a([[0, 0]]), "M0,0"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0,0L1,1"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M0,0C0,0,0,0,0.16666666666666666,0.16666666666666666C0.3333333333333333,0.3333333333333333,0.6666666666666666,0.6666666666666666,1,0.6666666666666666C1.3333333333333333,0.6666666666666666,1.6666666666666665,0.3333333333333333,1.8333333333333333,0.16666666666666666C2,0,2,0,1.9999999999999998,0"); + }, + "supports basis-closed interpolation": function(line) { + var a = line().interpolate("basis-closed"); + assert.pathEqual(a([[0, 0]]), "M0,0C0,0,0,0,0,0"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0.3333333333333333,0.3333333333333333C0.3333333333333333,0.3333333333333333,0.6666666666666666,0.6666666666666666,0.6666666666666666,0.6666666666666666C0.6666666666666666,0.6666666666666666,0.3333333333333333,0.3333333333333333,0.3333333333333333,0.3333333333333333"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M1.5,0.16666666666666666C1.3333333333333333,0,0.6666666666666666,0,0.5,0.16666666666666666C0.3333333333333333,0.3333333333333333,0.6666666666666666,0.6666666666666666,1,0.6666666666666666C1.3333333333333333,0.6666666666666666,1.6666666666666665,0.3333333333333333,1.5,0.16666666666666666"); + }, + "supports cardinal interpolation": function(line) { + var a = line().interpolate("cardinal"); + assert.pathEqual(a([[0, 0]]), "M0,0"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0,0L1,1"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M0,0Q0.7999999999999999,1,1,1Q1.2,1,2,0"); + }, + "supports cardinal-closed interpolation": function(line) { + var a = line().interpolate("cardinal-closed"); + assert.pathEqual(a([[0, 0]]), "M0,0"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0,0L1,1"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M0,0C-0.15000000000000002,0.15000000000000002,0.7,1,1,1S2.15,0.15000000000000002,2,0S0.15000000000000002,-0.15000000000000002,0,0"); + }, + "supports monotone interpolation": function(line) { + var a = line().interpolate("monotone"); + assert.pathEqual(a([[0, 0]]), "M0,0"); + assert.pathEqual(a([[0, 0], [1, 1]]), "M0,0L1,1"); + assert.pathEqual(a([[0, 0], [1, 1], [2, 0]]), "M0,0C0.08333333333333333,0.08333333333333333,0.6666666666666667,1,1,1S1.9166666666666667,0.08333333333333333,2,0"); + } + } +}); + +suite.export(module); diff --git a/test/svg/test-line.js b/test/svg/test-line.js deleted file mode 100644 index b82dc747..00000000 --- a/test/svg/test-line.js +++ /dev/null @@ -1,93 +0,0 @@ -require("./../../lib/env-js/envjs/node"); -require("./../../lib/sizzle/sizzle"); -require("./../../d3"); - -var line = d3.svg.line(); - -console.log("default:"); -console.log(" [[0, 0]]:", line([[0, 0]])); -console.log(" [[0, 0], [1, 1]]:", line([[0, 0], [1, 1]])); -console.log(" [[0, 0], [1, 1], [2, 0]]:", line([[0, 0], [1, 1], [2, 0]])); -console.log(""); - -var line = d3.svg.line() - .y(-1); - -console.log("y(-1):"); -console.log(" [[0, 0]]:", line([[0, 0]])); -console.log(" [[0, 0], [1, 1]]:", line([[0, 0], [1, 1]])); -console.log(" [[0, 0], [1, 1], [2, 0]]:", line([[0, 0], [1, 1], [2, 0]])); -console.log(""); - -var line = d3.svg.line() - .x(function(d) { return d.x; }) - .y(function(d) { return d.y; }); - -console.log("x(d.x).y(d.y):"); -console.log(" [{x:0,y:0}]:", line([{x:0,y:0}])); -console.log(" [{x:0,y:0},{x:1,y:1}]:", line([{x:0,y:0},{x:1,y:1}])); -console.log(" [{x:0,y:0},{x:1,y:1},{x:2,y:0}]:", line([{x:0,y:0},{x:1,y:1},{x:2,y:0}])); -console.log(""); - -var line = d3.svg.line() - .interpolate("step-before"); - -console.log("interpolate(step-before):"); -console.log(" [[0, 0]]:", line([[0, 0]])); -console.log(" [[0, 0], [1, 1]]:", line([[0, 0], [1, 1]])); -console.log(" [[0, 0], [1, 1], [2, 0]]:", line([[0, 0], [1, 1], [2, 0]])); -console.log(""); - -var line = d3.svg.line() - .interpolate("step-after"); - -console.log("interpolate(step-after):"); -console.log(" [[0, 0]]:", line([[0, 0]])); -console.log(" [[0, 0], [1, 1]]:", line([[0, 0], [1, 1]])); -console.log(" [[0, 0], [1, 1], [2, 0]]:", line([[0, 0], [1, 1], [2, 0]])); -console.log(""); - -var line = d3.svg.line() - .interpolate("basis"); - -console.log("interpolate(basis):"); -console.log(" [[0, 0]]:", line([[0, 0]])); -console.log(" [[0, 0], [1, 1]]:", line([[0, 0], [1, 1]])); -console.log(" [[0, 0], [6, 6], [12, 0]]:", line([[0, 0], [6, 6], [12, 0]])); -console.log(""); - -var line = d3.svg.line() - .interpolate("basis-closed"); - -console.log("interpolate(basis-closed):"); -console.log(" [[0, 0]]:", line([[0, 0]])); -console.log(" [[0, 0], [6, 6]]:", line([[0, 0], [6, 6]])); -console.log(" [[0, 0], [6, 6], [12, 0]]:", line([[0, 0], [6, 6], [12, 0]])); -console.log(""); - -var line = d3.svg.line() - .interpolate("cardinal"); - -console.log("interpolate(cardinal):"); -console.log(" [[0, 0]]:", line([[0, 0]])); -console.log(" [[0, 0], [5, 5]]:", line([[0, 0], [5, 5]])); -console.log(" [[0, 0], [5, 5], [10, 0]]:", line([[0, 0], [5, 5], [10, 0]])); -console.log(""); - -var line = d3.svg.line() - .interpolate("cardinal-closed"); - -console.log("interpolate(cardinal-closed):"); -console.log(" [[0, 0]]:", line([[0, 0]])); -console.log(" [[0, 0], [5, 5]]:", line([[0, 0], [5, 5]])); -console.log(" [[0, 0], [5, 5], [10, 0]]:", line([[0, 0], [5, 5], [10, 0]])); -console.log(""); - -var line = d3.svg.line() - .interpolate("monotone"); - -console.log("interpolate(monotone):"); -console.log(" [[0, 0]]:", line([[0, 0]])); -console.log(" [[0, 0], [5, 5]]:", line([[0, 0], [5, 5]])); -console.log(" [[0, 0], [5, 5], [10, 0]]:", line([[0, 0], [5, 5], [10, 0]])); -console.log(""); diff --git a/test/svg/test-line.out b/test/svg/test-line.out deleted file mode 100644 index 9cfedd19..00000000 --- a/test/svg/test-line.out +++ /dev/null @@ -1,50 +0,0 @@ -default: - [[0, 0]]: M0,0 - [[0, 0], [1, 1]]: M0,0L1,1 - [[0, 0], [1, 1], [2, 0]]: M0,0L1,1L2,0 - -y(-1): - [[0, 0]]: M0,-1 - [[0, 0], [1, 1]]: M0,-1L1,-1 - [[0, 0], [1, 1], [2, 0]]: M0,-1L1,-1L2,-1 - -x(d.x).y(d.y): - [{x:0,y:0}]: M0,0 - [{x:0,y:0},{x:1,y:1}]: M0,0L1,1 - [{x:0,y:0},{x:1,y:1},{x:2,y:0}]: M0,0L1,1L2,0 - -interpolate(step-before): - [[0, 0]]: M0,0 - [[0, 0], [1, 1]]: M0,0V1H1 - [[0, 0], [1, 1], [2, 0]]: M0,0V1H1V0H2 - -interpolate(step-after): - [[0, 0]]: M0,0 - [[0, 0], [1, 1]]: M0,0H1V1 - [[0, 0], [1, 1], [2, 0]]: M0,0H1V1H2V0 - -interpolate(basis): - [[0, 0]]: M0,0 - [[0, 0], [1, 1]]: M0,0L1,1 - [[0, 0], [6, 6], [12, 0]]: M0,0C0,0,0,0,1,1C2,2,4,4,6,4C8,4,10,2,11,1C12,0,12,0,12,0 - -interpolate(basis-closed): - [[0, 0]]: M0,0C0,0,0,0,0,0 - [[0, 0], [6, 6]]: M2,2C2,2,4,4,4,4C4,4,2,2,2,2 - [[0, 0], [6, 6], [12, 0]]: M9,1C8,0,4,0,3,1C2,2,4,4,6,4C8,4,10,2,9,1 - -interpolate(cardinal): - [[0, 0]]: M0,0 - [[0, 0], [5, 5]]: M0,0L5,5 - [[0, 0], [5, 5], [10, 0]]: M0,0Q4,5,5,5Q6,5,10,0 - -interpolate(cardinal-closed): - [[0, 0]]: M0,0 - [[0, 0], [5, 5]]: M0,0L5,5 - [[0, 0], [5, 5], [10, 0]]: M0,0C-0.7500000000000001,0.7500000000000001,3.5,5,5,5S10.75,0.7500000000000001,10,0S0.7500000000000001,-0.7500000000000001,0,0 - -interpolate(monotone): - [[0, 0]]: M0,0 - [[0, 0], [5, 5]]: M0,0L5,5 - [[0, 0], [5, 5], [10, 0]]: M0,0C0.4166666666666667,0.4166666666666667,3.333333333333333,5,5,5S9.583333333333334,0.4166666666666667,10,0 -