exports.testDiff = function() { var a = new Date(2010, 0, 1), b = new Date(2010, 0, 2); assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(a, b, "month"), 0); assert.equal(dates.diff(a, b, "week"), 0); assert.equal(dates.diff(a, b, "day"), 1); assert.equal(dates.diff(a, b, "hour"), 24); assert.equal(dates.diff(a, b, "minute"), 1440); assert.equal(dates.diff(a, b, "second"), 86400); assert.equal(dates.diff(a, b, "millisecond"), 86400000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 1, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 0 }); // normal year b = new Date(2009, 0, 1); assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(a, b, "month"), 12); assert.equal(dates.diff(a, b, "week"), 52); assert.equal(dates.diff(a, b, "day"), 365); assert.equal(dates.diff(a, b, "hour"), 8760); assert.equal(dates.diff(a, b, "minute"), 525600); assert.equal(dates.diff(a, b, "second"), 31536000); assert.equal(dates.diff(a, b, "millisecond"), 31536000000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 365, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 0 }); // leap year a = new Date(2012, 0, 1); b = new Date(2013, 0, 1); assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(a, b, "month"), 12); assert.equal(dates.diff(a, b, "week"), 52); assert.equal(dates.diff(a, b, "day"), 366); assert.equal(dates.diff(a, b, "hour"), 8784); assert.equal(dates.diff(a, b, "minute"), 527040); assert.equal(dates.diff(a, b, "second"), 31622400); assert.equal(dates.diff(a, b, "millisecond"), 31622400000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 366, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 0 }); // one minute a = new Date(2012, 0, 1, 0, 1); b = new Date(2012, 0, 1, 0, 2); assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(a, b, "month"), 0); assert.equal(dates.diff(a, b, "week"), 0); assert.equal(dates.diff(a, b, "day"), 0); assert.equal(dates.diff(a, b, "hour"), 0); assert.equal(dates.diff(a, b, "minute"), 1); assert.equal(dates.diff(a, b, "second"), 60); assert.equal(dates.diff(a, b, "millisecond"), 60000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 0, "hours": 0, "minutes": 1, "seconds": 0, "milliseconds": 0 }); // one millisecond a = new Date(1234567890); b = new Date(1234567891); assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(a, b, "month"), 0); assert.equal(dates.diff(a, b, "week"), 0); assert.equal(dates.diff(a, b, "day"), 0); assert.equal(dates.diff(a, b, "hour"), 0); assert.equal(dates.diff(a, b, "minute"), 0); assert.equal(dates.diff(a, b, "second"), 0); assert.equal(dates.diff(a, b, "millisecond"), 1); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 0, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 1 }); // more tests (Einstein's life) a = new Date(1879, 2, 14); b = new Date(1955, 3, 18); assert.equal(dates.diff(a, b, "year"), 76); assert.equal(dates.diff(a, b, "quarter"), 305); assert.equal(dates.diff(a, b, "month"), 913); assert.equal(dates.diff(a, b, "week"), 3970); assert.equal(dates.diff(a, b, "day"), 27792); // again Einstein, now with time diff b = new Date(1955, 3, 18, 20, 39, 10, 53); assert.equal(dates.diff(a, b, "year"), 76); assert.equal(dates.diff(a, b, "quarter"), 305); assert.equal(dates.diff(a, b, "month"), 913); assert.equal(dates.diff(a, b, "week"), 3970); assert.equal(dates.diff(a, b, "day"), 27793); };
assert.throws(function() { dates.diff(a, b, "") });
exports.testDiff = function() { var a = new Date(2010, 0, 1), b = new Date(2010, 0, 2); assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(a, b, "month"), 0); assert.equal(dates.diff(a, b, "week"), 0); assert.equal(dates.diff(a, b, "day"), 1); assert.equal(dates.diff(a, b, "hour"), 24); assert.equal(dates.diff(a, b, "minute"), 1440); assert.equal(dates.diff(a, b, "second"), 86400); assert.equal(dates.diff(a, b, "millisecond"), 86400000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 1, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 0 }); // normal year b = new Date(2009, 0, 1); assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(a, b, "month"), 12); assert.equal(dates.diff(a, b, "week"), 52); assert.equal(dates.diff(a, b, "day"), 365); assert.equal(dates.diff(a, b, "hour"), 8760); assert.equal(dates.diff(a, b, "minute"), 525600); assert.equal(dates.diff(a, b, "second"), 31536000); assert.equal(dates.diff(a, b, "millisecond"), 31536000000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 365, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 0 }); // leap year a = new Date(2012, 0, 1); b = new Date(2013, 0, 1); assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(a, b, "month"), 12); assert.equal(dates.diff(a, b, "week"), 52); assert.equal(dates.diff(a, b, "day"), 366); assert.equal(dates.diff(a, b, "hour"), 8784); assert.equal(dates.diff(a, b, "minute"), 527040); assert.equal(dates.diff(a, b, "second"), 31622400); assert.equal(dates.diff(a, b, "millisecond"), 31622400000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 366, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 0 }); // one minute a = new Date(2012, 0, 1, 0, 1); b = new Date(2012, 0, 1, 0, 2); assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(a, b, "month"), 0); assert.equal(dates.diff(a, b, "week"), 0); assert.equal(dates.diff(a, b, "day"), 0); assert.equal(dates.diff(a, b, "hour"), 0); assert.equal(dates.diff(a, b, "minute"), 1); assert.equal(dates.diff(a, b, "second"), 60); assert.equal(dates.diff(a, b, "millisecond"), 60000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 0, "hours": 0, "minutes": 1, "seconds": 0, "milliseconds": 0 }); // one millisecond a = new Date(1234567890); b = new Date(1234567891); assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(a, b, "month"), 0); assert.equal(dates.diff(a, b, "week"), 0); assert.equal(dates.diff(a, b, "day"), 0); assert.equal(dates.diff(a, b, "hour"), 0); assert.equal(dates.diff(a, b, "minute"), 0); assert.equal(dates.diff(a, b, "second"), 0); assert.equal(dates.diff(a, b, "millisecond"), 1); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 0, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 1 }); // 366 + 31 days = 397 days a = new Date(Date.UTC(2012, 0, 1)); b = new Date(Date.UTC(2013, 1, 1)); assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(a, b, "month"), 13); assert.equal(dates.diff(a, b, "week"), 56); assert.equal(dates.diff(a, b, "day"), 397); // again Einstein, now with time diff b = new Date(Date.UTC(2013, 1, 1, 20, 20, 20, 20)); assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(a, b, "month"), 13); assert.equal(dates.diff(a, b, "week"), 56); assert.equal(dates.diff(a, b, "day"), 397); };
exports.testDiff = function() { var a = new Date(2010, 0, 1), b = new Date(2010, 0, 2); assert.throws(function() { dates.diff(a, b, "yeard") }); assert.throws(function() { dates.diff(a, b, "") }); assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(a, b, "month"), 0); assert.equal(dates.diff(a, b, "week"), 0); assert.equal(dates.diff(a, b), 1); assert.equal(dates.diff(a, b, "day"), 1); assert.equal(dates.diff(a, b, "hour"), 24); assert.equal(dates.diff(a, b, "minute"), 1440); assert.equal(dates.diff(a, b, "second"), 86400); assert.equal(dates.diff(a, b, "millisecond"), 86400000); assert.equal(dates.diff(a, b, "years"), 0); assert.equal(dates.diff(a, b, "quarters"), 0); assert.equal(dates.diff(a, b, "months"), 0); assert.equal(dates.diff(a, b, "weeks"), 0); assert.equal(dates.diff(a, b, "days"), 1); assert.equal(dates.diff(a, b, "hours"), 24); assert.equal(dates.diff(a, b, "minutes"), 1440); assert.equal(dates.diff(a, b, "seconds"), 86400); assert.equal(dates.diff(a, b, "milliseconds"), 86400000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 1, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 0 }); // normal year b = new Date(2009, 0, 1); assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(a, b, "month"), 12); assert.equal(dates.diff(a, b, "week"), 52); assert.equal(dates.diff(a, b, "day"), 365); assert.equal(dates.diff(a, b, "hour"), 8760); assert.equal(dates.diff(a, b, "minute"), 525600); assert.equal(dates.diff(a, b, "second"), 31536000); assert.equal(dates.diff(a, b, "millisecond"), 31536000000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 365, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 0 }); // leap year a = new Date(2012, 0, 1); b = new Date(2013, 0, 1); assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(a, b, "month"), 12); assert.equal(dates.diff(a, b, "week"), 52); assert.equal(dates.diff(a, b, "day"), 366); assert.equal(dates.diff(a, b, "hour"), 8784); assert.equal(dates.diff(a, b, "minute"), 527040); assert.equal(dates.diff(a, b, "second"), 31622400); assert.equal(dates.diff(a, b, "millisecond"), 31622400000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 366, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 0 }); // one minute a = new Date(2012, 0, 1, 0, 1); b = new Date(2012, 0, 1, 0, 2); assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(a, b, "month"), 0); assert.equal(dates.diff(a, b, "week"), 0); assert.equal(dates.diff(a, b, "day"), 0); assert.equal(dates.diff(a, b, "hour"), 0); assert.equal(dates.diff(a, b, "minute"), 1); assert.equal(dates.diff(a, b, "second"), 60); assert.equal(dates.diff(a, b, "millisecond"), 60000); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 0, "hours": 0, "minutes": 1, "seconds": 0, "milliseconds": 0 }); // one millisecond a = new Date(1234567890); b = new Date(1234567891); assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(a, b, "month"), 0); assert.equal(dates.diff(a, b, "week"), 0); assert.equal(dates.diff(a, b, "day"), 0); assert.equal(dates.diff(a, b, "hour"), 0); assert.equal(dates.diff(a, b, "minute"), 0); assert.equal(dates.diff(a, b, "second"), 0); assert.equal(dates.diff(a, b, "millisecond"), 1); assert.equal(dates.diff(a, b, "years"), 0); assert.equal(dates.diff(a, b, "quarters"), 0); assert.equal(dates.diff(a, b, "months"), 0); assert.equal(dates.diff(a, b, "weeks"), 0); assert.equal(dates.diff(a, b, "days"), 0); assert.equal(dates.diff(a, b, "hours"), 0); assert.equal(dates.diff(a, b, "minutes"), 0); assert.equal(dates.diff(a, b, "seconds"), 0); assert.equal(dates.diff(a, b, "milliseconds"), 1); assert.deepEqual(dates.diff(a, b, "mixed"), { "days": 0, "hours": 0, "minutes": 0, "seconds": 0, "milliseconds": 1 }); // 366 + 31 days = 397 days a = new Date(2012, 0, 1); b = new Date(2013, 1, 1); assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(a, b, "month"), 13); assert.equal(dates.diff(a, b, "week"), 56); assert.equal(dates.diff(a, b, "day"), 397); // no difference in quarters a = new Date(2013, 11, 1, 12, 0, 0); // Q4/2013 b = new Date(2013, 9, 1, 12, 0, 0); // Q4/2013 assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(b, a, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 0); assert.equal(dates.diff(b, a, "quarter"), 0); // 3 quarter difference, same years a = new Date(2013, 2, 30); // Q1/2013 b = new Date(2013, 9, 2); // Q4/2013 assert.equal(dates.diff(a, b, "year"), 0); assert.equal(dates.diff(b, a, "year"), 0); assert.equal(dates.diff(a, b, "quarter"), 3); assert.equal(dates.diff(b, a, "quarter"), 3); // 3 quarter difference, different years a = new Date(2013, 8, 30); // Q3/2013 b = new Date(2014, 5, 30); // Q2/2013 assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(b, a, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 3); assert.equal(dates.diff(b, a, "quarter"), 3); // 4 quarter difference, different years a = new Date(2012, 0, 1); // Q4/2012 b = new Date(2013, 0, 1); // Q1/2013 assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(b, a, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 4); assert.equal(dates.diff(b, a, "quarter"), 4); // 1 quarter difference, different years a = new Date(2012, 11, 1); // Q4/2012 b = new Date(2013, 0, 1); // Q1/2013 assert.equal(dates.diff(a, b, "year"), 1); assert.equal(dates.diff(b, a, "year"), 1); assert.equal(dates.diff(a, b, "quarter"), 1); assert.equal(dates.diff(b, a, "quarter"), 1); };