Add interval.ceil. Fixes #453.
This commit is contained in:
Родитель
0e4fc7cdc6
Коммит
35dfb87d50
|
@ -8524,6 +8524,7 @@ d3_time_utc.prototype = {
|
|||
getMinutes: function() { return this._.getUTCMinutes(); },
|
||||
getMonth: function() { return this._.getUTCMonth(); },
|
||||
getSeconds: function() { return this._.getUTCSeconds(); },
|
||||
getTime: function() { return this._.getTime(); },
|
||||
getTimezoneOffset: function() { return 0; },
|
||||
valueOf: function() { return this._.valueOf(); },
|
||||
setDate: function(x) { this._.setUTCDate(x); },
|
||||
|
@ -8533,7 +8534,8 @@ d3_time_utc.prototype = {
|
|||
setMilliseconds: function(x) { this._.setUTCMilliseconds(x); },
|
||||
setMinutes: function(x) { this._.setUTCMinutes(x); },
|
||||
setMonth: function(x) { this._.setUTCMonth(x); },
|
||||
setSeconds: function(x) { this._.setUTCSeconds(x); }
|
||||
setSeconds: function(x) { this._.setUTCSeconds(x); },
|
||||
setTime: function(x) { this._.setTime(x); }
|
||||
};
|
||||
d3.time.format = function(template) {
|
||||
var n = template.length;
|
||||
|
@ -8903,25 +8905,35 @@ d3_time_formatIsoNative.parse = function(string) {
|
|||
};
|
||||
|
||||
d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
|
||||
function d3_time_interval(floor) {
|
||||
floor.floor = floor;
|
||||
function d3_time_interval(floor, step) {
|
||||
|
||||
// floor.ceil = function(date) { return step(floor(new Date(date - 1))); };
|
||||
|
||||
floor.utc = function(date) {
|
||||
try {
|
||||
d3_time = d3_time_utc;
|
||||
d3_time_interval_utc._ = date;
|
||||
return floor(d3_time_interval_utc)._;
|
||||
} finally {
|
||||
d3_time = Date;
|
||||
function ceil(date) {
|
||||
step(date = floor(new d3_time(date - 1)));
|
||||
return date;
|
||||
}
|
||||
};
|
||||
|
||||
floor.floor = floor;
|
||||
floor.ceil = ceil;
|
||||
|
||||
floor.utc = d3_time_interval_utc(floor);
|
||||
floor.floor.utc = floor.utc;
|
||||
floor.ceil.utc = d3_time_interval_utc(ceil);
|
||||
|
||||
return floor;
|
||||
}
|
||||
|
||||
var d3_time_interval_utc = new d3_time_utc();
|
||||
function d3_time_interval_utc(method) {
|
||||
var utc = new d3_time_utc();
|
||||
return function(date) {
|
||||
try {
|
||||
d3_time = d3_time_utc;
|
||||
utc._ = date;
|
||||
return method(utc)._;
|
||||
} finally {
|
||||
d3_time = Date;
|
||||
}
|
||||
};
|
||||
}
|
||||
function d3_time_range(floor, step, number) {
|
||||
return function(t0, t1, dt) {
|
||||
var time = floor(t0), times = [];
|
||||
|
@ -8940,6 +8952,8 @@ function d3_time_range(floor, step, number) {
|
|||
}
|
||||
d3.time.second = d3_time_interval(function(date) {
|
||||
return new d3_time(Math.floor(date / 1e3) * 1e3);
|
||||
}, function(date) {
|
||||
date.setSeconds(date.getSeconds() + 1);
|
||||
});
|
||||
d3.time.seconds = d3_time_range(d3.time.second, function(date) {
|
||||
date.setTime(date.getTime() + 1e3);
|
||||
|
@ -8950,6 +8964,8 @@ d3.time.seconds = d3_time_range(d3.time.second, function(date) {
|
|||
d3.time.seconds.utc = d3.time.seconds;
|
||||
d3.time.minute = d3_time_interval(function(date) {
|
||||
return new d3_time(Math.floor(date / 6e4) * 6e4);
|
||||
}, function(date) {
|
||||
date.setMinutes(date.getMinutes() + 1);
|
||||
});
|
||||
d3.time.minutes = d3_time_range(d3.time.minute, d3_time_minutesStep, function(date) {
|
||||
return date.getMinutes();
|
||||
|
@ -8965,6 +8981,8 @@ function d3_time_minutesStep(date) {
|
|||
d3.time.hour = d3_time_interval(function(date) {
|
||||
var timezone = date.getTimezoneOffset() / 60;
|
||||
return new d3_time((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);
|
||||
}, function(date) {
|
||||
date.setTime(date.getTime() + 36e5); // can't use setHours because of DST
|
||||
});
|
||||
d3.time.hours = d3_time_range(d3.time.hour, d3_time_hoursStep, function(date) {
|
||||
return date.getHours();
|
||||
|
@ -8979,6 +8997,8 @@ function d3_time_hoursStep(date) {
|
|||
}
|
||||
d3.time.day = d3_time_interval(function(date) {
|
||||
return new d3_time(date.getFullYear(), date.getMonth(), date.getDate());
|
||||
}, function(date) {
|
||||
date.setDate(date.getDate() + 1);
|
||||
});
|
||||
d3.time.days = d3_time_range(d3.time.day, function(date) {
|
||||
date.setDate(date.getDate() + 1);
|
||||
|
@ -8994,6 +9014,8 @@ d3.time.days.utc = d3_time_range(d3.time.day.utc, function(date) {
|
|||
d3.time.week = d3_time_interval(function(date) {
|
||||
(date = d3.time.day(date)).setDate(date.getDate() - date.getDay());
|
||||
return date;
|
||||
}, function(date) {
|
||||
date.setDate(date.getDate() + 7);
|
||||
});
|
||||
d3.time.weeks = d3_time_range(d3.time.week, function(date) {
|
||||
date.setDate(date.getDate() + 7);
|
||||
|
@ -9008,6 +9030,8 @@ d3.time.weeks.utc = d3_time_range(d3.time.week.utc, function(date) {
|
|||
});
|
||||
d3.time.month = d3_time_interval(function(date) {
|
||||
return new d3_time(date.getFullYear(), date.getMonth(), 1);
|
||||
}, function(date) {
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
});
|
||||
d3.time.months = d3_time_range(d3.time.month, function(date) {
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
|
@ -9022,6 +9046,8 @@ d3.time.months.utc = d3_time_range(d3.time.month.utc, function(date) {
|
|||
});
|
||||
d3.time.year = d3_time_interval(function(date) {
|
||||
return new d3_time(date.getFullYear(), 0, 1);
|
||||
}, function(date) {
|
||||
date.setFullYear(date.getFullYear() + 1);
|
||||
});
|
||||
d3.time.years = d3_time_range(d3.time.year, function(date) {
|
||||
date.setFullYear(date.getFullYear() + 1);
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,3 +1,5 @@
|
|||
d3.time.day = d3_time_interval(function(date) {
|
||||
return new d3_time(date.getFullYear(), date.getMonth(), date.getDate());
|
||||
}, function(date) {
|
||||
date.setDate(date.getDate() + 1);
|
||||
});
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
d3.time.hour = d3_time_interval(function(date) {
|
||||
var timezone = date.getTimezoneOffset() / 60;
|
||||
return new d3_time((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);
|
||||
}, function(date) {
|
||||
date.setTime(date.getTime() + 36e5); // can't use setHours because of DST
|
||||
});
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
function d3_time_interval(floor) {
|
||||
floor.floor = floor;
|
||||
function d3_time_interval(floor, step) {
|
||||
|
||||
// floor.ceil = function(date) { return step(floor(new Date(date - 1))); };
|
||||
|
||||
floor.utc = function(date) {
|
||||
try {
|
||||
d3_time = d3_time_utc;
|
||||
d3_time_interval_utc._ = date;
|
||||
return floor(d3_time_interval_utc)._;
|
||||
} finally {
|
||||
d3_time = Date;
|
||||
function ceil(date) {
|
||||
step(date = floor(new d3_time(date - 1)));
|
||||
return date;
|
||||
}
|
||||
};
|
||||
|
||||
floor.floor = floor;
|
||||
floor.ceil = ceil;
|
||||
|
||||
floor.utc = d3_time_interval_utc(floor);
|
||||
floor.floor.utc = floor.utc;
|
||||
floor.ceil.utc = d3_time_interval_utc(ceil);
|
||||
|
||||
return floor;
|
||||
}
|
||||
|
||||
var d3_time_interval_utc = new d3_time_utc();
|
||||
function d3_time_interval_utc(method) {
|
||||
var utc = new d3_time_utc();
|
||||
return function(date) {
|
||||
try {
|
||||
d3_time = d3_time_utc;
|
||||
utc._ = date;
|
||||
return method(utc)._;
|
||||
} finally {
|
||||
d3_time = Date;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
d3.time.minute = d3_time_interval(function(date) {
|
||||
return new d3_time(Math.floor(date / 6e4) * 6e4);
|
||||
}, function(date) {
|
||||
date.setMinutes(date.getMinutes() + 1);
|
||||
});
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
d3.time.month = d3_time_interval(function(date) {
|
||||
return new d3_time(date.getFullYear(), date.getMonth(), 1);
|
||||
}, function(date) {
|
||||
date.setMonth(date.getMonth() + 1);
|
||||
});
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
d3.time.second = d3_time_interval(function(date) {
|
||||
return new d3_time(Math.floor(date / 1e3) * 1e3);
|
||||
}, function(date) {
|
||||
date.setSeconds(date.getSeconds() + 1);
|
||||
});
|
||||
|
|
|
@ -17,6 +17,7 @@ d3_time_utc.prototype = {
|
|||
getMinutes: function() { return this._.getUTCMinutes(); },
|
||||
getMonth: function() { return this._.getUTCMonth(); },
|
||||
getSeconds: function() { return this._.getUTCSeconds(); },
|
||||
getTime: function() { return this._.getTime(); },
|
||||
getTimezoneOffset: function() { return 0; },
|
||||
valueOf: function() { return this._.valueOf(); },
|
||||
setDate: function(x) { this._.setUTCDate(x); },
|
||||
|
@ -26,5 +27,6 @@ d3_time_utc.prototype = {
|
|||
setMilliseconds: function(x) { this._.setUTCMilliseconds(x); },
|
||||
setMinutes: function(x) { this._.setUTCMinutes(x); },
|
||||
setMonth: function(x) { this._.setUTCMonth(x); },
|
||||
setSeconds: function(x) { this._.setUTCSeconds(x); }
|
||||
setSeconds: function(x) { this._.setUTCSeconds(x); },
|
||||
setTime: function(x) { this._.setTime(x); }
|
||||
};
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
d3.time.week = d3_time_interval(function(date) {
|
||||
(date = d3.time.day(date)).setDate(date.getDate() - date.getDay());
|
||||
return date;
|
||||
}, function(date) {
|
||||
date.setDate(date.getDate() + 7);
|
||||
});
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
d3.time.year = d3_time_interval(function(date) {
|
||||
return new d3_time(date.getFullYear(), 0, 1);
|
||||
}, function(date) {
|
||||
date.setFullYear(date.getFullYear() + 1);
|
||||
});
|
||||
|
|
|
@ -10,22 +10,29 @@ suite.addBatch({
|
|||
topic: function() {
|
||||
return d3.time.day;
|
||||
},
|
||||
"defaults to floor": function(interval) {
|
||||
assert.strictEqual(interval, interval.floor);
|
||||
},
|
||||
"floor": {
|
||||
topic: function(interval) {
|
||||
return interval.floor;
|
||||
},
|
||||
"returns midnights": function(floor) {
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23)), local(2010, 11, 31));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0)), local(2011, 0, 1));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 1)), local(2011, 0, 1));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00)), local(2011, 00, 01));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 01)), local(2011, 00, 01));
|
||||
},
|
||||
"observes start of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 7)), local(2011, 2, 12));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 8)), local(2011, 2, 13));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 9)), local(2011, 2, 13));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 10)), local(2011, 2, 13));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 07)), local(2011, 02, 12));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 08)), local(2011, 02, 13));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 09)), local(2011, 02, 13));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 10)), local(2011, 02, 13));
|
||||
},
|
||||
"observes end of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 7)), local(2011, 10, 6));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 8)), local(2011, 10, 6));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 9)), local(2011, 10, 6));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 10)), local(2011, 10, 6));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 07)), local(2011, 10, 06));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 08)), local(2011, 10, 06));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 09)), local(2011, 10, 06));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 10)), local(2011, 10, 06));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(floor) {
|
||||
|
@ -33,31 +40,76 @@ suite.addBatch({
|
|||
},
|
||||
"returns midnights": function(floor) {
|
||||
assert.deepEqual(floor(utc(2010, 11, 31, 23)), utc(2010, 11, 31));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0)), utc(2011, 0, 1));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 1)), utc(2011, 0, 1));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00)), utc(2011, 00, 01));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 01)), utc(2011, 00, 01));
|
||||
},
|
||||
"does not observe the start of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 7)), utc(2011, 2, 13));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 8)), utc(2011, 2, 13));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 9)), utc(2011, 2, 13));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 10)), utc(2011, 2, 13));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 07)), utc(2011, 02, 13));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 08)), utc(2011, 02, 13));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 09)), utc(2011, 02, 13));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 10)), utc(2011, 02, 13));
|
||||
},
|
||||
"does not observe the end of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 5)), utc(2011, 10, 6));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 6)), utc(2011, 10, 6));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 7)), utc(2011, 10, 6));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 8)), utc(2011, 10, 6));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 05)), utc(2011, 10, 06));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 06)), utc(2011, 10, 06));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 07)), utc(2011, 10, 06));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 08)), utc(2011, 10, 06));
|
||||
}
|
||||
}
|
||||
},
|
||||
"ceil": {
|
||||
topic: function(interval) {
|
||||
return interval.ceil;
|
||||
},
|
||||
"returns midnights": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2010, 11, 30, 23)), local(2010, 11, 31));
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 00)), local(2010, 11, 31));
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 01)), local(2011, 00, 01));
|
||||
},
|
||||
"observes start of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 07)), local(2011, 02, 13));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 08)), local(2011, 02, 13));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 09)), local(2011, 02, 14));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 10)), local(2011, 02, 14));
|
||||
},
|
||||
"observes end of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 07)), local(2011, 10, 06));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 08)), local(2011, 10, 07));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 09)), local(2011, 10, 07));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 10)), local(2011, 10, 07));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(ceil) {
|
||||
return ceil.utc;
|
||||
},
|
||||
"returns midnights": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2010, 11, 30, 23)), utc(2010, 11, 31));
|
||||
assert.deepEqual(ceil(utc(2010, 11, 31, 00)), utc(2010, 11, 31));
|
||||
assert.deepEqual(ceil(utc(2010, 11, 31, 01)), utc(2011, 00, 01));
|
||||
},
|
||||
"does not observe the start of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 07)), utc(2011, 02, 14));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 08)), utc(2011, 02, 14));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 09)), utc(2011, 02, 14));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 10)), utc(2011, 02, 14));
|
||||
},
|
||||
"does not observe the end of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 05)), utc(2011, 10, 07));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 06)), utc(2011, 10, 07));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 07)), utc(2011, 10, 07));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 08)), utc(2011, 10, 07));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function local(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(year, month, day, hours || 0, minutes || 0, seconds || 0);
|
||||
return new Date(year, month, day, hours || 00, minutes || 00, seconds || 00);
|
||||
}
|
||||
|
||||
function utc(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(Date.UTC(year, month, day, hours || 0, minutes || 0, seconds || 0));
|
||||
return new Date(Date.UTC(year, month, day, hours || 00, minutes || 00, seconds || 00));
|
||||
}
|
||||
|
||||
suite.export(module);
|
||||
|
|
|
@ -10,39 +10,46 @@ suite.addBatch({
|
|||
topic: function() {
|
||||
return d3.time.hour;
|
||||
},
|
||||
"defaults to floor": function(interval) {
|
||||
assert.strictEqual(interval, interval.floor);
|
||||
},
|
||||
"floor": {
|
||||
topic: function(interval) {
|
||||
return interval.floor;
|
||||
},
|
||||
"returns hours": function(floor) {
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59)), local(2010, 11, 31, 23));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0)), local(2011, 0, 1, 0));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 1)), local(2011, 0, 1, 0));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00)), local(2011, 00, 01, 00));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 01)), local(2011, 00, 01, 00));
|
||||
},
|
||||
"observes start of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 8, 59)), utc(2011, 2, 13, 8));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 9, 0)), utc(2011, 2, 13, 9));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 9, 1)), utc(2011, 2, 13, 9));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 9, 59)), utc(2011, 2, 13, 9));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 10, 0)), utc(2011, 2, 13, 10));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 10, 1)), utc(2011, 2, 13, 10));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 08, 59)), utc(2011, 02, 13, 08));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 09, 00)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 09, 01)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 09, 59)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 10, 00)), utc(2011, 02, 13, 10));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 10, 01)), utc(2011, 02, 13, 10));
|
||||
},
|
||||
"observes end of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 7, 59)), utc(2011, 10, 6, 7));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 8, 0)), utc(2011, 10, 6, 8));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 8, 1)), utc(2011, 10, 6, 8));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 8, 59)), utc(2011, 10, 6, 8));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 9, 0)), utc(2011, 10, 6, 9));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 9, 1)), utc(2011, 10, 6, 9));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 07, 59)), utc(2011, 10, 06, 07));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 08, 00)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 08, 01)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 08, 59)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 09, 00)), utc(2011, 10, 06, 09));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 09, 01)), utc(2011, 10, 06, 09));
|
||||
},
|
||||
"NPT": {
|
||||
"observes 15-minute offset": tz("Asia/Kathmandu", function(floor) {
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 17, 15));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 0)), utc(2010, 11, 31, 18, 15));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 1)), utc(2010, 11, 31, 18, 15));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 31, 18, 15));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 31, 18, 15));
|
||||
})
|
||||
},
|
||||
"IST": {
|
||||
"observes 30-minute offset": tz("Asia/Calcutta", function(floor) {
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 17, 30));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 0)), utc(2010, 11, 31, 18, 30));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 1)), utc(2010, 11, 31, 18, 30));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 31, 18, 30));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 31, 18, 30));
|
||||
})
|
||||
},
|
||||
"UTC": {
|
||||
|
@ -51,35 +58,102 @@ suite.addBatch({
|
|||
},
|
||||
"returns hours": function(floor) {
|
||||
assert.deepEqual(floor(utc(2010, 11, 31, 23, 59)), utc(2010, 11, 31, 23));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0)), utc(2011, 0, 1, 0));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 1)), utc(2011, 0, 1, 0));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00)), utc(2011, 00, 01, 00));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 01)), utc(2011, 00, 01, 00));
|
||||
},
|
||||
"does not observe the start of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 8, 59)), utc(2011, 2, 13, 8));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 9, 0)), utc(2011, 2, 13, 9));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 9, 1)), utc(2011, 2, 13, 9));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 9, 59)), utc(2011, 2, 13, 9));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 10, 0)), utc(2011, 2, 13, 10));
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 10, 1)), utc(2011, 2, 13, 10));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 08, 59)), utc(2011, 02, 13, 08));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 09, 00)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 09, 01)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 09, 59)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 10, 00)), utc(2011, 02, 13, 10));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 10, 01)), utc(2011, 02, 13, 10));
|
||||
},
|
||||
"does not observe the end of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 7, 59)), utc(2011, 10, 6, 7));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 8, 0)), utc(2011, 10, 6, 8));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 8, 1)), utc(2011, 10, 6, 8));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 8, 59)), utc(2011, 10, 6, 8));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 9, 0)), utc(2011, 10, 6, 9));
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 9, 1)), utc(2011, 10, 6, 9));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 07, 59)), utc(2011, 10, 06, 07));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 08, 00)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 08, 01)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 08, 59)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 09, 00)), utc(2011, 10, 06, 09));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 09, 01)), utc(2011, 10, 06, 09));
|
||||
}
|
||||
}
|
||||
},
|
||||
"ceil": {
|
||||
topic: function(interval) {
|
||||
return interval.ceil;
|
||||
},
|
||||
"returns hours": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 23, 59)), local(2011, 00, 01, 00));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00)), local(2011, 00, 01, 00));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 01)), local(2011, 00, 01, 01));
|
||||
},
|
||||
"observes start of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 08, 59)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 09, 00)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 09, 01)), utc(2011, 02, 13, 10));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 09, 59)), utc(2011, 02, 13, 10));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 10, 00)), utc(2011, 02, 13, 10));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 10, 01)), utc(2011, 02, 13, 11));
|
||||
},
|
||||
"observes end of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 07, 59)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 08, 00)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 08, 01)), utc(2011, 10, 06, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 08, 59)), utc(2011, 10, 06, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 09, 00)), utc(2011, 10, 06, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 09, 01)), utc(2011, 10, 06, 10));
|
||||
},
|
||||
"NPT": {
|
||||
"observes 15-minute offset": tz("Asia/Kathmandu", function(ceil) {
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 18, 15));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 31, 18, 15));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 31, 19, 15));
|
||||
})
|
||||
},
|
||||
"IST": {
|
||||
"observes 30-minute offset": tz("Asia/Calcutta", function(ceil) {
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 18, 30));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 31, 18, 30));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 31, 19, 30));
|
||||
})
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(ceil) {
|
||||
return ceil.utc;
|
||||
},
|
||||
"returns hours": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59)), utc(2011, 00, 01, 00));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00)), utc(2011, 00, 01, 00));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 01)), utc(2011, 00, 01, 01));
|
||||
},
|
||||
"does not observe the start of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 08, 59)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 09, 00)), utc(2011, 02, 13, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 09, 01)), utc(2011, 02, 13, 10));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 09, 59)), utc(2011, 02, 13, 10));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 10, 00)), utc(2011, 02, 13, 10));
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 10, 01)), utc(2011, 02, 13, 11));
|
||||
},
|
||||
"does not observe the end of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 07, 59)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 08, 00)), utc(2011, 10, 06, 08));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 08, 01)), utc(2011, 10, 06, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 08, 59)), utc(2011, 10, 06, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 09, 00)), utc(2011, 10, 06, 09));
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 09, 01)), utc(2011, 10, 06, 10));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function local(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(year, month, day, hours || 0, minutes || 0, seconds || 0);
|
||||
return new Date(year, month, day, hours || 00, minutes || 00, seconds || 00);
|
||||
}
|
||||
|
||||
function utc(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(Date.UTC(year, month, day, hours || 0, minutes || 0, seconds || 0));
|
||||
return new Date(Date.UTC(year, month, day, hours || 00, minutes || 00, seconds || 00));
|
||||
}
|
||||
|
||||
function tz(tz, scope) {
|
||||
|
|
|
@ -10,11 +10,18 @@ suite.addBatch({
|
|||
topic: function() {
|
||||
return d3.time.minute;
|
||||
},
|
||||
"defaults to floor": function(interval) {
|
||||
assert.strictEqual(interval, interval.floor);
|
||||
},
|
||||
"floor": {
|
||||
topic: function(interval) {
|
||||
return interval.floor;
|
||||
},
|
||||
"returns minutes": function(floor) {
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 11, 31, 23, 59));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 0)), local(2011, 0, 1, 0, 0));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 59)), local(2011, 0, 1, 0, 0));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 1, 0)), local(2011, 0, 1, 0, 1));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01, 00, 00));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 59)), local(2011, 00, 01, 00, 00));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 01, 00)), local(2011, 00, 01, 00, 01));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(floor) {
|
||||
|
@ -22,20 +29,43 @@ suite.addBatch({
|
|||
},
|
||||
"returns minutes": function(floor) {
|
||||
assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 23, 59));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 0)), utc(2011, 0, 1, 0, 0));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 59)), utc(2011, 0, 1, 0, 0));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 1, 0)), utc(2011, 0, 1, 0, 1));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01, 00, 00));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 59)), utc(2011, 00, 01, 00, 00));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 01, 00)), utc(2011, 00, 01, 00, 01));
|
||||
}
|
||||
}
|
||||
},
|
||||
"ceil": {
|
||||
topic: function(interval) {
|
||||
return interval.ceil;
|
||||
},
|
||||
"returns minutes": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), local(2011, 00, 01, 00, 00));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01, 00, 00));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 59)), local(2011, 00, 01, 00, 01));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 01, 00)), local(2011, 00, 01, 00, 01));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(ceil) {
|
||||
return ceil.utc;
|
||||
},
|
||||
"returns minutes": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59)), utc(2011, 00, 01, 00, 00));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01, 00, 00));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 59)), utc(2011, 00, 01, 00, 01));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 01, 00)), utc(2011, 00, 01, 00, 01));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function local(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(year, month, day, hours || 0, minutes || 0, seconds || 0);
|
||||
return new Date(year, month, day, hours || 00, minutes || 00, seconds || 00);
|
||||
}
|
||||
|
||||
function utc(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(Date.UTC(year, month, day, hours || 0, minutes || 0, seconds || 0));
|
||||
return new Date(Date.UTC(year, month, day, hours || 00, minutes || 00, seconds || 00));
|
||||
}
|
||||
|
||||
suite.export(module);
|
||||
|
|
|
@ -10,42 +10,82 @@ suite.addBatch({
|
|||
topic: function() {
|
||||
return d3.time.month;
|
||||
},
|
||||
"defaults to floor": function(interval) {
|
||||
assert.strictEqual(interval, interval.floor);
|
||||
},
|
||||
"floor": {
|
||||
topic: function(interval) {
|
||||
return interval.floor;
|
||||
},
|
||||
"returns months": function(floor) {
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 11, 1));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 0)), local(2011, 0, 1));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 1)), local(2011, 0, 1));
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 11, 01));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), local(2011, 00, 01));
|
||||
},
|
||||
"observes the start of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(local(2011, 2, 13, 1)), local(2011, 2, 1));
|
||||
assert.deepEqual(floor(local(2011, 02, 13, 01)), local(2011, 02, 01));
|
||||
},
|
||||
"observes the end of the daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(local(2011, 10, 6, 1)), local(2011, 10, 1));
|
||||
assert.deepEqual(floor(local(2011, 10, 06, 01)), local(2011, 10, 01));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(floor) {
|
||||
return floor.utc;
|
||||
},
|
||||
"returns months": function(floor) {
|
||||
assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 1));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 0)), utc(2011, 0, 1));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 1)), utc(2011, 0, 1));
|
||||
assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 01));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 01)), utc(2011, 00, 01));
|
||||
},
|
||||
"does not observe the start of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 1)), utc(2011, 2, 1));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 01)), utc(2011, 02, 01));
|
||||
},
|
||||
"does not observe the end of the daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 1)), utc(2011, 10, 1));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 01)), utc(2011, 10, 01));
|
||||
}
|
||||
}
|
||||
},
|
||||
"ceil": {
|
||||
topic: function(interval) {
|
||||
return interval.ceil;
|
||||
},
|
||||
"returns months": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), local(2011, 00, 01));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), local(2011, 01, 01));
|
||||
},
|
||||
"observes the start of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2011, 02, 13, 01)), local(2011, 03, 01));
|
||||
},
|
||||
"observes the end of the daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2011, 10, 06, 01)), local(2011, 11, 01));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(ceil) {
|
||||
return ceil.utc;
|
||||
},
|
||||
"returns months": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59)), utc(2011, 00, 01));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 01)), utc(2011, 01, 01));
|
||||
},
|
||||
"does not observe the start of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 01)), utc(2011, 03, 01));
|
||||
},
|
||||
"does not observe the end of the daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 01)), utc(2011, 11, 01));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function local(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(year, month, day, hours || 0, minutes || 0, seconds || 0);
|
||||
return new Date(year, month, day, hours || 00, minutes || 00, seconds || 00);
|
||||
}
|
||||
|
||||
function utc(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(Date.UTC(year, month, day, hours || 0, minutes || 0, seconds || 0));
|
||||
return new Date(Date.UTC(year, month, day, hours || 00, minutes || 00, seconds || 00));
|
||||
}
|
||||
|
||||
suite.export(module);
|
||||
|
|
|
@ -10,10 +10,17 @@ suite.addBatch({
|
|||
topic: function() {
|
||||
return d3.time.second;
|
||||
},
|
||||
"defaults to floor": function(interval) {
|
||||
assert.strictEqual(interval, interval.floor);
|
||||
},
|
||||
"floor": {
|
||||
topic: function(interval) {
|
||||
return interval.floor;
|
||||
},
|
||||
"returns seconds": function(floor) {
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59, 999)), local(2010, 11, 31, 23, 59, 59));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 0, 0)), local(2011, 0, 1, 0, 0, 0));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 0, 1)), local(2011, 0, 1, 0, 0, 0));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00, 000)), local(2011, 00, 01, 00, 00, 00));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00, 001)), local(2011, 00, 01, 00, 00, 00));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(floor) {
|
||||
|
@ -21,19 +28,40 @@ suite.addBatch({
|
|||
},
|
||||
"returns seconds": function(floor) {
|
||||
assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59, 999)), utc(2010, 11, 31, 23, 59, 59));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 0, 0)), utc(2011, 0, 1, 0, 0, 0));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 0, 1)), utc(2011, 0, 1, 0, 0, 0));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00, 000)), utc(2011, 00, 01, 00, 00, 00));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00, 001)), utc(2011, 00, 01, 00, 00, 00));
|
||||
}
|
||||
}
|
||||
},
|
||||
"ceil": {
|
||||
topic: function(interval) {
|
||||
return interval.ceil;
|
||||
},
|
||||
"returns seconds": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59, 999)), local(2011, 00, 01, 00, 00, 00));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00, 000)), local(2011, 00, 01, 00, 00, 00));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00, 001)), local(2011, 00, 01, 00, 00, 01));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(ceil) {
|
||||
return ceil.utc;
|
||||
},
|
||||
"returns seconds": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59, 999)), utc(2011, 00, 01, 00, 00, 00));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00, 000)), utc(2011, 00, 01, 00, 00, 00));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00, 001)), utc(2011, 00, 01, 00, 00, 01));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function local(year, month, day, hours, minutes, seconds, milliseconds) {
|
||||
return new Date(year, month, day, hours || 0, minutes || 0, seconds || 0, milliseconds || 0);
|
||||
return new Date(year, month, day, hours || 00, minutes || 00, seconds || 00, milliseconds || 00);
|
||||
}
|
||||
|
||||
function utc(year, month, day, hours, minutes, seconds, milliseconds) {
|
||||
return new Date(Date.UTC(year, month, day, hours || 0, minutes || 0, seconds || 0, milliseconds || 0));
|
||||
return new Date(Date.UTC(year, month, day, hours || 00, minutes || 00, seconds || 00, milliseconds || 00));
|
||||
}
|
||||
|
||||
suite.export(module);
|
||||
|
|
|
@ -10,48 +10,94 @@ suite.addBatch({
|
|||
topic: function() {
|
||||
return d3.time.week;
|
||||
},
|
||||
"returns weeks": function(floor) {
|
||||
"defaults to floor": function(interval) {
|
||||
assert.strictEqual(interval, interval.floor);
|
||||
},
|
||||
"floor": {
|
||||
topic: function(interval) {
|
||||
return interval.floor;
|
||||
},
|
||||
"returns sundays": function(floor) {
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 11, 26));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 0)), local(2010, 11, 26));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 1)), local(2010, 11, 26));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 23, 59, 59)), local(2010, 11, 26));
|
||||
assert.deepEqual(floor(local(2011, 0, 2, 0, 0, 0)), local(2011, 0, 2));
|
||||
assert.deepEqual(floor(local(2011, 0, 2, 0, 0, 1)), local(2011, 0, 2));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), local(2010, 11, 26));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), local(2010, 11, 26));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 23, 59, 59)), local(2010, 11, 26));
|
||||
assert.deepEqual(floor(local(2011, 00, 02, 00, 00, 00)), local(2011, 00, 02));
|
||||
assert.deepEqual(floor(local(2011, 00, 02, 00, 00, 01)), local(2011, 00, 02));
|
||||
},
|
||||
"observes the start of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(local(2011, 2, 13, 1)), local(2011, 2, 13));
|
||||
assert.deepEqual(floor(local(2011, 02, 13, 01)), local(2011, 02, 13));
|
||||
},
|
||||
"observes the end of the daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(local(2011, 10, 6, 1)), local(2011, 10, 6));
|
||||
assert.deepEqual(floor(local(2011, 10, 06, 01)), local(2011, 10, 06));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(floor) {
|
||||
return floor.utc;
|
||||
},
|
||||
"returns weeks": function(floor) {
|
||||
"returns sundays": function(floor) {
|
||||
assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 26));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 0)), utc(2010, 11, 26));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 1)), utc(2010, 11, 26));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 23, 59, 59)), utc(2010, 11, 26));
|
||||
assert.deepEqual(floor(utc(2011, 0, 2, 0, 0, 0)), utc(2011, 0, 2));
|
||||
assert.deepEqual(floor(utc(2011, 0, 2, 0, 0, 1)), utc(2011, 0, 2));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 26));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 26));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 23, 59, 59)), utc(2010, 11, 26));
|
||||
assert.deepEqual(floor(utc(2011, 00, 02, 00, 00, 00)), utc(2011, 00, 02));
|
||||
assert.deepEqual(floor(utc(2011, 00, 02, 00, 00, 01)), utc(2011, 00, 02));
|
||||
},
|
||||
"does not observe the start of daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 2, 13, 1)), utc(2011, 2, 13));
|
||||
assert.deepEqual(floor(utc(2011, 02, 13, 01)), utc(2011, 02, 13));
|
||||
},
|
||||
"does not observe the end of the daylight savings time": function(floor) {
|
||||
assert.deepEqual(floor(utc(2011, 10, 6, 1)), utc(2011, 10, 6));
|
||||
assert.deepEqual(floor(utc(2011, 10, 06, 01)), utc(2011, 10, 06));
|
||||
}
|
||||
}
|
||||
},
|
||||
"ceil": {
|
||||
topic: function(interval) {
|
||||
return interval.ceil;
|
||||
},
|
||||
"returns sundays": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), local(2011, 00, 02));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 02));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), local(2011, 00, 02));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 23, 59, 59)), local(2011, 00, 02));
|
||||
assert.deepEqual(ceil(local(2011, 00, 02, 00, 00, 00)), local(2011, 00, 02));
|
||||
assert.deepEqual(ceil(local(2011, 00, 02, 00, 00, 01)), local(2011, 00, 09));
|
||||
},
|
||||
"observes the start of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2011, 02, 13, 01)), local(2011, 02, 20));
|
||||
},
|
||||
"observes the end of the daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2011, 10, 06, 01)), local(2011, 10, 13));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(ceil) {
|
||||
return ceil.utc;
|
||||
},
|
||||
"returns sundays": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59)), utc(2011, 00, 02));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 02));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 01)), utc(2011, 00, 02));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 23, 59, 59)), utc(2011, 00, 02));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 02, 00, 00, 00)), utc(2011, 00, 02));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 02, 00, 00, 01)), utc(2011, 00, 09));
|
||||
},
|
||||
"does not observe the start of daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 02, 13, 01)), utc(2011, 02, 20));
|
||||
},
|
||||
"does not observe the end of the daylight savings time": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2011, 10, 06, 01)), utc(2011, 10, 13));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function local(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(year, month, day, hours || 0, minutes || 0, seconds || 0);
|
||||
return new Date(year, month, day, hours || 00, minutes || 00, seconds || 00);
|
||||
}
|
||||
|
||||
function utc(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(Date.UTC(year, month, day, hours || 0, minutes || 0, seconds || 0));
|
||||
return new Date(Date.UTC(year, month, day, hours || 00, minutes || 00, seconds || 00));
|
||||
}
|
||||
|
||||
suite.export(module);
|
||||
|
|
|
@ -10,30 +10,58 @@ suite.addBatch({
|
|||
topic: function() {
|
||||
return d3.time.year;
|
||||
},
|
||||
"defaults to floor": function(interval) {
|
||||
assert.strictEqual(interval, interval.floor);
|
||||
},
|
||||
"floor": {
|
||||
topic: function(interval) {
|
||||
return interval.floor;
|
||||
},
|
||||
"returns years": function(floor) {
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 0, 1));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 0)), local(2011, 0, 1));
|
||||
assert.deepEqual(floor(local(2011, 0, 1, 0, 0, 1)), local(2011, 0, 1));
|
||||
assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 00, 01));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01));
|
||||
assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), local(2011, 00, 01));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(floor) {
|
||||
return floor.utc;
|
||||
},
|
||||
"returns years": function(floor) {
|
||||
assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 0, 1));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 0)), utc(2011, 0, 1));
|
||||
assert.deepEqual(floor(utc(2011, 0, 1, 0, 0, 1)), utc(2011, 0, 1));
|
||||
assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 00, 01));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01));
|
||||
assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 01)), utc(2011, 00, 01));
|
||||
}
|
||||
}
|
||||
},
|
||||
"ceil": {
|
||||
topic: function(interval) {
|
||||
return interval.ceil;
|
||||
},
|
||||
"returns years": function(ceil) {
|
||||
assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), local(2011, 00, 01));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01));
|
||||
assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), local(2012, 00, 01));
|
||||
},
|
||||
"UTC": {
|
||||
topic: function(ceil) {
|
||||
return ceil.utc;
|
||||
},
|
||||
"returns years": function(ceil) {
|
||||
assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59)), utc(2011, 00, 01));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01));
|
||||
assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 01)), utc(2012, 00, 01));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function local(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(year, month, day, hours || 0, minutes || 0, seconds || 0);
|
||||
return new Date(year, month, day, hours || 00, minutes || 00, seconds || 00);
|
||||
}
|
||||
|
||||
function utc(year, month, day, hours, minutes, seconds) {
|
||||
return new Date(Date.UTC(year, month, day, hours || 0, minutes || 0, seconds || 0));
|
||||
return new Date(Date.UTC(year, month, day, hours || 00, minutes || 00, seconds || 00));
|
||||
}
|
||||
|
||||
suite.export(module);
|
||||
|
|
Загрузка…
Ссылка в новой задаче