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