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

var suite = vows.describe("d3.time.format");

suite.addBatch({
  "format": {
    topic: load("time/format").expression("d3.time.format"),
    "formats abbreviated weekday": function(format) {
      var f = format("%a");
      assert.equal(f(local(1990, 0, 1)), "Mon");
      assert.equal(f(local(1990, 0, 2)), "Tue");
      assert.equal(f(local(1990, 0, 3)), "Wed");
      assert.equal(f(local(1990, 0, 4)), "Thu");
      assert.equal(f(local(1990, 0, 5)), "Fri");
      assert.equal(f(local(1990, 0, 6)), "Sat");
      assert.equal(f(local(1990, 0, 7)), "Sun");
    },
    "formats weekday": function(format) {
      var f = format("%A");
      assert.equal(f(local(1990, 0, 1)), "Monday");
      assert.equal(f(local(1990, 0, 2)), "Tuesday");
      assert.equal(f(local(1990, 0, 3)), "Wednesday");
      assert.equal(f(local(1990, 0, 4)), "Thursday");
      assert.equal(f(local(1990, 0, 5)), "Friday");
      assert.equal(f(local(1990, 0, 6)), "Saturday");
      assert.equal(f(local(1990, 0, 7)), "Sunday");
    },
    "formats abbreviated month": function(format) {
      var f = format("%b");
      assert.equal(f(local(1990, 0, 1)), "Jan");
      assert.equal(f(local(1990, 1, 1)), "Feb");
      assert.equal(f(local(1990, 2, 1)), "Mar");
      assert.equal(f(local(1990, 3, 1)), "Apr");
      assert.equal(f(local(1990, 4, 1)), "May");
      assert.equal(f(local(1990, 5, 1)), "Jun");
      assert.equal(f(local(1990, 6, 1)), "Jul");
      assert.equal(f(local(1990, 7, 1)), "Aug");
      assert.equal(f(local(1990, 8, 1)), "Sep");
      assert.equal(f(local(1990, 9, 1)), "Oct");
      assert.equal(f(local(1990, 10, 1)), "Nov");
      assert.equal(f(local(1990, 11, 1)), "Dec");
    },
    "formats month": function(format) {
      var f = format("%B");
      assert.equal(f(local(1990, 0, 1)), "January");
      assert.equal(f(local(1990, 1, 1)), "February");
      assert.equal(f(local(1990, 2, 1)), "March");
      assert.equal(f(local(1990, 3, 1)), "April");
      assert.equal(f(local(1990, 4, 1)), "May");
      assert.equal(f(local(1990, 5, 1)), "June");
      assert.equal(f(local(1990, 6, 1)), "July");
      assert.equal(f(local(1990, 7, 1)), "August");
      assert.equal(f(local(1990, 8, 1)), "September");
      assert.equal(f(local(1990, 9, 1)), "October");
      assert.equal(f(local(1990, 10, 1)), "November");
      assert.equal(f(local(1990, 11, 1)), "December");
    },
    "formats locale date and time": function(format) {
      var f = format("%c");
      assert.equal(f(local(1990, 0, 1)), "Mon Jan  1 00:00:00 1990");
    },
    "formats zero-padded date": function(format) {
      var f = format("%d");
      assert.equal(f(local(1990, 0, 1)), "01");
    },
    "formats space-padded date": function(format) {
      var f = format("%e");
      assert.equal(f(local(1990, 0, 1)), " 1");
    },
    "formats zero-padded hour (24)": function(format) {
      var f = format("%H");
      assert.equal(f(local(1990, 0, 1, 0)), "00");
      assert.equal(f(local(1990, 0, 1, 13)), "13");
    },
    "formats zero-padded hour (12)": function(format) {
      var f = format("%I");
      assert.equal(f(local(1990, 0, 1, 0)), "12");
      assert.equal(f(local(1990, 0, 1, 13)), "01");
    },
    "formats zero-padded day of year": function(format) {
      var f = format("%j");
      assert.equal(f(local(1990, 0, 1)), "001");
      assert.equal(f(local(1990, 5, 1)), "152");
      assert.equal(f(local(2010, 2, 13)), "072");
      assert.equal(f(local(2010, 2, 14)), "073"); // DST begins
      assert.equal(f(local(2010, 2, 15)), "074");
      assert.equal(f(local(2010, 10, 6)), "310");
      assert.equal(f(local(2010, 10, 7)), "311"); // DST ends
      assert.equal(f(local(2010, 10, 8)), "312");
    },
    "formats zero-padded month": function(format) {
      var f = format("%m");
      assert.equal(f(local(1990, 0, 1)), "01");
      assert.equal(f(local(1990, 9, 1)), "10");
    },
    "formats zero-padded minute": function(format) {
      var f = format("%M");
      assert.equal(f(local(1990, 0, 1, 0, 0)), "00");
      assert.equal(f(local(1990, 0, 1, 0, 32)), "32");
    },
    "formats AM or PM": function(format) {
      var f = format("%p");
      assert.equal(f(local(1990, 0, 1, 0)), "AM");
      assert.equal(f(local(1990, 0, 1, 13)), "PM");
    },
    "formats zero-padded second": function(format) {
      var f = format("%S");
      assert.equal(f(local(1990, 0, 1, 0, 0, 0)), "00");
      assert.equal(f(local(1990, 0, 1, 0, 0, 32)), "32");
      var f = format("%0S");
      assert.equal(f(local(1990, 0, 1, 0, 0, 0)), "00");
      assert.equal(f(local(1990, 0, 1, 0, 0, 32)), "32");
    },
    "formats space-padded second": function(format) {
      var f = format("%_S");
      assert.equal(f(local(1990, 0, 1, 0, 0, 0)), " 0");
      assert.equal(f(local(1990, 0, 1, 0, 0, 3)), " 3");
      assert.equal(f(local(1990, 0, 1, 0, 0, 32)), "32");
    },
    "formats no-padded second": function(format) {
      var f = format("%-S");
      assert.equal(f(local(1990, 0, 1, 0, 0, 0)), "0");
      assert.equal(f(local(1990, 0, 1, 0, 0, 3)), "3");
      assert.equal(f(local(1990, 0, 1, 0, 0, 32)), "32");
    },
    "formats zero-padded millisecond": function(format) {
      var f = format("%L");
      assert.equal(f(local(1990, 0, 1, 0, 0, 0, 0)), "000");
      assert.equal(f(local(1990, 0, 1, 0, 0, 0, 432)), "432");
    },
    "formats zero-padded week number": function(format) {
      var f = format("%U");
      assert.equal(f(local(1990, 0, 1)), "00");
      assert.equal(f(local(1990, 5, 1)), "21");
      assert.equal(f(local(2010, 2, 13, 23)), "10");
      assert.equal(f(local(2010, 2, 14, 00)), "11"); // DST begins
      assert.equal(f(local(2010, 2, 15, 00)), "11");
      assert.equal(f(local(2010, 10, 6, 23)), "44");
      assert.equal(f(local(2010, 10, 7, 00)), "45"); // DST ends
      assert.equal(f(local(2010, 10, 8, 00)), "45");
    },
    "formats locale date": function(format) {
      var f = format("%x");
      assert.equal(f(local(1990, 0, 1)), "01/01/1990");
      assert.equal(f(local(2010, 5, 1)), "06/01/2010");
    },
    "formats locale time": function(format) {
      var f = format("%X");
      assert.equal(f(local(1990, 0, 1)), "00:00:00");
      assert.equal(f(local(1990, 0, 1, 13, 34, 59)), "13:34:59");
    },
    "formats zero-padded two-digit year": function(format) {
      var f = format("%y");
      assert.equal(f(local(1990, 0, 1)), "90");
      assert.equal(f(local(2002, 0, 1)), "02");
      assert.equal(f(local(-2, 0, 1)), "-02");
    },
    "formats zero-padded four-digit year": function(format) {
      var f = format("%Y");
      assert.equal(f(local(123, 0, 1)), "0123");
      assert.equal(f(local(1990, 0, 1)), "1990");
      assert.equal(f(local(2002, 0, 1)), "2002");
      assert.equal(f(local(10002, 0, 1)), "0002");
      assert.equal(f(local(-2, 0, 1)), "-0002");
    },
    "formats time zone": function(format) {
      var f = format("%Z");
      assert.equal(f(local(1990, 0, 1)), "-0800");
    },
    "formats literal percent sign": function(format) {
      var f = format("%%");
      assert.equal(f(local(1990, 0, 1)), "%");
    },

    "multi": {
      topic: function(format) {
        return format.multi([
          [".%L", function(d) { return d.getMilliseconds(); }],
          [":%S", function(d) { return d.getSeconds(); }],
          ["%I:%M", function(d) { return d.getMinutes(); }],
          ["%a %d", function(d) { return d.getDay() && d.getDate() != 1; }],
          ["%b %d", function(d) { return d.getDate() != 1; }],
          ["%I %p", function(d) { return d.getHours(); }],
          ["%B", function(d) { return d.getMonth(); }],
          ["%Y", function() { return true; }]
        ]);
      },
      "returns a multi-formatter using the predicated formats": function(f) {
        assert.equal(f(local(1990, 0, 1, 1)), "01 AM");
      },
      "applies the first format for which the predicate returns true": function(f) {
        assert.equal(f(local(1990, 0, 1, 0, 0, 0, 12)), ".012");
        assert.equal(f(local(1990, 0, 1, 0, 0, 1)), ":01");
        assert.equal(f(local(1990, 0, 1, 0, 1)), "12:01");
        assert.equal(f(local(1990, 0, 2)), "Tue 02");
        assert.equal(f(local(1990, 1, 1)), "February");
        assert.equal(f(local(1990, 0, 1)), "1990");
      }
    },

    "parse": {
      "parses abbreviated weekday and numeric date": function(format) {
        var p = format("%a %m/%d/%Y").parse;
        assert.deepEqual(p("Sun 01/01/1990"), local(1990, 0, 1));
        assert.deepEqual(p("Wed 02/03/1991"), local(1991, 1, 3));
        assert.isNull(p("XXX 03/10/2010"));
      },
      "parses weekday and numeric date": function(format) {
        var p = format("%A %m/%d/%Y").parse;
        assert.deepEqual(p("Sunday 01/01/1990"), local(1990, 0, 1));
        assert.deepEqual(p("Wednesday 02/03/1991"), local(1991, 1, 3));
        assert.isNull(p("Caturday 03/10/2010"));
      },
     "parses abbreviated weekday, week number (Sunday) and year": function(format) {
       var p = format("%a %U %Y").parse;
       assert.deepEqual(p("Mon 00 1990"), local(1990, 0, 1));
       assert.deepEqual(p("Sun 05 1991"), local(1991, 1, 3));
       assert.deepEqual(p("Sun 01 1995"), local(1995, 0, 1));
       assert.isNull(p("XXX 03 2010"));
     },
     "parses weekday, week number (Sunday) and year": function(format) {
       var p = format("%A %U %Y").parse;
       assert.deepEqual(p("Monday 00 1990"), local(1990, 0, 1));
       assert.deepEqual(p("Sunday 05 1991"), local(1991, 1, 3));
       assert.deepEqual(p("Sunday 01 1995"), local(1995, 0, 1));
       assert.isNull(p("Caturday 03 2010"));
     },
     "parses numeric weekday, week number (Sunday) and year": function(format) {
       var p = format("%w %U %Y").parse;
       assert.deepEqual(p("1 00 1990"), local(1990, 0, 1));
       assert.deepEqual(p("0 05 1991"), local(1991, 1, 3));
       assert.deepEqual(p("0 01 1995"), local(1995, 0, 1));
       assert.isNull(p("X 03 2010"));
     },
     "parses abbreviated weekday, week number (Monday) and year": function(format) {
       var p = format("%a %W %Y").parse;
       assert.deepEqual(p("Mon 01 1990"), local(1990, 0, 1));
       assert.deepEqual(p("Sun 04 1991"), local(1991, 1, 3));
       assert.deepEqual(p("Sun 00 1995"), local(1995, 0, 1));
       assert.isNull(p("XXX 03 2010"));
     },
     "parses weekday, week number (Monday) and year": function(format) {
       var p = format("%A %W %Y").parse;
       assert.deepEqual(p("Monday 01 1990"), local(1990, 0, 1));
       assert.deepEqual(p("Sunday 04 1991"), local(1991, 1, 3));
       assert.deepEqual(p("Sunday 00 1995"), local(1995, 0, 1));
       assert.isNull(p("Caturday 03 2010"));
     },
     "parses numeric weekday, week number (Monday) and year": function(format) {
       var p = format("%w %W %Y").parse;
       assert.deepEqual(p("1 01 1990"), local(1990, 0, 1));
       assert.deepEqual(p("0 04 1991"), local(1991, 1, 3));
       assert.deepEqual(p("0 00 1995"), local(1995, 0, 1));
       assert.isNull(p("X 03 2010"));
     },
      "parses numeric date": function(format) {
        var p = format("%m/%d/%y").parse;
        assert.deepEqual(p("01/01/90"), local(1990, 0, 1));
        assert.deepEqual(p("02/03/91"), local(1991, 1, 3));
        assert.isNull(p("03/10/2010"));
      },
      "parses locale date": function(format) {
        var p = format("%x").parse;
        assert.deepEqual(p("01/01/1990"), local(1990, 0, 1));
        assert.deepEqual(p("02/03/1991"), local(1991, 1, 3));
        assert.deepEqual(p("03/10/2010"), local(2010, 2, 10));
      },
      "parses abbreviated month, date and year": function(format) {
        var p = format("%b %d, %Y").parse;
        assert.deepEqual(p("jan 01, 1990"), local(1990, 0, 1));
        assert.deepEqual(p("feb  2, 2010"), local(2010, 1, 2));
        assert.isNull(p("jan. 1, 1990"));
      },
      "parses month, date and year": function(format) {
        var p = format("%B %d, %Y").parse;
        assert.deepEqual(p("january 01, 1990"), local(1990, 0, 1));
        assert.deepEqual(p("February  2, 2010"), local(2010, 1, 2));
        assert.isNull(p("jan 1, 1990"));
      },
      "parses day of year and numeric date": function(format) {
        var p = format("%j %m/%d/%Y").parse;
        assert.deepEqual(p("001 01/01/1990"), local(1990, 0, 1));
        assert.deepEqual(p("034 02/03/1991"), local(1991, 1, 3));
        assert.isNull(p("2012 03/10/2010"));
      },
      "parses locale date and time": function(format) {
        var p = format("%c").parse;
        assert.deepEqual(p("Mon Jan  1 00:00:00 1990"), local(1990, 0, 1));
        assert.deepEqual(p("Sun Jan  1 00:00:00 1990"), local(1990, 0, 1));
        assert.deepEqual(p("Mon Jan 01 00:00:00 1990"), local(1990, 0, 1));
        assert.deepEqual(p("Mon Jan 1 00:00:00 1990"), local(1990, 0, 1));
        assert.deepEqual(p("Mon Jan 1 0:0:0 1990"), local(1990, 0, 1));
      },
      "parses twenty-four hour, minute and second": function(format) {
        var p = format("%H:%M:%S").parse;
        assert.deepEqual(p("00:00:00"), local(1900, 0, 1, 0, 0, 0));
        assert.deepEqual(p("11:59:59"), local(1900, 0, 1, 11, 59, 59));
        assert.deepEqual(p("12:00:00"), local(1900, 0, 1, 12, 0, 0));
        assert.deepEqual(p("12:00:01"), local(1900, 0, 1, 12, 0, 1));
        assert.deepEqual(p("23:59:59"), local(1900, 0, 1, 23, 59, 59));
      },
      "parses locale time": function(format) {
        var p = format("%X").parse;
        assert.deepEqual(p("00:00:00"), local(1900, 0, 1, 0, 0, 0));
        assert.deepEqual(p("11:59:59"), local(1900, 0, 1, 11, 59, 59));
        assert.deepEqual(p("12:00:00"), local(1900, 0, 1, 12, 0, 0));
        assert.deepEqual(p("12:00:01"), local(1900, 0, 1, 12, 0, 1));
        assert.deepEqual(p("23:59:59"), local(1900, 0, 1, 23, 59, 59));
      },
      "parses twelve hour, minute and second": function(format) {
        var p = format("%I:%M:%S %p").parse;
        assert.deepEqual(p("12:00:00 am"), local(1900, 0, 1, 0, 0, 0));
        assert.deepEqual(p("11:59:59 AM"), local(1900, 0, 1, 11, 59, 59));
        assert.deepEqual(p("12:00:00 pm"), local(1900, 0, 1, 12, 0, 0));
        assert.deepEqual(p("12:00:01 pm"), local(1900, 0, 1, 12, 0, 1));
        assert.deepEqual(p("11:59:59 PM"), local(1900, 0, 1, 23, 59, 59));
      },
      "parses literal %": function(format) {
        var p = format("%% %m/%d/%Y").parse;
        assert.deepEqual(p("% 01/01/1990"), local(1990, 0, 1));
        assert.deepEqual(p("% 02/03/1991"), local(1991, 1, 3));
        assert.isNull(p("%% 03/10/2010"));
      },
      "parses timezone offset": function(format) {
        var p = format("%m/%d/%Y %Z").parse;
        assert.deepEqual(p("01/02/1990 +0000"), local(1990, 0, 1, 16));
        assert.deepEqual(p("01/02/1990 +0100"), local(1990, 0, 1, 17));
        assert.deepEqual(p("01/02/1990 -0100"), local(1990, 0, 1, 15));
      },
      "ignores optional padding modifier, skipping zeroes and spaces": function(format) {
        var p = format("%-m/%0d/%_Y").parse;
        assert.deepEqual(p("01/ 1/1990"), local(1990, 0, 1));
      },
      "doesn't crash when given weird strings": function(format) {
        try {
          Object.prototype.foo = 10;
          var p = format("%b %d, %Y").parse;
          assert.isNull(p("foo 1, 1990"));
        } finally {
          delete Object.prototype.foo;
        }
      }
    }
  }
});

suite.export(module);
