Skip to content

Instantly share code, notes, and snippets.

@mckamey
Created October 5, 2011 17:20
Show Gist options
  • Save mckamey/1265065 to your computer and use it in GitHub Desktop.
Save mckamey/1265065 to your computer and use it in GitHub Desktop.
ECMAScript Date range unit test
try{
module("ES5 ranges");
test("ES5 Epoch", function() {
// epoch
var expected = 0;
var actual = new Date(expected);
same(actual.getTime(), expected, "");
same(actual.getUTCFullYear(), 1970, "");
same(actual.getUTCMonth(), 0, "");
same(actual.getUTCDate(), 1, "");
same(actual.getUTCHours(), 0, "");
same(actual.getUTCMinutes(), 0, "");
same(actual.getUTCSeconds(), 0, "");
same(actual.getUTCMilliseconds(), 0, "");
});
test("ES5 Min Date", function() {
// epoch - 1e8 days
var expected = -8.64e15;
var actual = new Date(expected);
same(actual.getTime(), expected, "");
same(actual.getUTCFullYear(), -271821, "");
same(actual.getUTCMonth(), 3, "");
same(actual.getUTCDate(), 20, "");
same(actual.getUTCHours(), 0, "");
same(actual.getUTCMinutes(), 0, "");
same(actual.getUTCSeconds(), 0, "");
same(actual.getUTCMilliseconds(), 0, "");
});
test("ES5 Max Date", function() {
// epoch + 1e8 days
var expected = 8.64e15;
var actual = new Date(expected);
same(actual.getTime(), expected, "");
same(actual.getUTCFullYear(), 275760, "");
same(actual.getUTCMonth(), 8, "");
same(actual.getUTCDate(), 13, "");
same(actual.getUTCHours(), 0, "");
same(actual.getUTCMinutes(), 0, "");
same(actual.getUTCSeconds(), 0, "");
same(actual.getUTCMilliseconds(), 0, "");
});
module("Overflow Date ranges");
test("Underflow Date", function() {
// epoch - 1e8 days - 1 ms
var expected = -8.64e15-1;
var actual = new Date(expected);
same(actual.getTime(), NaN, "");
same(actual.getUTCFullYear(), NaN, "");
same(actual.getUTCMonth(), NaN, "");
same(actual.getUTCDate(), NaN, "");
same(actual.getUTCHours(), NaN, "");
same(actual.getUTCMinutes(), NaN, "");
same(actual.getUTCSeconds(), NaN, "");
same(actual.getUTCMilliseconds(), NaN, "");
});
test("Overflow Date", function() {
// epoch + 1e8 days + 1 ms
var expected = 8.64e15+1;
var actual = new Date(expected);
same(actual.getTime(), NaN, "");
same(actual.getUTCFullYear(), NaN, "");
same(actual.getUTCMonth(), NaN, "");
same(actual.getUTCDate(), NaN, "");
same(actual.getUTCHours(), NaN, "");
same(actual.getUTCMinutes(), NaN, "");
same(actual.getUTCSeconds(), NaN, "");
same(actual.getUTCMilliseconds(), NaN, "");
});
}catch(ex){alert(ex);}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment