exports.testParse = function() { // Check for same time: http://www.w3.org/TR/NOTE-datetime assert.strictEqual(dates.parse("1994-11-05T08:15:30-05:00").getTime(), dates.parse("1994-11-05T13:15:30Z").getTime()); assert.strictEqual((dates.parse("2009-02-13T23:31:30Z")).getTime(), 1234567890000); // GMT: Fri, 13 Feb 2009 23:31:30 GMT assert.strictEqual((dates.parse("2009-02-13T23:31:30+00:00")).getTime(), 1234567890000); // GMT: Fri, 13 Feb 2009 23:31:30 GMT assert.strictEqual((dates.parse("2010-01-01T00:00+01:00")).getTime(), 1262300400000); assert.strictEqual((dates.parse("2010-10-26T00:00+02:00")).getTime(), 1288044000000); assert.strictEqual((dates.parse("2010-10-26T00:00:00+02:00")).getTime(), 1288044000000); assert.strictEqual((dates.parse("2010-10-26T00:00:00.0+02:00")).getTime(), 1288044000000); assert.strictEqual((dates.parse("2010-10-26T00:00:00.00+02:00")).getTime(), 1288044000000); assert.strictEqual((dates.parse("2010-10-26T00:00:00.000+02:00")).getTime(), 1288044000000); // UTC assert.strictEqual((dates.parse("2010-10-26T00:00Z")).getTime(), 1288051200000); assert.strictEqual((dates.parse("2010-10-26T00:00:00Z")).getTime(), 1288051200000); assert.strictEqual((dates.parse("2010-10-26T00:00:00.0Z")).getTime(), 1288051200000); assert.strictEqual((dates.parse("2010-10-26T00:00:00.00Z")).getTime(), 1288051200000); assert.strictEqual((dates.parse("2010-10-26T00:00:00.000Z")).getTime(), 1288051200000); // NaN assert.isNaN(dates.parse("asdf")); assert.isNaN(dates.parse("2010-")); assert.isNaN(dates.parse("2010-99")); assert.isNaN(dates.parse("2010-01-99")); assert.isNaN(dates.parse("2010-01-01T24:59Z")); assert.isNaN(dates.parse("2010-01-01T25:00Z")); assert.isNaN(dates.parse("2010-01-01TT25:00Z")); assert.isNaN(dates.parse("2010-01-01T23:00-25:00")); // Check for not NaN // FIXME no exact checks because of local time... assert.isNotNaN(dates.parse("2010-01-01T01:01").getTime()); assert.isNotNaN(dates.parse("2010-01-01T01:01:01").getTime()); assert.isNotNaN(dates.parse("2010-01-01T01:01:01.001").getTime()); // cases map datestrings to objects with corresponding UTC date properties var cases = { "2000": { year: 2000, month: 0, date: 1 }, "2005-10": { year: 2005, month: 9, date: 1 }, "1971-07-23": { year: 1971, month: 6, date: 23 }, "1801-11-20T04:30:15Z": { year: 1801, month: 10, date: 20, hour: 4, minutes: 30, seconds: 15 }, "1989-06-15T18:30:15.91Z": { year: 1989, month: 5, date: 15, hour: 18, minutes: 30, seconds: 15, milliseconds: 910 }, "1989-06-15T18:30:15.9105Z": { year: 1989, month: 5, date: 15, hour: 18, minutes: 30, seconds: 15, milliseconds: 911 }, "2010-01-01T00:00:00+01:00": { // zero hour year: 2009, month: 11, date: 31, hour: 23, minutes: 0, seconds: 0 }, "2010-01-01T24:00Z": { // 24:00 year: 2010, month: 0, date: 2, hour: 0, minutes: 0, seconds: 0 }, "2010-01-01T00:00+01:00": { // no seconds (lenient) year: 2009, month: 11, date: 31, hour: 23, minutes: 0, seconds: 0 }, "2010-08-06T15:21:25-06": { // MDT year: 2010, month: 7, date: 6, hour: 21, minutes: 21, seconds: 25 }, "2010-08-07T06:21:25+9": { // JSP year: 2010, month: 7, date: 6, hour: 21, minutes: 21, seconds: 25 }, "2010-08-07T02:51:25+05:30": { // IST year: 2010, month: 7, date: 6, hour: 21, minutes: 21, seconds: 25 }, "T18:30:15.91Z": { hour: 18, minutes: 30, seconds: 15, milliseconds: 910 }, "T21:51:25Z": { hour: 21, minutes: 51, seconds: 25 }, "T02:51:25+05:30": { // IST hour: 21, minutes: 21, seconds: 25 }, "T2:51:25.1234-7": { // lenient hour: 9, minutes: 51, seconds: 25, milliseconds: 123 } }; var o, got, exp; for (var str in cases) { o = cases[str]; got = dates.parse(str); exp = new Date(Date.UTC(o.year || 0, o.month || 0, o.date || 1, o.hour || 0, o.minutes || 0, o.seconds || 0, o.milliseconds || 0)); if ("year" in o) { assert.strictEqual(got.getUTCFullYear(), exp.getUTCFullYear(), str + ": correct UTCFullYear"); assert.strictEqual(got.getUTCMonth(), exp.getUTCMonth(), str + ": correct UTCMonth"); assert.strictEqual(got.getUTCDate(), exp.getUTCDate(), str + ": correct UTCDate"); } assert.strictEqual(got.getUTCHours(), exp.getUTCHours(), str + ": correct UTCHours"); assert.strictEqual(got.getUTCMinutes(), exp.getUTCMinutes(), str + ": correct UTCMinutes"); assert.strictEqual(got.getUTCSeconds(), exp.getUTCSeconds(), str + ": correct UTCSeconds"); assert.strictEqual(got.getUTCMilliseconds(), exp.getUTCMilliseconds(), str + ": correct UTCMilliseconds"); } return; };
exports.testIsNotNaN = function() { assert.isNotNaN(1); assert.throws(getFunction(assert.isNotNaN, NaN), assert.AssertionError); return; };