UNPKG

dojo

Version:

Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.

591 lines (479 loc) 18.2 kB
define([ 'intern!object', 'intern/chai!assert', '../../date' ], function (registerSuite, assert, date) { function assertDateEqual(date1, date2) { assert.instanceOf(date1, Date); assert.instanceOf(date2, Date); assert.strictEqual(date1.getTime(), date2.getTime()); } registerSuite({ name: 'dojo/date', '.getDaysInMonth': { 'not February': function () { assert.strictEqual(date.getDaysInMonth(new Date(2014, 0, 1)), 31); assert.strictEqual(date.getDaysInMonth(new Date(2014, 2, 1)), 31); assert.strictEqual(date.getDaysInMonth(new Date(2014, 3, 1)), 30); assert.strictEqual(date.getDaysInMonth(new Date(2014, 4, 1)), 31); assert.strictEqual(date.getDaysInMonth(new Date(2014, 5, 1)), 30); assert.strictEqual(date.getDaysInMonth(new Date(2014, 6, 1)), 31); assert.strictEqual(date.getDaysInMonth(new Date(2014, 7, 1)), 31); assert.strictEqual(date.getDaysInMonth(new Date(2014, 8, 1)), 30); assert.strictEqual(date.getDaysInMonth(new Date(2014, 9, 1)), 31); assert.strictEqual(date.getDaysInMonth(new Date(2014, 10, 1)), 30); assert.strictEqual(date.getDaysInMonth(new Date(2014, 11, 1)), 31); }, 'Februarys': function () { assert.strictEqual(date.getDaysInMonth(new Date(2014, 1, 1)), 28); assert.strictEqual(date.getDaysInMonth(new Date(2004, 1, 1)), 29); assert.strictEqual(date.getDaysInMonth(new Date(2000, 1, 1)), 29); assert.strictEqual(date.getDaysInMonth(new Date(1900, 1, 1)), 28); assert.strictEqual(date.getDaysInMonth(new Date(1800, 1, 1)), 28); assert.strictEqual(date.getDaysInMonth(new Date(1700, 1, 1)), 28); assert.strictEqual(date.getDaysInMonth(new Date(1600, 1, 1)), 29); } }, '.isLeapYear': { 'leap years': function () { assert.isFalse(date.isLeapYear(new Date(2014, 0, 1))); assert.isTrue(date.isLeapYear(new Date(2012, 0, 1))); assert.isTrue(date.isLeapYear(new Date(2000, 0, 1))); assert.isFalse(date.isLeapYear(new Date(1900, 0, 1))); assert.isFalse(date.isLeapYear(new Date(1800, 0, 1))); assert.isFalse(date.isLeapYear(new Date(1700, 0, 1))); assert.isTrue(date.isLeapYear(new Date(1600, 0, 1))); } }, // The getTimezone function pulls from either the date's toString or // toLocaleString method -- it's really just a string-processing // function (assuming the Date obj passed in supporting both toString // and toLocaleString) and as such can be tested for multiple browsers // by manually settting up fake Date objects with the actual strings // produced by various browser/OS combinations. // FIXME: the function and tests are not localized. '.getTimezoneName': (function () { var dt; // Create a fake Date object with toString and toLocaleString // results manually set to simulate tests for multiple browsers function FakeDate(str, strLocale) { this.str = str || ''; this.strLocale = strLocale || ''; this.toString = function () { return this.str; }; this.toLocaleString = function () { return this.strLocale; }; } return { setup: function () { dt = new FakeDate(); }, 'FF 1.5 Ubuntu Linux (Breezy)': function () { dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)'; dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT'; assert.strictEqual(date.getTimezoneName(dt), 'CDT'); }, 'Safari 2.0 Mac OS X 10.4': function () { dt.str = 'Sun Sep 17 2006 22:55:01 GMT-0500'; dt.strLocale = 'September 17, 2006 10:55:01 PM CDT'; assert.strictEqual(date.getTimezoneName(dt), 'CDT'); }, 'FF 1.5 Mac OS X 10.4': function () { dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)'; dt.strLocale = 'Sun Sep 17 22:57:18 2006'; assert.strictEqual(date.getTimezoneName(dt), 'CDT'); }, 'Opera 9 Mac OS X 10.4': function () { // no TZ data expect empty string return dt.str = 'Sun, 17 Sep 2006 22:58:06 GMT-0500'; dt.strLocale = 'Sunday September 17, 22:58:06 GMT-0500 2006'; assert.strictEqual(date.getTimezoneName(dt), ''); }, 'IE 6 Windows XP': function () { dt.str = 'Mon Sep 18 11:21:07 CDT 2006'; dt.strLocale = 'Monday, September 18, 2006 11:21:07 AM'; assert.strictEqual(date.getTimezoneName(dt), 'CDT'); }, 'Opera 9 Ubuntu Linux (Breezy)': function () { // no TZ data expect empty string return dt.str = 'Mon, 18 Sep 2006 13:30:32 GMT-0500'; dt.strLocale = 'Monday September 18, 13:30:32 GMT-0500 2006'; assert.strictEqual(date.getTimezoneName(dt), ''); }, 'IE 5.5 Windows 2000': function () { dt.str = 'Mon Sep 18 13:49:22 CDT 2006'; dt.strLocale = 'Monday, September 18, 2006 1:49:22 PM'; assert.strictEqual(date.getTimezoneName(dt), 'CDT'); } }; })(), '.compare': function () { var d1 = new Date(); d1.setHours(0); var d2 = new Date(); d2.setFullYear(2005); d2.setHours(12); assert.strictEqual(date.compare(d1, d1), 0); assert.strictEqual(date.compare(d1, d2, 'date'), 1); assert.strictEqual(date.compare(d2, d1, 'date'), -1); assert.strictEqual(date.compare(d1, d2, 'time'), -1); assert.strictEqual(date.compare(d1, d2, 'datetime'), 1); }, '.add': { 'year': function () { var interval = 'year'; var dateA; var dateB; dateA = new Date(2005, 11, 27); dateB = new Date(2006, 11, 27); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2005, 11, 27); dateB = new Date(2004, 11, 27); assertDateEqual(date.add(dateA, interval, -1), dateB); dateA = new Date(2000, 1, 29); dateB = new Date(2001, 1, 28); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2000, 1, 29); dateB = new Date(2005, 1, 28); assertDateEqual(date.add(dateA, interval, 5), dateB); dateA = new Date(1900, 11, 31); dateB = new Date(1930, 11, 31); assertDateEqual(date.add(dateA, interval, 30), dateB); dateA = new Date(1995, 11, 31); dateB = new Date(2030, 11, 31); assertDateEqual(date.add(dateA, interval, 35), dateB); }, 'quarter': function () { var interval = 'quarter'; var dateA; var dateB; dateA = new Date(2000, 0, 1); dateB = new Date(2000, 3, 1); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2000, 1, 29); dateB = new Date(2000, 7, 29); assertDateEqual(date.add(dateA, interval, 2), dateB); dateA = new Date(2000, 1, 29); dateB = new Date(2001, 1, 28); assertDateEqual(date.add(dateA, interval, 4), dateB); }, 'month': function () { var interval = 'month'; var dateA; var dateB; dateA = new Date(2000, 0, 1); dateB = new Date(2000, 1, 1); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2000, 0, 31); dateB = new Date(2000, 1, 29); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2000, 1, 29); dateB = new Date(2001, 1, 28); assertDateEqual(date.add(dateA, interval, 12), dateB); }, 'week': function () { var interval = 'week'; var dateA; var dateB; dateA = new Date(2000, 0, 1); dateB = new Date(2000, 0, 8); assertDateEqual(date.add(dateA, interval, 1), dateB); }, 'day': function () { var interval = 'day'; var dateA; var dateB; dateA = new Date(2000, 0, 1); dateB = new Date(2000, 0, 2); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2001, 0, 1); dateB = new Date(2002, 0, 1); assertDateEqual(date.add(dateA, interval, 365), dateB); dateA = new Date(2000, 0, 1); dateB = new Date(2001, 0, 1); assertDateEqual(date.add(dateA, interval, 366), dateB); dateA = new Date(2000, 1, 28); dateB = new Date(2000, 1, 29); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2001, 1, 28); dateB = new Date(2001, 2, 1); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2000, 2, 1); dateB = new Date(2000, 1, 29); assertDateEqual(date.add(dateA, interval, -1), dateB); dateA = new Date(2001, 2, 1); dateB = new Date(2001, 1, 28); assertDateEqual(date.add(dateA, interval, -1), dateB); dateA = new Date(2000, 0, 1); dateB = new Date(1999, 11, 31); assertDateEqual(date.add(dateA, interval, -1), dateB); }, 'weekday': function () { var interval = 'weekday'; var dateA; var dateB; // Sat, Jan 1 dateA = new Date(2000, 0, 1); // Should be Mon, Jan 3 dateB = new Date(2000, 0, 3); assertDateEqual(date.add(dateA, interval, 1), dateB); // Sun, Jan 2 dateA = new Date(2000, 0, 2); // Should be Mon, Jan 3 dateB = new Date(2000, 0, 3); assertDateEqual(date.add(dateA, interval, 1), dateB); // Sun, Jan 2 dateA = new Date(2000, 0, 2); // Should be Fri, Jan 7 dateB = new Date(2000, 0, 7); assertDateEqual(date.add(dateA, interval, 5), dateB); // Sun, Jan 2 dateA = new Date(2000, 0, 2); // Should be Mon, Jan 10 dateB = new Date(2000, 0, 10); assertDateEqual(date.add(dateA, interval, 6), dateB); // Mon, Jan 3 dateA = new Date(2000, 0, 3); // Should be Mon, Jan 17 dateB = new Date(2000, 0, 17); assertDateEqual(date.add(dateA, interval, 10), dateB); // Sat, Jan 8 dateA = new Date(2000, 0, 8); // Should be Mon, Jan 3 dateB = new Date(2000, 0, 3); assertDateEqual(date.add(dateA, interval, -5), dateB); // Sun, Jan 9 dateA = new Date(2000, 0, 9); // Should be Wed, Jan 5 dateB = new Date(2000, 0, 5); assertDateEqual(date.add(dateA, interval, -3), dateB); // Sun, Jan 23 dateA = new Date(2000, 0, 23); // Should be Fri, Jan 7 dateB = new Date(2000, 0, 7); assertDateEqual(date.add(dateA, interval, -11), dateB); }, 'hour': function () { var interval = 'hour'; var dateA; var dateB; dateA = new Date(2000, 0, 1, 11); dateB = new Date(2000, 0, 1, 12); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2001, 9, 28, 0); dateB = new Date(dateA.getTime() + (60 * 60 * 1000)); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2001, 9, 28, 23); dateB = new Date(2001, 9, 29, 0); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2001, 11, 31, 23); dateB = new Date(2002, 0, 1, 0); assertDateEqual(date.add(dateA, interval, 1), dateB); }, 'minute': function () { var interval = 'minute'; var dateA; var dateB; dateA = new Date(2000, 11, 31, 23, 59); dateB = new Date(2001, 0, 1, 0, 0); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2000, 11, 27, 12, 2); dateB = new Date(2000, 11, 27, 13, 2); assertDateEqual(date.add(dateA, interval, 60), dateB); }, 'second': function () { var interval = 'second'; var dateA; var dateB; dateA = new Date(2000, 11, 31, 23, 59, 59); dateB = new Date(2001, 0, 1, 0, 0, 0); assertDateEqual(date.add(dateA, interval, 1), dateB); dateA = new Date(2000, 11, 27, 8, 10, 59); dateB = new Date(2000, 11, 27, 8, 11, 59); assertDateEqual(date.add(dateA, interval, 60), dateB); } }, '.difference': { 'year': function () { var interval = 'year'; var dateA; var dateB; dateA = new Date(2005, 11, 27); dateB = new Date(2006, 11, 27); assert.strictEqual(date.difference(dateA, dateB, interval), 1); dateA = new Date(2000, 11, 31); dateB = new Date(2001, 0, 1); assert.strictEqual(date.difference(dateA, dateB, interval), 1); }, 'quarter': function () { var interval = 'quarter'; var dateA; var dateB; dateA = new Date(2000, 1, 29); dateB = new Date(2001, 2, 1); assert.strictEqual(date.difference(dateA, dateB, interval), 4); dateA = new Date(2000, 11, 1); dateB = new Date(2001, 0, 1); assert.strictEqual(date.difference(dateA, dateB, interval), 1); }, 'month': function () { var interval = 'month'; var dateA; var dateB; dateA = new Date(2000, 1, 29); dateB = new Date(2001, 2, 1); assert.strictEqual(date.difference(dateA, dateB, interval), 13); dateA = new Date(2000, 11, 1); dateB = new Date(2001, 0, 1); assert.strictEqual(date.difference(dateA, dateB, interval), 1); }, 'week': function () { var interval = 'week'; var dateA; var dateB; dateA = new Date(2000, 1, 1); dateB = new Date(2000, 1, 8); assert.strictEqual(date.difference(dateA, dateB, interval), 1); dateA = new Date(2000, 1, 28); dateB = new Date(2000, 2, 6); assert.strictEqual(date.difference(dateA, dateB, interval), 1); dateA = new Date(2000, 2, 6); dateB = new Date(2000, 1, 28); assert.strictEqual(date.difference(dateA, dateB, interval), -1); }, 'day': function () { var interval = 'day'; var dateA; var dateB; dateA = new Date(2000, 1, 29); dateB = new Date(2000, 2, 1); assert.strictEqual(date.difference(dateA, dateB, interval), 1); dateA = new Date(2000, 11, 31); dateB = new Date(2001, 0, 1); assert.strictEqual(date.difference(dateA, dateB, interval), 1); // DST leap -- check for rounding err // This is dependent on US calendar, but // shouldn't break in other locales dateA = new Date(2005, 3, 3); dateB = new Date(2005, 3, 4); assert.strictEqual(date.difference(dateA, dateB, interval), 1); }, 'weekday': function () { var interval = 'weekday'; var dateA; var dateB; dateA = new Date(2006, 7, 3); dateB = new Date(2006, 7, 11); assert.strictEqual(date.difference(dateA, dateB, interval), 6); // Positive diffs dateA = new Date(2006, 7, 4); dateB = new Date(2006, 7, 11); assert.strictEqual(date.difference(dateA, dateB, interval), 5); dateA = new Date(2006, 7, 5); dateB = new Date(2006, 7, 11); assert.strictEqual(date.difference(dateA, dateB, interval), 5); dateA = new Date(2006, 7, 6); dateB = new Date(2006, 7, 11); assert.strictEqual(date.difference(dateA, dateB, interval), 5); dateA = new Date(2006, 7, 7); dateB = new Date(2006, 7, 11); assert.strictEqual(date.difference(dateA, dateB, interval), 4); dateA = new Date(2006, 7, 7); dateB = new Date(2006, 7, 13); assert.strictEqual(date.difference(dateA, dateB, interval), 4); dateA = new Date(2006, 7, 7); dateB = new Date(2006, 7, 14); assert.strictEqual(date.difference(dateA, dateB, interval), 5); dateA = new Date(2006, 7, 7); dateB = new Date(2006, 7, 15); assert.strictEqual(date.difference(dateA, dateB, interval), 6); dateA = new Date(2006, 7, 7); dateB = new Date(2006, 7, 28); assert.strictEqual(date.difference(dateA, dateB, interval), 15); dateA = new Date(2006, 2, 2); dateB = new Date(2006, 2, 28); assert.strictEqual(date.difference(dateA, dateB, interval), 18); // Negative diffs dateA = new Date(2006, 7, 11); dateB = new Date(2006, 7, 4); assert.strictEqual(date.difference(dateA, dateB, interval), -5); dateA = new Date(2006, 7, 11); dateB = new Date(2006, 7, 5); assert.strictEqual(date.difference(dateA, dateB, interval), -4); dateA = new Date(2006, 7, 11); dateB = new Date(2006, 7, 6); assert.strictEqual(date.difference(dateA, dateB, interval), -4); dateA = new Date(2006, 7, 11); dateB = new Date(2006, 7, 7); assert.strictEqual(date.difference(dateA, dateB, interval), -4); dateA = new Date(2006, 7, 13); dateB = new Date(2006, 7, 7); assert.strictEqual(date.difference(dateA, dateB, interval), -5); dateA = new Date(2006, 7, 14); dateB = new Date(2006, 7, 7); assert.strictEqual(date.difference(dateA, dateB, interval), -5); dateA = new Date(2006, 7, 15); dateB = new Date(2006, 7, 7); assert.strictEqual(date.difference(dateA, dateB, interval), -6); dateA = new Date(2006, 7, 28); dateB = new Date(2006, 7, 7); assert.strictEqual(date.difference(dateA, dateB, interval), -15); dateA = new Date(2006, 2, 28); dateB = new Date(2006, 2, 2); assert.strictEqual(date.difference(dateA, dateB, interval), -18); // Sat, Jan 8 // Range starts on a Saturday with negative days dateA = new Date(2000, 0, 8); dateB = new Date(2000, 0, 3); assert.strictEqual(date.difference(dateA, dateB, interval), -5); // Two days on the same weekend -- no weekday diff dateA = new Date(2006, 7, 5); dateB = new Date(2006, 7, 6); assert.strictEqual(date.difference(dateA, dateB, interval), 0); }, 'hour': function () { var interval = 'hour'; var dateA; var dateB; dateA = new Date(2000, 11, 31, 23); dateB = new Date(2001, 0, 1, 0); assert.strictEqual(date.difference(dateA, dateB, interval), 1); dateA = new Date(2000, 11, 31, 12); dateB = new Date(2001, 0, 1, 0); assert.strictEqual(date.difference(dateA, dateB, interval), 12); }, 'minute': function () { var interval = 'minute'; var dateA; var dateB; dateA = new Date(2000, 11, 31, 23, 59); dateB = new Date(2001, 0, 1, 0, 0); assert.strictEqual(date.difference(dateA, dateB, interval), 1); dateA = new Date(2000, 1, 28, 23, 59); dateB = new Date(2000, 1, 29, 0, 0); assert.strictEqual(date.difference(dateA, dateB, interval), 1); }, 'second': function () { var interval = 'second'; var dateA; var dateB; dateA = new Date(2000, 11, 31, 23, 59, 59); dateB = new Date(2001, 0, 1, 0, 0, 0); assert.strictEqual(date.difference(dateA, dateB, interval), 1); }, 'millisecond': function () { var interval = 'millisecond'; var dateA; var dateB; dateA = new Date(2000, 11, 31, 23, 59, 59, 999); dateB = new Date(2001, 0, 1, 0, 0, 0, 0); assert.strictEqual(date.difference(dateA, dateB, interval), 1); dateA = new Date(2000, 11, 31, 23, 59, 59, 0); dateB = new Date(2001, 0, 1, 0, 0, 0, 0); assert.strictEqual(date.difference(dateA, dateB, interval), 1000); } } }); });