tempusjs
Version:
Easy and fast datetime library.
540 lines (493 loc) • 30 kB
JavaScript
(function() {
function isLeapYear(year) {
if (year % 4 == 0) {
if (year % 100 == 0) {
return year % 400 == 0;
} else return true;
}
return false;
}
// prepare for tests
var today = new Date(); // current day
var dd = today.getDate(); // day. Begin from 1.
var mm = today.getMonth()+1; // month. Begin from 0.
var yyyy = today.getFullYear();
var day, month, year, hours, minutes, seconds;
tempus.lang('en');
// *************************************************
// * *
// * BASE *
// * *
// *************************************************
test('Tests dayCount()', function() {
equal(tempus([2013, 11, 18]).dayCount(), 30, 'November');
equal(tempus([2012, 2]).dayCount(), 29, 'February leap year');
equal(tempus([2013, 2]).dayCount(), 28, 'February not leap year');
equal(tempus([2013, 1]).dayCount(), 31, 'January');
});
test('Test year() method', function () {
// values
equal(tempus().year(), new Date().getFullYear(), 'Test value: Current');
equal(tempus().year(2000).year(), 2000, 'Test value: 2000');
equal(tempus().year(1000).year(), 1000, 'Test value: 1000');
equal(tempus().year(3000).year(), 3000, 'Test value: 3000');
equal(tempus().year(undefined).year(), tempus.MIN_YEAR, 'Test value: undefined');
equal(tempus().year(1).year(), 1, 'Test value: 1');
equal(tempus().year(-15).year(), -15, 'Test value: -15');
equal(tempus().year('0').year(), 0, 'Test value: \'0\'');
equal(tempus().year({foo: 'bar'}).year(), tempus.MIN_YEAR, 'Test value: {foo: \'bar\'}');
equal(tempus().year([1,2,3]).year(), tempus.MIN_YEAR, 'Test value: [1,2,3]');
equal(tempus().year(null).year(), tempus.MIN_YEAR, 'Test value: null');
equal(tempus().year(true).year(), tempus.MIN_YEAR, 'Test value: true');
equal(tempus().year(false).year(), tempus.MIN_YEAR, 'Test value: false');
equal(tempus().year(NaN).year(), tempus.MIN_YEAR, 'Test value: false');
// check types
equal(typeof tempus().year(2000).year(), 'number', 'Type is number');
});
test('Test month() method', function () {
// values
equal(tempus().month(), new Date().getMonth() + 1, 'Test value: Current');
equal(tempus().month(100).month(), 100, 'Test value: 100');
equal(tempus().month(12).month(), 12, 'Test value: 12');
equal(tempus().month(1).month(), 1, 'Test value: 12');
equal(tempus().month(-5).month(), -5, 'Test value: -5');
equal(tempus().month('0').month(), 0, 'Test value: \'0\'');
equal(tempus().month(undefined).month(), tempus.MIN_MONTH, 'Test value: undefined');
equal(tempus().month({foo: 'bar'}).month(), tempus.MIN_MONTH, 'Test value: {foo: \'bar\'}');
equal(tempus().month([1,2,3]).month(), tempus.MIN_MONTH, 'Test value: [1,2,3]');
equal(tempus().month(null).month(), tempus.MIN_MONTH, 'Test value: null');
equal(tempus().month(true).month(), tempus.MIN_MONTH, 'Test value: true');
equal(tempus().month(false).month(), tempus.MIN_MONTH, 'Test value: false');
equal(tempus().month(NaN).month(), tempus.MIN_MONTH, 'Test value: false');
// check types
equal(typeof tempus().month(1).month(), 'number', 'Type is number');
});
test('Test day() method', function () {
// values
equal(tempus().day(), new Date().getDate(), 'Test value: Current');
equal(tempus().day(100).day(), 100, 'Test value: 100');
equal(tempus().day(12).day(), 12, 'Test value: 12');
equal(tempus().day(-5).day(), -5, 'Test value: -5');
equal(tempus().day('0').day(), 0, 'Test value: \'0\'');
equal(tempus().day({foo: 'bar'}).day(), tempus.MIN_DAY, 'Test value: {foo: \'bar\'}');
equal(tempus().day([1,2,3]).day(), tempus.MIN_DAY, 'Test value: [1,2,3]');
equal(tempus().day(undefined).day(), tempus.MIN_DAY, 'Test value: undefined');
equal(tempus().day(null).day(), tempus.MIN_DAY, 'Test value: null');
equal(tempus().day(true).day(), tempus.MIN_DAY, 'Test value: true');
equal(tempus().day(false).day(), tempus.MIN_DAY, 'Test value: false');
equal(tempus().day(NaN).day(), tempus.MIN_DAY, 'Test value: false');
// check types
equal(typeof tempus().day(1).day(), 'number', 'Type is number');
});
test('Test hours() method', function () {
// values
equal(tempus().hours(), new Date().getHours(), 'Test value: Current');
equal(tempus().hours(100).hours(), 100, 'Test value: 100');
equal(tempus().hours(12).hours(), 12, 'Test value: 12');
equal(tempus().hours(-5).hours(), -5, 'Test value: -5');
equal(tempus().hours('0').hours(), 0, 'Test value: \'0\'');
equal(tempus().hours({foo: 'bar'}).hours(), tempus.MIN_HOURS, 'Test value: {foo: \'bar\'}');
equal(tempus().hours([1,2,3]).hours(), tempus.MIN_HOURS, 'Test value: [1,2,3]');
equal(tempus().hours(undefined).hours(), tempus.MIN_HOURS, 'Test value: undefined');
equal(tempus().hours(null).hours(), tempus.MIN_HOURS, 'Test value: null');
equal(tempus().hours(true).hours(), tempus.MIN_HOURS, 'Test value: true');
equal(tempus().hours(false).hours(), tempus.MIN_HOURS, 'Test value: false');
equal(tempus().hours(NaN).hours(), tempus.MIN_HOURS, 'Test value: false');
// check types
equal(typeof tempus().hours(1).hours(), 'number', 'Type is number');
});
test('Test minutes() method', function () {
// values
equal(tempus().minutes(), new Date().getMinutes(), 'Test value: Current');
equal(tempus().minutes(100).minutes(), 100, 'Test value: 100');
equal(tempus().minutes(12).minutes(), 12, 'Test value: 12');
equal(tempus().minutes(-5).minutes(), -5, 'Test value: -5');
equal(tempus().minutes('0').minutes(), 0, 'Test value: \'0\'');
equal(tempus().minutes({foo: 'bar'}).minutes(), tempus.MIN_MINUTES, 'Test value: {foo: \'bar\'}');
equal(tempus().minutes([1,2,3]).minutes(), tempus.MIN_MINUTES, 'Test value: [1,2,3]');
equal(tempus().minutes(undefined).minutes(), tempus.MIN_MINUTES, 'Test value: undefined');
equal(tempus().minutes(null).minutes(), tempus.MIN_MINUTES, 'Test value: null');
equal(tempus().minutes(true).minutes(), tempus.MIN_MINUTES, 'Test value: true');
equal(tempus().minutes(false).minutes(), tempus.MIN_MINUTES, 'Test value: false');
equal(tempus().minutes(NaN).minutes(), tempus.MIN_MINUTES, 'Test value: false');
// check types
equal(typeof tempus().minutes(1).minutes(), 'number', 'Type is number');
});
test('Test seconds() method', function () {
// values
equal(tempus().seconds(), new Date().getSeconds(), 'Test value: Current');
equal(tempus().seconds(100).seconds(), 100, 'Test value: 100');
equal(tempus().seconds(12).seconds(), 12, 'Test value: 12');
equal(tempus().seconds(-5).seconds(), -5, 'Test value: -5');
equal(tempus().seconds('0').seconds(), 0, 'Test value: \'0\'');
equal(tempus().seconds({foo: 'bar'}).seconds(), tempus.MIN_SECONDS, 'Test value: {foo: \'bar\'}');
equal(tempus().seconds([1,2,3]).seconds(), tempus.MIN_SECONDS, 'Test value: [1,2,3]');
equal(tempus().seconds(undefined).seconds(), tempus.MIN_SECONDS, 'Test value: undefined');
equal(tempus().seconds(null).seconds(), tempus.MIN_SECONDS, 'Test value: null');
equal(tempus().seconds(true).seconds(), tempus.MIN_SECONDS, 'Test value: true');
equal(tempus().seconds(false).seconds(), tempus.MIN_SECONDS, 'Test value: false');
equal(tempus().seconds(NaN).seconds(), tempus.MIN_SECONDS, 'Test value: false');
// check types
equal(typeof tempus().seconds(1).seconds(), 'number', 'Type is number');
});
test('Test timestamp() method', function () {
equal(tempus([2013, 11, 18]).timestamp(), 1384732800, 'Test');
equal(tempus().timestamp(1384718400).timestamp(), 1384718400, 'Test');
});
test('Test utc() method', function () {
equal(tempus([2013, 11, 18]).utc()*1000, new Date(2013, 10, 18).getTime(), 'Test');
equal(tempus({year: 2013, month: 11, day: 18}).utc()*1000, new Date(2013, 10, 18).getTime(), 'Test');
equal(tempus().utc(1384732800).utc(), 1384732800, 'Test');
equal(tempus(1384732800).utc(), 1384732800, 'Test');
});
test('Test dayOfWeek() method', function () {
equal(tempus().dayOfWeek(), new Date().getDay(), 'Test');
equal(tempus([2013, 11, 18]).dayOfWeek(), new Date(2013, 10, 18).getDay(), 'Test');
equal(tempus([2013, 11, 21]).dayOfWeek('Sunday').format('%Y-%m-%d'), '2013-11-17', 'Test setter');
equal(tempus([2013, 11, 21]).dayOfWeek('Friday').format('%Y-%m-%d'), '2013-11-22', 'Test setter');
});
test('Test timezone() method', function () {
equal(tempus().timezone(), new Date().getTimezoneOffset()*60, 'Test');
equal(tempus().timezone('minutes'), new Date().getTimezoneOffset(), 'Test');
equal(tempus().timezone('hours'), new Date().getTimezoneOffset()/60, 'Test');
});
test('Tests get() method', function() {
equal(tempus().get().year, new Date().getFullYear(), 'Test');
equal(tempus().get().month, new Date().getMonth()+1, 'Test');
equal(tempus().get().day, new Date().getDate(), 'Test');
equal(tempus().get().hours, new Date().getHours(), 'Test');
equal(tempus().get().minutes, new Date().getMinutes(), 'Test');
equal(tempus().get().seconds, new Date().getSeconds(), 'Test');
deepEqual(tempus([2014,1,1,12,0,0]).get('Array'), [2014,1,1,12,0,0,0], 'Test');
equal(Math.floor(tempus().get('Date').getTime()/1000), Math.floor(new Date().getTime()/1000), 'Test');
equal(Math.floor(tempus().get('DateUTC').getTime()/1000), Math.floor(new Date().getTime()/1000) - new Date().getTimezoneOffset()*60, 'Test');
});
test('Tests leapYear() method', function () {
equal(tempus().leapYear(), isLeapYear(yyyy), 'Current year is leap or not leap');
equal(tempus([2013]).leapYear(), false, '2013 is not leap year');
equal(tempus([2012]).leapYear(), true, '2012 is leap year');
equal(tempus([2000]).leapYear(), true, '2000 is leap year');
equal(tempus([1900]).leapYear(), false, '1900 is not leap year');
equal(tempus([1904]).leapYear(), true, '1904 is leap year');
equal(tempus([1905]).leapYear(), false, '1905 is not leap year');
equal(tempus({year: 1941, day: 22, month: 6}).leapYear(), false, '1941 is not leap year');
equal(tempus({year: 2008, day: 1, month: 1}).leapYear(), true, '2008 is not leap year');
equal(typeof tempus().leapYear(), 'boolean', 'Type is boolean');
for (var year = 1800; year <= yyyy; year++) {
equal(tempus().year(year).leapYear(), isLeapYear(year), 'Dynamic test. Year: ' + year);
}
});
test('Test instances', function() {
var resultTest1 = function() {
var a = tempus({year: 2013, month: 5, day: 5, hours: 12, minutes: 41, seconds: 36});
return a.format('%Y-%m-%d %H:%M:%S');
};
var resultTest2 = function() {
var a = tempus({year: 2013, month: 5, day: 5, hours: 12, minutes: 41, seconds: 36});
var b = tempus();
return a.format('%Y-%m-%d %H:%M:%S');
};
equal(resultTest1(), '2013-05-05 12:41:36', 'Test 1');
equal(resultTest2(), '2013-05-05 12:41:36', 'Test 2');
});
test('Tests valid()', function () {
equal(tempus({day:32,month:12,year:2013,hours:0,minutes:0,seconds:0}).valid(), false, 'valid');
equal(tempus({day:20,month:3,year:2013,hours:-1,minutes:0,seconds:0}).valid(), false, 'valid');
equal(tempus({day:1,month:1,year:2013,hours:0,minutes:0,seconds:0}).valid(), true, 'valid');
equal(tempus('2013-03-12', '%Y-%m-%d').valid(), true, 'valid');
equal(tempus('16:00 08.08.2013', '%H:%M %d.%m.%Y').valid(), true, 'valid');
equal(tempus('32.08.2013', '%d.%m.%Y').valid(), false, 'valid');
equal(tempus('29.02.2013', '%d.%m.%Y').valid(), false, 'valid');
equal(tempus('29.02.2012', '%d.%m.%Y').valid(), true, 'valid');
equal(tempus('24:61 29.02.2012', '%H:%M %d.%m.%Y').valid(), false, 'valid');
equal(tempus('00:00 01.01.2012', '%H:%M %d.%m.%Y').valid(), true, 'valid');
equal(typeof tempus({day:32,month:12,year:2013,hours:0,minutes:0,seconds:0}).valid(), 'boolean', 'Type is boolean');
});
test('Tests errors()', function () {
deepEqual(tempus().year(-5).errors(),
{"year":-5,"month":false,"day":false,"hours":false,"minutes":false,"seconds":false,"milliseconds":false}, 'Get errors');
});
test('Tests between()', function () {
equal(tempus({year: 2013, month: 11, day: 1}).between(tempus({year: 2013, month: 11, day: 5}), 'day'), 4, 'test');
equal(tempus([2013, 11, 1]).between(tempus([2014, 5, 5]), 'month'), 6, 'test');
equal(tempus({year: 2013, month: 11, day: 1}).between(tempus({year: 2014, month: 5, day: 5}), 'minutes'), 266400, 'test');
equal(tempus({year: 2013, month: 11, day: 1}).between(tempus({year: 2015, month: 1, day: 1}), 'hours'), 10224, 'test');
});
// *************************************************
// * *
// * SET *
// * *
// *************************************************
test('Tests set() method', function() {
equal(tempus().set().utc(), Math.floor(new Date().valueOf()/1000),
'This test may be not completed and it be right, because here checking two NOW dates');
equal(tempus().set({year: 2013, month: 1, day: 15}).utc()*1000, new Date(2013, 0, 15).valueOf(),
'Checking constructor with some object value');
equal(tempus().set([2000, 6, 1, 12, 1, 15]).utc()*1000, new Date(2000, 5, 1, 12, 1, 15).valueOf(),
'Checking constructor with array value');
equal(tempus().set('2001-05-10 05:30:00').utc()*1000, new Date(2001, 4, 10, 5, 30, 0).valueOf(),
'Checking constructor with string value');
equal(tempus().set(989454600).utc(), 989454600,
'Checking constructor with numeric value');
});
test('Test now date', function () {
// check current date/time
equal(tempus().utc(), Math.floor(new Date().getTime() / 1000), 'Current UTC');
equal(tempus().year(), new Date().getFullYear(), 'Full year');
equal(tempus().month(), new Date().getMonth() + 1, 'Month');
equal(tempus().day(), new Date().getDate(), 'Day');
equal(tempus().hours(), new Date().getHours(), 'Hours');
equal(tempus().minutes(), new Date().getMinutes(), 'Minutes');
equal(tempus().seconds(), new Date().getSeconds(), 'Seconds');
equal(tempus().dayOfWeek(), new Date().getDay(), 'Day of week');
// check types
equal(typeof tempus(), 'object', 'Type is object');
equal(typeof tempus().year(), 'number', 'Type is number');
equal(typeof tempus().month(), 'number', 'Type is number');
equal(typeof tempus().day(), 'number', 'Type is number');
equal(typeof tempus().hours(), 'number', 'Type is number');
equal(typeof tempus().minutes(), 'number', 'Type is number');
equal(typeof tempus().seconds(), 'number', 'Type is number');
equal(typeof tempus().dayOfWeek(), 'number', 'Type is number');
equal(typeof tempus().timestamp(), 'number', 'Type is number');
});
test('Test set() year ranges', function () {
for (year = 1000; year <= 3000; year++) {
equal(tempus({year: year}).year(), year, 'Year can be from 1000 to 3000, else MIN_YEAR. Year: ' + year);
}
for (year = -100; year <= 999; year++) {
equal(tempus({year: year}).year(), year, 'Year can not be 999 or less, else current and set incorrect. Year: ' + year);
}
for (year = 3001; year <= 4000; year++) {
equal(tempus({year: year}).year(), year, 'Year can not be 3001 or more, else current and set incorrect. Year: ' + year);
}
equal(tempus({}).year(), 1000, 'If year is not setted, setting MIN_YEAR');
});
test('Test set() months ranges', function () {
for (month = 1; month <= 12; month++) {
equal(tempus().set({month: month}).month(), month, 'Month can be from 1 to 12. Month: ' + month);
}
for (month = -100; month <= 0; month++) {
equal(tempus().set({month: month}).month(), month, 'Month can not be 0 or less. Month: ' + month);
}
for (month = 13; month <= 100; month++) {
equal(tempus().set({month: month}).month(), month, 'Month can not be 13 or more. Month: ' + month);
}
equal(tempus().set({}).month(), 1, 'If month is not setted, setting MIN_MONTH');
});
test('Test set() day ranges', function () {
// Not leap year check
var dayInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for (month = 1; month <= 12; month++) {
for (day = 1; day <= dayInMonth[month - 1]; day++) {
equal(tempus().set({year: 2001, month: month, day: day}).day(), day, 'Year: 2001. Day can be from 1 to X. Month: ' + month + '. Day:' + day);
}
for (day = -10; day <= 0; day++) {
equal(tempus().set({year: 2001, month: month, day: day}).day(), day, 'Year: 2001. Day can not be 0 or less. Month: ' + month + '. Day:' + day);
}
for (day = dayInMonth[month - 1] + 1; day <= 40; day++) {
equal(tempus().set({year: 2001, month: month, day: day}).day(), day, 'Year: 2001. Day can not be 0 or less. Month: ' + month + '. Day:' + day);
}
}
// leap year check
dayInMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for (month = 1; month <= 12; month++) {
for (day = 1; day <= dayInMonth[month - 1]; day++) {
equal(tempus().set({year: 2012, month: month, day: day}).day(), day, 'Year: 2012. Day can be from 1 to X. Month: ' + month + '. Day:' + day);
}
for (day = -10; day <= 0; day++) {
equal(tempus().set({year: 2012, month: month, day: day}).day(), day, 'Year: 2012. Day can not be 0 or less. Month: ' + month + '. Day:' + day);
}
for (day = dayInMonth[month - 1] + 1; day <= 40; day++) {
equal(tempus().set({year: 2012, month: month, day: day}).day(), day, 'Year: 2012. Day can not be 0 or less. Month: ' + month + '. Day:' + day);
}
}
equal(tempus().set({}).day(), 1, 'If day is not setted, setting MIN_DAY');
});
test('Test set() hours ranges', function () {
for (hours = 0; hours <= 23; hours++) {
equal(tempus().set({hours: hours}).hours(), hours, 'Hours can be from 0 to 23. Hours: ' + hours);
}
for (hours = -100; hours < 0; hours++) {
equal(tempus().set({hours: hours}).hours(), hours, 'Hours can not be 0 or less. Month: ' + hours);
}
for (hours = 24; hours <= 100; hours++) {
equal(tempus().set({hours: hours}).hours(), hours, 'Hours can not be 24 or more. Month: ' + hours);
}
equal(tempus().set({}).hours(), 0, 'If hours is not setted, setting MIN_HOURS');
});
test('Test set() minutes ranges', function () {
for (minutes = 0; minutes <= 59; minutes++) {
equal(tempus().set({minutes: minutes}).minutes(), minutes, 'Minutes can be from 0 to 59. Minutes: ' + minutes);
}
for (minutes = -100; minutes < 0; minutes++) {
equal(tempus().set({minutes: minutes}).minutes(), minutes, 'Minutes can not be 0 or less. Minutes: ' + minutes);
}
for (minutes = 60; minutes <= 100; minutes++) {
equal(tempus().set({minutes: minutes}).minutes(), minutes, 'Minutes can not be 59 or more. Minutes: ' + minutes);
}
equal(tempus().set({}).minutes(), 0, 'If minutes is not setted, setting MIN_MINUTES');
});
test('Test set() seconds ranges', function () {
for (seconds = 0; seconds <= 59; seconds++) {
equal(tempus().set({seconds: seconds}).seconds(), seconds, 'Seconds can be from 0 to 59. Minutes: ' + seconds);
}
for (seconds = -100; seconds < 0; seconds++) {
equal(tempus().set({seconds: seconds}).seconds(), seconds, 'Seconds can not be 0 or less. Minutes: ' + seconds);
}
for (seconds = 60; seconds <= 100; seconds++) {
equal(tempus().set({seconds: seconds}).seconds(), seconds, 'Seconds can not be 59 or more. Minutes: ' + seconds);
}
equal(tempus().set({}).seconds(), 0, 'If seconds is not setted, setting MIN_SECONDS');
});
test('Test calc()', function() {
equal(tempus({year: 2013, month: 6, day: 1}).calc({month: -1}).format('%d.%m.%Y'), '01.05.2013', 'Easy test');
equal(tempus([2011, 5, 2]).calc({year: 1, month: -4, day: -1}).format('%d.%m.%Y'), '01.01.2012', 'Easy test');
});
// *************************************************
// * *
// * LANGS *
// * *
// *************************************************
test('Tests monthNames()', function () {
var anotherLangTest = function(lang) {
var names;
// tempus.loadTranslations('../src/translations.json');
tempus.lang(lang);
names = tempus.monthNames();
tempus.lang();
return names;
};
deepEqual(tempus.monthNames(),
["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],
'Test');
deepEqual(tempus.monthNames('long'),
["January","February","March","April","May","June",
"July","August","September","October","November","December"],
'Test');
deepEqual(anotherLangTest('ru'),
["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
'Test');
deepEqual(anotherLangTest('ua'),
["Січ", "Лют", "Берез", "Квіт", "Трав", "Черв", "Лип", "Серп", "Верес", "Жовт", "Листоп", "Груд"],
'Test');
deepEqual(anotherLangTest('de'),
["Jan", "Feb", "März", "Apr", "Mai", "Juni", "Juli", "Aug", "Sept", "Okt", "Nov", "Dez"],
'Test');
});
// *************************************************
// * *
// * FORMAT *
// * *
// *************************************************
test('Tests format()', function() {
tempus.lang('en');
equal(tempus({year: 2013, month: 11, day:5}).format('%d.%m.%Y'), '05.11.2013', 'Test');
equal(tempus([2013, 11, 18, 12, 36, 42]).format('%Y-%m-%d %H:%M:%S'), '2013-11-18 12:36:42', 'Test');
// all formats
equal(tempus([2013, 11, 5, 12, 15, 32, 108]).format('%Y'), '2013', 'Test');
equal(tempus([2013, 11, 5, 12, 15, 32, 108]).format('%m'), '11', 'Test');
equal(tempus([2013, 11, 5, 12, 15, 32, 108]).format('%d'), '05', 'Test');
equal(tempus([2013, 11, 5, 12, 15, 32, 108]).format('%H'), '12', 'Test');
equal(tempus([2013, 11, 5, 12, 15, 32, 108]).format('%M'), '15', 'Test');
equal(tempus([2013, 11, 5, 12, 15, 32, 108]).format('%S'), '32', 'Test');
equal(tempus([2013, 11, 5, 12, 15, 32, 108]).format('%s'), '1383653732', 'Test');
equal(tempus([2013, 11, 5, 12, 15, 32, 108]).format('%F'), '2013-11-05', 'Test');
equal(tempus("2013-11-30", "%F").format("%F"), '2013-11-30', 'Test');
equal(tempus("11/30/2013", "%D").format("%D"), '11/30/2013', 'Test');
equal(tempus([2013, 11, 5, 12, 15, 32, 108]).format('%D'), '11/05/2013', 'Test');
// months
equal(tempus([2013, 11, 5]).format('%Y%m%d'), '20131105', 'Test');
equal(tempus([2013, 1, 1]).format('%b %B'), 'Jan January', 'Test');
equal(tempus([2013, 2, 1]).format('%b %B'), 'Feb February', 'Test');
equal(tempus([2013, 3, 1]).format('%b %B'), 'Mar March', 'Test');
equal(tempus([2013, 4, 1]).format('%b %B'), 'Apr April', 'Test');
equal(tempus([2013, 5, 1]).format('%b %B'), 'May May', 'Test');
equal(tempus([2013, 6, 1]).format('%b %B'), 'Jun June', 'Test');
equal(tempus([2013, 7, 1]).format('%b %B'), 'Jul July', 'Test');
equal(tempus([2013, 8, 1]).format('%b %B'), 'Aug August', 'Test');
equal(tempus([2013, 9, 1]).format('%b %B'), 'Sep September', 'Test');
equal(tempus([2013, 10, 1]).format('%b %B'), 'Oct October', 'Test');
equal(tempus([2013, 11, 1]).format('%b %B'), 'Nov November', 'Test');
equal(tempus([2013, 12, 1]).format('%b %B'), 'Dec December', 'Test');
// day of week
equal(tempus([2013, 11, 17]).format('%a %A'), 'Sun Sunday', 'Test');
equal(tempus([2013, 11, 18]).format('%a %A'), 'Mon Monday', 'Test');
equal(tempus([2013, 11, 19]).format('%a %A'), 'Tue Tuesday', 'Test');
equal(tempus([2013, 11, 20]).format('%a %A'), 'Wed Wednesday', 'Test');
equal(tempus([2013, 11, 21]).format('%a %A'), 'Thu Thursday', 'Test');
equal(tempus([2013, 11, 22]).format('%a %A'), 'Fri Friday', 'Test');
equal(tempus([2013, 11, 23]).format('%a %A'), 'Sat Saturday', 'Test');
});
test('Tests registerFormat() and unregisterFormat()', function() {
tempus.registerFormat('%q',
function(date) {
return date.month();
},
function(value) {
var v = Number(value);
return {month: (isNaN(v) ? undefined : v) };
},
1,
2,
'number'
);
equal(tempus({year: 2013, month: 1, day: 1}).format('%d.%q.%Y'), "01.1.2013", 'Test');
equal(tempus('10.2.2013', '%d.%q.%Y').month(), 2, 'Test');
tempus.unregisterFormat('%q');
equal(tempus({year: 2013, month: 1, day: 1}).format('%d.%q.%Y'), "01.%q.2013", 'Test');
equal(tempus('10.2.2013', '%d.%q.%Y').month(), -1, 'Test');
});
// *************************************************
// * *
// * FACTORY *
// * *
// *************************************************
test('Tests constructor of TempusDate', function() {
equal(Math.floor(tempus().utc()), Math.floor(new Date().valueOf()/1000),
'This test may be not completed and it be right, because here checking two NOW dates');
equal(tempus({year: 2013, month: 1, day: 15}).utc()*1000, new Date(2013, 0, 15).valueOf(),
'Checking constructor with some object value');
equal(tempus([2000, 6, 1, 12, 1, 15]).utc()*1000, new Date(2000, 5, 1, 12, 1, 15).valueOf(),
'Checking constructor with array value');
equal(tempus('2001-05-10 05:30:00').utc()*1000, new Date(2001, 4, 10, 5, 30, 0).valueOf(),
'Checking constructor with string value');
equal(tempus(989454600).utc(), 989454600,
'Checking constructor with numeric value');
});
test('Tests generator of many TempusDate', function() {
deepEqual(tempus.generate({dateFrom: '01.01.2013',dateTo: '10.01.2013',period: 'day',format: '%d.%m.%Y'}),
["01.01.2013", "02.01.2013", "03.01.2013", "04.01.2013", "05.01.2013",
"06.01.2013", "07.01.2013", "08.01.2013", "09.01.2013", "10.01.2013"],
'Tests simply generation of dates');
deepEqual(tempus.generate({dateFrom: '20130329',formatFrom: '%Y%m%d',dateTo: '20130402',period: {day: 1},format: '%d.%m.%Y'}),
["29.03.2013", "30.03.2013", "31.03.2013", "01.04.2013", "02.04.2013"],
'Tests generation of dates with custom format and period as object');
deepEqual(tempus.generate({
dateFrom: tempus([2014,1]).day(1),
dateTo: tempus([2014, 1]).day(3),
period: {
day:1
},
format: '%d',
groupBy: 'week',
fillNulls: true
}),
[[null,null,null,"01","02","03",null]],
'Tests generation of dates');
deepEqual(tempus.generate({
dateFrom: tempus([2014,2]).day(1),
dateTo: tempus([2014, 2]).day(25),
period: {
day:1
},
format: '%d',
groupBy: 'week',
fillNulls: true
}),
[[null,null,null,null,null,null,"01"],["02","03","04","05","06","07","08"],
["09","10","11","12","13","14","15"],["16","17","18","19","20","21","22"],
["23","24","25",null,null,null,null]],
'Tests generation of dates');
});
})();