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

var suite = vows.describe("d3.interpolateString");

suite.addBatch({
  "interpolateString": {
    topic: load("interpolate/string").expression("d3.interpolateString"),
    "interpolates matching numbers in both strings": function(interpolate) {
      assert.strictEqual(interpolate(" 10/20 30", "50/10 100 ")(.2), "18/18 44 ");
      assert.strictEqual(interpolate(" 10/20 30", "50/10 100 ")(.4), "26/16 58 ");
    },
    "coerces objects to strings": function(interpolate) {
      assert.strictEqual(interpolate({toString: function() { return "2px"; }}, {toString: function() { return "12px"; }})(.4), "6px");
    },
    "preserves non-numbers in string b": function(interpolate) {
      assert.strictEqual(interpolate(" 10/20 30", "50/10 foo ")(.2), "18/18 foo ");
      assert.strictEqual(interpolate(" 10/20 30", "50/10 foo ")(.4), "26/16 foo ");
    },
    "preserves non-matching numbers in string b": function(interpolate) {
      assert.strictEqual(interpolate(" 10/20 foo", "50/10 100 ")(.2), "18/18 100 ");
      assert.strictEqual(interpolate(" 10/20 bar", "50/10 100 ")(.4), "26/16 100 ");
    },
    "preserves equal-value numbers in both strings": function(interpolate) {
      assert.strictEqual(interpolate(" 10/20 100 20", "50/10 100, 20 ")(.2), "18/18 100, 20 ");
      assert.strictEqual(interpolate(" 10/20 100 20", "50/10 100, 20 ")(.4), "26/16 100, 20 ");
    },
    "interpolates decimal notation correctly": function(interpolate) {
      assert.strictEqual(interpolate("1.", "2.")(.5), "1.5");
    },
    "interpolates exponent notation correctly": function(interpolate) {
      assert.strictEqual(interpolate("1e+3", "1e+4")(.5), "5500");
      assert.strictEqual(interpolate("1e-3", "1e-4")(.5), "0.00055");
      assert.strictEqual(interpolate("1.e-3", "1.e-4")(.5), "0.00055");
      assert.strictEqual(interpolate("-1.e-3", "-1.e-4")(.5), "-0.00055");
      assert.strictEqual(interpolate("+1.e-3", "+1.e-4")(.5), "0.00055");
      assert.strictEqual(interpolate(".1e-2", ".1e-3")(.5), "0.00055");
    }
  }
});

suite.export(module);
