toolkit/javascript/d3/test/time/days-test.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     1 require("../env");
       
     2 require("../../d3");
       
     3 require("../../d3.time");
       
     4 
       
     5 var vows = require("vows"),
       
     6     assert = require("assert");
       
     7 
       
     8 var suite = vows.describe("d3.time.days");
       
     9 
       
    10 suite.addBatch({
       
    11   "days": {
       
    12     topic: function() {
       
    13       return d3.time.days;
       
    14     },
       
    15     "returns midnights": function(range) {
       
    16       assert.deepEqual(range(local(2010, 11, 31, 12), local(2011, 0, 3, 12)), [
       
    17         local(2011, 0, 1),
       
    18         local(2011, 0, 2),
       
    19         local(2011, 0, 3)
       
    20       ]);
       
    21     },
       
    22     "has an inclusive lower bound": function(range) {
       
    23       assert.deepEqual(range(local(2010, 11, 31), local(2011, 0, 3))[0], local(2010, 11, 31));
       
    24     },
       
    25     "has an exclusive upper bound": function(range) {
       
    26       assert.deepEqual(range(local(2010, 11, 31), local(2011, 0, 3))[2], local(2011, 0, 2));
       
    27     },
       
    28     "can skip days": function(range) {
       
    29       assert.deepEqual(range(local(2010, 11, 29), local(2011, 0, 14), 5), [
       
    30         local(2010, 11, 31),
       
    31         local(2011, 0, 1),
       
    32         local(2011, 0, 6),
       
    33         local(2011, 0, 11)
       
    34       ]);
       
    35     },
       
    36     "observes start of daylight savings time": function(range) {
       
    37       assert.deepEqual(range(local(2011, 2, 12), local(2011, 2, 16)), [
       
    38         local(2011, 2, 12),
       
    39         local(2011, 2, 13),
       
    40         local(2011, 2, 14),
       
    41         local(2011, 2, 15)
       
    42       ]);
       
    43     },
       
    44     "observes end of daylight savings time": function(range) {
       
    45       assert.deepEqual(range(local(2011, 10, 5), local(2011, 10, 9)), [
       
    46         local(2011, 10, 5),
       
    47         local(2011, 10, 6),
       
    48         local(2011, 10, 7),
       
    49         local(2011, 10, 8)
       
    50       ]);
       
    51     },
       
    52     "UTC": {
       
    53       topic: function(range) {
       
    54         return range.utc;
       
    55       },
       
    56       "returns midnights": function(range) {
       
    57         assert.deepEqual(range(utc(2010, 11, 31, 12), utc(2011, 0, 3, 12)), [
       
    58           utc(2011, 0, 1),
       
    59           utc(2011, 0, 2),
       
    60           utc(2011, 0, 3)
       
    61         ]);
       
    62       },
       
    63       "has an inclusive lower bound": function(range) {
       
    64         assert.deepEqual(range(utc(2010, 11, 31), utc(2011, 0, 3))[0], utc(2010, 11, 31));
       
    65       },
       
    66       "has an exclusive upper bound": function(range) {
       
    67         assert.deepEqual(range(utc(2010, 11, 31), utc(2011, 0, 3))[2], utc(2011, 0, 2));
       
    68       },
       
    69       "can skip days": function(range) {
       
    70         assert.deepEqual(range(utc(2010, 11, 29), utc(2011, 0, 14), 5), [
       
    71           utc(2010, 11, 31),
       
    72           utc(2011, 0, 1),
       
    73           utc(2011, 0, 6),
       
    74           utc(2011, 0, 11)
       
    75         ]);
       
    76       },
       
    77       "does not observe the start of daylight savings time": function(range) {
       
    78         assert.deepEqual(range(utc(2011, 2, 12), utc(2011, 2, 16)), [
       
    79           utc(2011, 2, 12),
       
    80           utc(2011, 2, 13),
       
    81           utc(2011, 2, 14),
       
    82           utc(2011, 2, 15)
       
    83         ]);
       
    84       },
       
    85       "does not observe the end of daylight savings time": function(range) {
       
    86         assert.deepEqual(range(utc(2011, 10, 5), utc(2011, 10, 9)), [
       
    87           utc(2011, 10, 5),
       
    88           utc(2011, 10, 6),
       
    89           utc(2011, 10, 7),
       
    90           utc(2011, 10, 8)
       
    91         ]);
       
    92       }
       
    93     }
       
    94   }
       
    95 });
       
    96 
       
    97 function local(year, month, day, hours, minutes, seconds) {
       
    98   return new Date(year, month, day, hours || 0, minutes || 0, seconds || 0);
       
    99 }
       
   100 
       
   101 function utc(year, month, day, hours, minutes, seconds) {
       
   102   return new Date(Date.UTC(year, month, day, hours || 0, minutes || 0, seconds || 0));
       
   103 }
       
   104 
       
   105 suite.export(module);