var vows = require("vows"),
    load = require("../load"),
    assert = require("../assert");

var suite = vows.describe("d3.svg.line");

suite.addBatch({
  "line": {
    topic: load("svg/line").expression("d3.svg.line"),

    "x defaults to a function accessor": function(line) {
      var l = line();
      assert.pathEqual(l([[1, 2], [4, 3]]), "M1,2L4,3");
      assert.typeOf(l.x(), "function");
    },
    "x can be defined as a constant": function(line) {
      var l = line().x(0);
      assert.pathEqual(l([[1, 2], [4, 3]]), "M0,2L0,3");
      assert.equal(l.x(), 0);
    },
    "x can be defined as a function": function(line) {
      var l = line().x(f), t = {}, dd = [], ii = [], tt = [];
      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 0; }
      assert.pathEqual(l.call(t, [[1, 2], [4, 3]]), "M0,2L0,3");
      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
    },

    "y defaults to a function accessor": function(line) {
      var l = line();
      assert.pathEqual(l([[1, 2], [4, 3]]), "M1,2L4,3");
      assert.typeOf(l.y(), "function");
    },
    "y can be defined as a constant": function(line) {
      var l = line().y(0);
      assert.pathEqual(l([[1, 2], [4, 3]]), "M1,0L4,0");
      assert.equal(l.y(), 0);
    },
    "y can be defined as a function": function(line) {
      var l = line().y(f), t = {}, dd = [], ii = [], tt = [];
      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 0; }
      assert.pathEqual(l.call(t, [[1, 2], [4, 3]]), "M1,0L4,0");
      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
    },

    "interpolate defaults to linear": function(line) {
      assert.equal(line().interpolate(), "linear");
    },
    "interpolate can be defined as a constant": function(line) {
      var l = line().interpolate("step-before");
      assert.pathEqual(l([[0, 0], [1, 1]]), "M0,0V1H1");
      assert.equal(l.interpolate(), "step-before");
    },
    "interpolate can be defined as a function": function(line) {
      var l = line().interpolate(interpolate);
      assert.pathEqual(l([[0, 0], [1, 1]]), "M0,0T1,1");
      assert.equal(l.interpolate(), interpolate);

      function interpolate(points) {
        return points.join("T");
      }
    },
    "invalid interpolates fallback to linear": function(line) {
      assert.equal(line().interpolate("__proto__").interpolate(), "linear");
    },

    "tension defaults to .7": function(line) {
      assert.equal(line().tension(), .7);
    },
    "tension can be specified as a constant": function(line) {
      var l = line().tension(.5);
      assert.equal(l.tension(), .5);
    },

    "returns null if input points array is empty": function(line) {
      assert.isNull(line()([]));
    },

    "interpolate(linear)": {
      "supports linear interpolation": function(line) {
        var l = line().interpolate("linear");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0L1,1L2,0L3,1L4,0");
      }
    },

    "interpolate(step)": {
      "supports step-before interpolation": function(line) {
        var l = line().interpolate("step-before");
        assert.pathEqual(l([[0, 0]]), "M0,0");
        assert.pathEqual(l([[0, 0], [1, 1]]), "M0,0V1H1");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0]]), "M0,0V1H1V0H2");
      },
      "supports step interpolation": function(line) {
        var l = line().interpolate("step");
        assert.pathEqual(l([[0, 0]]), "M0,0");
        assert.pathEqual(l([[0, 0], [1, 1]]), "M0,0H0.5V1H1");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0]]), "M0,0H0.5V1H1.5V0H2");
      },
      "supports step-after interpolation": function(line) {
        var l = line().interpolate("step-after");
        assert.pathEqual(l([[0, 0]]), "M0,0");
        assert.pathEqual(l([[0, 0], [1, 1]]), "M0,0H1V1");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0]]), "M0,0H1V1H2V0");
      }
    },

    "interpolate(basis)": {
      "supports basis interpolation": function(line) {
        var l = line().interpolate("basis");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0L0.16666666666666666,0.16666666666666666C0.3333333333333333,0.3333333333333333,0.6666666666666666,0.6666666666666666,1,0.6666666666666666C1.3333333333333333,0.6666666666666666,1.6666666666666665,0.3333333333333333,2,0.3333333333333333C2.333333333333333,0.3333333333333333,2.6666666666666665,0.6666666666666666,3,0.6666666666666666C3.333333333333333,0.6666666666666666,3.6666666666666665,0.3333333333333333,3.833333333333333,0.16666666666666666L4,0");
      },
      "supports basis-open interpolation": function(line) {
        var l = line().interpolate("basis-open");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M1,0.6666666666666666C1.3333333333333333,0.6666666666666666,1.6666666666666665,0.3333333333333333,2,0.3333333333333333C2.333333333333333,0.3333333333333333,2.6666666666666665,0.6666666666666666,3,0.6666666666666666");
      },
      "supports basis-closed interpolation": function(line) {
        var l = line().interpolate("basis-closed");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M2,0.3333333333333333C2.333333333333333,0.3333333333333333,2.6666666666666665,0.6666666666666666,3,0.6666666666666666C3.333333333333333,0.6666666666666666,3.6666666666666665,0.3333333333333333,3.1666666666666665,0.16666666666666666C2.6666666666666665,0,1.3333333333333333,0,0.8333333333333333,0.16666666666666666C0.3333333333333333,0.3333333333333333,0.6666666666666666,0.6666666666666666,1,0.6666666666666666C1.3333333333333333,0.6666666666666666,1.6666666666666665,0.3333333333333333,2,0.3333333333333333");
      },
      "basis interpolation reverts to linear with fewer than three points": function(line) {
        var l = line().interpolate("basis"), d = line();
        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
      },
      "basis-open interpolation reverts to linear with fewer than four points": function(line) {
        var l = line().interpolate("basis-open"), d = line();
        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0]]), d([[0, 0], [1, 1], [2, 0]]));
      },
      "basis-closed interpolation reverts to linear with fewer than three points": function(line) {
        var l = line().interpolate("basis-open"), d = line();
        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
      }
    },

    "interpolate(bundle)": {
      "supports bundle interpolation": function(line) {
        var l = line().interpolate("bundle");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0L0.16666666666666666,0.11666666666666665C0.3333333333333333,0.2333333333333333,0.6666666666666666,0.4666666666666666,1,0.4666666666666666C1.3333333333333333,0.4666666666666666,1.6666666666666665,0.2333333333333333,2,0.2333333333333333C2.333333333333333,0.2333333333333333,2.6666666666666665,0.4666666666666666,3,0.4666666666666666C3.333333333333333,0.4666666666666666,3.6666666666666665,0.2333333333333333,3.833333333333333,0.11666666666666665L4,0");
      },
      "observes the specified tension": function(line) {
        var l = line().interpolate("bundle").tension(1);
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), line().interpolate("basis")([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]));
      },
      "supports a single-element array": function(line) {
        var l = line().interpolate("bundle").tension(1);
        assert.pathEqual(l([[0, 0]]), "M0,0");
      }
    },

    "interpolate(cardinal)": {
      "supports cardinal interpolation": function(line) {
        var l = line().interpolate("cardinal");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0Q0.8,1,1,1C1.3,1,1.7,0,2,0S2.7,1,3,1Q3.2,1,4,0");
      },
      "supports cardinal-open interpolation": function(line) {
        var l = line().interpolate("cardinal-open");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M1,1C1.3,1,1.7,0,2,0S2.7,1,3,1");
      },
      "supports cardinal-closed interpolation": function(line) {
        var l = line().interpolate("cardinal-closed");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0C-0.45,0.15,0.7,1,1,1S1.7,0,2,0S2.7,1,3,1S4.45,0.15,4,0S0.45,-0.15,0,0");
      },
      "cardinal interpolation reverts to linear with fewer than three points": function(line) {
        var l = line().interpolate("cardinal"), d = line();
        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
      },
      "cardinal-open interpolation reverts to linear with fewer than four points": function(line) {
        var l = line().interpolate("cardinal-open"), d = line();
        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
        assert.pathEqual(l([[0, 0], [1, 1], [2, 0]]), d([[0, 0], [1, 1], [2, 0]]));
      },
      "cardinal-closed interpolation reverts to linear with fewer than three points": function(line) {
        var l = line().interpolate("cardinal-open"), d = line();
        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
      },
      "observes the specified tension": function(line) {
        var l = line().tension(.5);
        assert.pathEqual(l.interpolate("cardinal")([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0Q0.6666666666666667,1,1,1C1.5,1,1.5,0,2,0S2.5,1,3,1Q3.3333333333333335,1,4,0");
        assert.pathEqual(l.interpolate("cardinal-open")([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M1,1C1.5,1,1.5,0,2,0S2.5,1,3,1");
        assert.pathEqual(l.interpolate("cardinal-closed")([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0C-0.75,0.25,0.5,1,1,1S1.5,0,2,0S2.5,1,3,1S4.75,0.25,4,0S0.75,-0.25,0,0");
      }
    },

    "interpolate(monotone)": {
      "supports monotone interpolation": function(line) {
        var l = line().interpolate("monotone");
        assert.pathEqual(l([[0, 0], [1, 1], [2, 1], [3, 0], [4, 0]]), "M0,0C0.08333333333333333,0.08333333333333333,0.6666666666666667,1,1,1S1.6666666666666667,1,2,1S2.6666666666666665,0,3,0S3.8333333333333335,0,4,0");
      },
      "monotone interpolation reverts to linear with fewer than three points": function(line) {
        var l = line().interpolate("monotone"), d = line();
        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
      }
    }
  }
});

suite.export(module);
