1
0
Fork 0
arangodb/js/node/node_modules/moment/min/tests.js

32768 lines
1.6 MiB
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function () {
var global = this,
require = function() { return global.moment; },
exports = global.NPM_TESTS = {};
var moment = require("../../moment");
exports.add = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"add short" : function (test) {
test.expect(16);
var a = moment(), b, c, d;
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(500);
test.equal(a.add({ms: 50}).milliseconds(), 550, 'Add milliseconds');
test.equal(a.add({s: 1}).seconds(), 9, 'Add seconds');
test.equal(a.add({m: 1}).minutes(), 8, 'Add minutes');
test.equal(a.add({h: 1}).hours(), 7, 'Add hours');
test.equal(a.add({d: 1}).date(), 13, 'Add date');
test.equal(a.add({w: 1}).date(), 20, 'Add week');
test.equal(a.add({M: 1}).month(), 10, 'Add month');
test.equal(a.add({y: 1}).year(), 2012, 'Add year');
test.equal(a.add({Q: 1}).month(), 1, 'Add quarter');
b = moment([2010, 0, 31]).add({M: 1});
c = moment([2010, 1, 28]).subtract({M: 1});
d = moment([2010, 1, 28]).subtract({Q: 1});
test.equal(b.month(), 1, 'add month, jan 31st to feb 28th');
test.equal(b.date(), 28, 'add month, jan 31st to feb 28th');
test.equal(c.month(), 0, 'subtract month, feb 28th to jan 28th');
test.equal(c.date(), 28, 'subtract month, feb 28th to jan 28th');
test.equal(d.month(), 10, 'subtract quarter, feb 28th 2010 to nov 28th 2009');
test.equal(d.date(), 28, 'subtract quarter, feb 28th 2010 to nov 28th 2009');
test.equal(d.year(), 2009, 'subtract quarter, feb 28th 2010 to nov 28th 2009');
test.done();
},
"add long" : function (test) {
test.expect(9);
var a = moment();
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(500);
test.equal(a.add({milliseconds: 50}).milliseconds(), 550, 'Add milliseconds');
test.equal(a.add({seconds: 1}).seconds(), 9, 'Add seconds');
test.equal(a.add({minutes: 1}).minutes(), 8, 'Add minutes');
test.equal(a.add({hours: 1}).hours(), 7, 'Add hours');
test.equal(a.add({days: 1}).date(), 13, 'Add date');
test.equal(a.add({weeks: 1}).date(), 20, 'Add week');
test.equal(a.add({months: 1}).month(), 10, 'Add month');
test.equal(a.add({years: 1}).year(), 2012, 'Add year');
test.equal(a.add({quarters: 1}).month(), 1, 'Add quarter');
test.done();
},
"add long singular" : function (test) {
test.expect(9);
var a = moment();
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(500);
test.equal(a.add({millisecond: 50}).milliseconds(), 550, 'Add milliseconds');
test.equal(a.add({second: 1}).seconds(), 9, 'Add seconds');
test.equal(a.add({minute: 1}).minutes(), 8, 'Add minutes');
test.equal(a.add({hour: 1}).hours(), 7, 'Add hours');
test.equal(a.add({day: 1}).date(), 13, 'Add date');
test.equal(a.add({week: 1}).date(), 20, 'Add week');
test.equal(a.add({month: 1}).month(), 10, 'Add month');
test.equal(a.add({year: 1}).year(), 2012, 'Add year');
test.equal(a.add({quarter: 1}).month(), 1, 'Add quarter');
test.done();
},
"add string long" : function (test) {
test.expect(10);
var a = moment(), b;
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(500);
b = a.clone();
test.equal(a.add('millisecond', 50).milliseconds(), 550, 'Add milliseconds');
test.equal(a.add('second', 1).seconds(), 9, 'Add seconds');
test.equal(a.add('minute', 1).minutes(), 8, 'Add minutes');
test.equal(a.add('hour', 1).hours(), 7, 'Add hours');
test.equal(a.add('day', 1).date(), 13, 'Add date');
test.equal(a.add('week', 1).date(), 20, 'Add week');
test.equal(a.add('month', 1).month(), 10, 'Add month');
test.equal(a.add('year', 1).year(), 2012, 'Add year');
test.equal(b.add('day', '01').date(), 13, 'Add date');
test.equal(a.add('quarter', 1).month(), 1, 'Add quarter');
test.done();
},
"add string long singular" : function (test) {
test.expect(10);
var a = moment(), b;
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(500);
b = a.clone();
test.equal(a.add('milliseconds', 50).milliseconds(), 550, 'Add milliseconds');
test.equal(a.add('seconds', 1).seconds(), 9, 'Add seconds');
test.equal(a.add('minutes', 1).minutes(), 8, 'Add minutes');
test.equal(a.add('hours', 1).hours(), 7, 'Add hours');
test.equal(a.add('days', 1).date(), 13, 'Add date');
test.equal(a.add('weeks', 1).date(), 20, 'Add week');
test.equal(a.add('months', 1).month(), 10, 'Add month');
test.equal(a.add('years', 1).year(), 2012, 'Add year');
test.equal(b.add('days', '01').date(), 13, 'Add date');
test.equal(a.add('quarters', 1).month(), 1, 'Add quarter');
test.done();
},
"add string short" : function (test) {
test.expect(9);
var a = moment();
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(500);
test.equal(a.add('ms', 50).milliseconds(), 550, 'Add milliseconds');
test.equal(a.add('s', 1).seconds(), 9, 'Add seconds');
test.equal(a.add('m', 1).minutes(), 8, 'Add minutes');
test.equal(a.add('h', 1).hours(), 7, 'Add hours');
test.equal(a.add('d', 1).date(), 13, 'Add date');
test.equal(a.add('w', 1).date(), 20, 'Add week');
test.equal(a.add('M', 1).month(), 10, 'Add month');
test.equal(a.add('y', 1).year(), 2012, 'Add year');
test.equal(a.add('Q', 1).month(), 1, 'Add quarter');
test.done();
},
"add string long reverse args" : function (test) {
test.expect(9);
var a = moment();
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(500);
test.equal(a.add(50, 'millisecond').milliseconds(), 550, 'Add milliseconds');
test.equal(a.add(1, 'second').seconds(), 9, 'Add seconds');
test.equal(a.add(1, 'minute').minutes(), 8, 'Add minutes');
test.equal(a.add(1, 'hour').hours(), 7, 'Add hours');
test.equal(a.add(1, 'day').date(), 13, 'Add date');
test.equal(a.add(1, 'week').date(), 20, 'Add week');
test.equal(a.add(1, 'month').month(), 10, 'Add month');
test.equal(a.add(1, 'year').year(), 2012, 'Add year');
test.equal(a.add(1, 'quarter').month(), 1, 'Add quarter');
test.done();
},
"add string long singular reverse args" : function (test) {
test.expect(9);
var a = moment();
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(500);
test.equal(a.add(50, 'milliseconds').milliseconds(), 550, 'Add milliseconds');
test.equal(a.add(1, 'seconds').seconds(), 9, 'Add seconds');
test.equal(a.add(1, 'minutes').minutes(), 8, 'Add minutes');
test.equal(a.add(1, 'hours').hours(), 7, 'Add hours');
test.equal(a.add(1, 'days').date(), 13, 'Add date');
test.equal(a.add(1, 'weeks').date(), 20, 'Add week');
test.equal(a.add(1, 'months').month(), 10, 'Add month');
test.equal(a.add(1, 'years').year(), 2012, 'Add year');
test.equal(a.add(1, 'quarters').month(), 1, 'Add quarter');
test.done();
},
"add string short reverse args" : function (test) {
test.expect(9);
var a = moment();
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(500);
test.equal(a.add(50, 'ms').milliseconds(), 550, 'Add milliseconds');
test.equal(a.add(1, 's').seconds(), 9, 'Add seconds');
test.equal(a.add(1, 'm').minutes(), 8, 'Add minutes');
test.equal(a.add(1, 'h').hours(), 7, 'Add hours');
test.equal(a.add(1, 'd').date(), 13, 'Add date');
test.equal(a.add(1, 'w').date(), 20, 'Add week');
test.equal(a.add(1, 'M').month(), 10, 'Add month');
test.equal(a.add(1, 'y').year(), 2012, 'Add year');
test.equal(a.add(1, 'Q').month(), 1, 'Add quarter');
test.done();
},
"add across DST" : function (test) {
// Detect Safari bug and bail. Hours on 13th March 2011 are shifted
// with 1 ahead.
if (new Date(2011, 2, 13, 5, 0, 0).getHours() !== 5) {
test.done();
return;
}
var a = moment(new Date(2011, 2, 12, 5, 0, 0)),
b = moment(new Date(2011, 2, 12, 5, 0, 0)),
c = moment(new Date(2011, 2, 12, 5, 0, 0)),
d = moment(new Date(2011, 2, 12, 5, 0, 0)),
e = moment(new Date(2011, 2, 12, 5, 0, 0));
a.add('days', 1);
b.add('hours', 24);
c.add('months', 1);
e.add('quarter', 1);
test.equal(a.hours(), 5, 'adding days over DST difference should result in the same hour');
if (b.isDST() && !d.isDST()) {
test.equal(b.hours(), 6, 'adding hours over DST difference should result in a different hour');
} else if (!b.isDST() && d.isDST()) {
test.equal(b.hours(), 4, 'adding hours over DST difference should result in a different hour');
} else {
test.equal(b.hours(), 5, 'adding hours over DST difference should result in a same hour if the timezone does not have daylight savings time');
}
test.equal(c.hours(), 5, 'adding months over DST difference should result in the same hour');
test.equal(e.hours(), 5, 'adding quarters over DST difference should result in the same hour');
test.done();
}
};
var moment = require("../../moment");
var getVerifier = function (test) {
return function (input, format, expected, description, asymetrical) {
var m = moment(input, format);
test.equal(m.format('YYYY MM DD'), expected, 'compare: ' + description);
//test round trip
if (!asymetrical) {
test.equal(m.format(format), input, 'round trip: ' + description);
}
};
};
exports.create = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"array" : function (test) {
test.expect(8);
test.ok(moment([2010]).toDate() instanceof Date, "[2010]");
test.ok(moment([2010, 1]).toDate() instanceof Date, "[2010, 1]");
test.ok(moment([2010, 1, 12]).toDate() instanceof Date, "[2010, 1, 12]");
test.ok(moment([2010, 1, 12, 1]).toDate() instanceof Date, "[2010, 1, 12, 1]");
test.ok(moment([2010, 1, 12, 1, 1]).toDate() instanceof Date, "[2010, 1, 12, 1, 1]");
test.ok(moment([2010, 1, 12, 1, 1, 1]).toDate() instanceof Date, "[2010, 1, 12, 1, 1, 1]");
test.ok(moment([2010, 1, 12, 1, 1, 1, 1]).toDate() instanceof Date, "[2010, 1, 12, 1, 1, 1, 1]");
test.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment([2010, 1, 14, 15, 25, 50, 125]), "constructing with array === constructing with new Date()");
test.done();
},
"array copying": function (test) {
var importantArray = [2009, 11];
test.expect(1);
moment(importantArray);
test.deepEqual(importantArray, [2009, 11], "initializer should not mutate the original array");
test.done();
},
"object" : function (test) {
test.expect(10);
test.ok(moment({year: 2010}).toDate() instanceof Date, "{year: 2010}");
test.ok(moment({year: 2010, month: 1}).toDate() instanceof Date, "{year: 2010, month: 1}");
test.ok(moment({year: 2010, month: 1, day: 12}).toDate() instanceof Date, "{year: 2010, month: 1, day: 12}");
test.ok(moment({year: 2010, month: 1, day: 12, hours: 1}).toDate() instanceof Date, "{year: 2010, month: 1, day: 12, hours: 1}");
test.ok(moment({year: 2010, month: 1, day: 12, hours: 1, minutes: 1}).toDate() instanceof Date, "{year: 2010, month: 1, hours: 12, minutes: 1, seconds: 1}");
test.ok(moment({year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1}).toDate() instanceof Date, "{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1}");
test.ok(moment({year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1, milliseconds: 1}).toDate() instanceof Date, "{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1, milliseconds: 1}");
test.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment({years: 2010, months: 1, days: 14, hours: 15, minutes: 25, seconds: 50, milliseconds: 125}), "constructing with object (long plural) === constructing with new Date()");
test.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment({year: 2010, month: 1, day: 14, hour: 15, minute: 25, second: 50, millisecond: 125}), "constructing with object (long) === constructing with new Date()");
test.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment({y: 2010, M: 1, d: 14, h: 15, m: 25, s: 50, ms: 125}), "constructing with object (short) === constructing with new Date()");
test.done();
},
"multi format array copying": function (test) {
var importantArray = ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'];
test.expect(1);
moment('1999-02-13', importantArray);
test.deepEqual(importantArray, ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'], "initializer should not mutate the original array");
test.done();
},
"number" : function (test) {
test.expect(3);
test.ok(moment(1000).toDate() instanceof Date, "1000");
test.ok((moment(1000).valueOf() === 1000), "testing valueOf");
test.ok((moment.utc(1000).valueOf() === 1000), "testing valueOf");
test.done();
},
"unix" : function (test) {
test.expect(8);
test.equal(moment.unix(1).valueOf(), 1000, "1 unix timestamp == 1000 Date.valueOf");
test.equal(moment(1000).unix(), 1, "1000 Date.valueOf == 1 unix timestamp");
test.equal(moment.unix(1000).valueOf(), 1000000, "1000 unix timestamp == 1000000 Date.valueOf");
test.equal(moment(1500).unix(), 1, "1500 Date.valueOf == 1 unix timestamp");
test.equal(moment(1900).unix(), 1, "1900 Date.valueOf == 1 unix timestamp");
test.equal(moment(2100).unix(), 2, "2100 Date.valueOf == 2 unix timestamp");
test.equal(moment(1333129333524).unix(), 1333129333, "1333129333524 Date.valueOf == 1333129333 unix timestamp");
test.equal(moment(1333129333524000).unix(), 1333129333524, "1333129333524000 Date.valueOf == 1333129333524 unix timestamp");
test.done();
},
"date" : function (test) {
test.expect(1);
test.ok(moment(new Date()).toDate() instanceof Date, "new Date()");
test.done();
},
"date mutation" : function (test) {
test.expect(1);
var a = new Date();
test.ok(moment(a).toDate() !== a, "the date moment uses should not be the date passed in");
test.done();
},
"moment" : function (test) {
test.expect(2);
test.ok(moment(moment()).toDate() instanceof Date, "moment(moment())");
test.ok(moment(moment(moment())).toDate() instanceof Date, "moment(moment(moment()))");
test.done();
},
"cloning moment should only copy own properties" : function (test) {
test.expect(2);
test.ok(!moment().clone().hasOwnProperty('month'), "Should not clone prototype methods");
test.ok(!moment().clone().hasOwnProperty('_lang'), "Should not clone prototype objects");
test.done();
},
"cloning moment works with weird clones" : function (test) {
var extend = function (a, b) {
var i;
for (i in b) {
a[i] = b[i];
}
return a;
},
now = moment(),
nowu = moment.utc();
test.expect(2);
test.equal(+extend({}, now).clone(), +now, "cloning extend-ed now is now");
test.equal(+extend({}, nowu).clone(), +nowu, "cloning extend-ed utc now is utc now");
test.done();
},
"undefined" : function (test) {
test.expect(1);
test.ok(moment().toDate() instanceof Date, "undefined");
test.done();
},
"string without format - json" : function (test) {
test.expect(5);
test.equal(moment("Date(1325132654000)").valueOf(), 1325132654000, "Date(1325132654000)");
test.equal(moment("Date(-1325132654000)").valueOf(), -1325132654000, "Date(-1325132654000)");
test.equal(moment("/Date(1325132654000)/").valueOf(), 1325132654000, "/Date(1325132654000)/");
test.equal(moment("/Date(1325132654000+0700)/").valueOf(), 1325132654000, "/Date(1325132654000+0700)/");
test.equal(moment("/Date(1325132654000-0700)/").valueOf(), 1325132654000, "/Date(1325132654000-0700)/");
test.done();
},
"string with format dropped am/pm bug" : function (test) {
moment.lang('en');
test.expect(6);
test.equal(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens');
test.equal(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens');
test.equal(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens');
test.ok(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').isValid());
test.ok(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').isValid());
test.ok(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').isValid());
test.done();
},
"empty string with formats" : function (test) {
test.expect(8);
test.equal(moment('', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
test.equal(moment(' ', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
test.equal(moment(' ', 'DD').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
test.equal(moment(' ', ['MM', "DD"]).format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
test.ok(!moment('', 'MM').isValid());
test.ok(!moment(' ', 'MM').isValid());
test.ok(!moment(' ', 'DD').isValid());
test.ok(!moment(' ', ['MM', "DD"]).isValid());
test.done();
},
"defaulting to current date" : function (test) {
test.expect(4);
var now = moment();
test.equal(moment('12:13:14', 'hh:mm:ss').format('YYYY-MM-DD hh:mm:ss'),
now.clone().hour(12).minute(13).second(14).format('YYYY-MM-DD hh:mm:ss'),
'given only time default to current date');
test.equal(moment('05', 'DD').format('YYYY-MM-DD'),
now.clone().date(5).format('YYYY-MM-DD'),
'given day of month default to current month, year');
test.equal(moment('05', 'MM').format('YYYY-MM-DD'),
now.clone().month(4).date(1).format('YYYY-MM-DD'),
'given month default to current year');
test.equal(moment('1996', 'YYYY').format('YYYY-MM-DD'),
now.clone().year(1996).month(0).date(1).format('YYYY-MM-DD'),
'given year do not default');
test.done();
},
"matching am/pm" : function (test) {
test.expect(13);
test.equal(moment('2012-09-03T03:00PM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for PM');
test.equal(moment('2012-09-03T03:00P.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P.M.');
test.equal(moment('2012-09-03T03:00P', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P');
test.equal(moment('2012-09-03T03:00pm', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for pm');
test.equal(moment('2012-09-03T03:00p.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p.m.');
test.equal(moment('2012-09-03T03:00p', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p');
test.equal(moment('2012-09-03T03:00AM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for AM');
test.equal(moment('2012-09-03T03:00A.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A.M.');
test.equal(moment('2012-09-03T03:00A', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A');
test.equal(moment('2012-09-03T03:00am', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for am');
test.equal(moment('2012-09-03T03:00a.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a.m.');
test.equal(moment('2012-09-03T03:00a', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a');
test.equal(moment('5:00p.m.March 4 2012', 'h:mmAMMMM D YYYY').format('YYYY-MM-DDThh:mmA'), '2012-03-04T05:00PM', 'am/pm should parse correctly before month names');
test.done();
},
"string with format" : function (test) {
moment.lang('en');
var a = [
['YYYY-Q', '2014-4'],
['MM-DD-YYYY', '12-02-1999'],
['DD-MM-YYYY', '12-02-1999'],
['DD/MM/YYYY', '12/02/1999'],
['DD_MM_YYYY', '12_02_1999'],
['DD:MM:YYYY', '12:02:1999'],
['D-M-YY', '2-2-99'],
['YY', '99'],
['DDD-YYYY', '300-1999'],
['DD-MM-YYYY h:m:s', '12-02-1999 2:45:10'],
['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 am'],
['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 pm'],
['h:mm a', '12:00 pm'],
['h:mm a', '12:30 pm'],
['h:mm a', '12:00 am'],
['h:mm a', '12:30 am'],
['HH:mm', '12:00'],
['YYYY-MM-DDTHH:mm:ss', '2011-11-11T11:11:11'],
['MM-DD-YYYY [M]', '12-02-1999 M'],
['ddd MMM DD HH:mm:ss YYYY', 'Tue Apr 07 22:52:51 2009'],
['HH:mm:ss', '12:00:00'],
['HH:mm:ss', '12:30:00'],
['HH:mm:ss', '00:00:00'],
['HH:mm:ss S', '00:30:00 1'],
['HH:mm:ss SS', '00:30:00 12'],
['HH:mm:ss SSS', '00:30:00 123'],
['HH:mm:ss S', '00:30:00 7'],
['HH:mm:ss SS', '00:30:00 78'],
['HH:mm:ss SSS', '00:30:00 789'],
['X', '1234567890'],
['LT', '12:30 AM'],
['L', '09/02/1999'],
['l', '9/2/1999'],
['LL', 'September 2 1999'],
['ll', 'Sep 2 1999'],
['LLL', 'September 2 1999 12:30 AM'],
['lll', 'Sep 2 1999 12:30 AM'],
['LLLL', 'Thursday, September 2 1999 12:30 AM'],
['llll', 'Thu, Sep 2 1999 12:30 AM']
],
m,
i;
test.expect(2 * a.length);
for (i = 0; i < a.length; i++) {
m = moment(a[i][1], a[i][0]);
test.ok(m.isValid());
test.equal(m.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"unix timestamp format" : function (test) {
var formats = ['X', 'X.S', 'X.SS', 'X.SSS'], i, format;
test.expect(formats.length * 4);
for (i = 0; i < formats.length; i++) {
format = formats[i];
test.equal(moment('1234567890', format).valueOf(), 1234567890 * 1000, format + " matches timestamp without milliseconds");
test.equal(moment('1234567890.1', format).valueOf(), 1234567890 * 1000 + 100, format + " matches timestamp with deciseconds");
test.equal(moment('1234567890.12', format).valueOf(), 1234567890 * 1000 + 120, format + " matches timestamp with centiseconds");
test.equal(moment('1234567890.123', format).valueOf(), 1234567890 * 1000 + 123, format + " matches timestamp with milliseconds");
}
test.done();
},
"milliseconds format" : function (test) {
test.expect(5);
test.equal(moment('1', 'S').get('ms'), 100, 'deciseconds');
// test.equal(moment('10', 'S', true).isValid(), false, 'deciseconds with two digits');
// test.equal(moment('1', 'SS', true).isValid(), false, 'centiseconds with one digits');
test.equal(moment('12', 'SS').get('ms'), 120, 'centiseconds');
// test.equal(moment('123', 'SS', true).isValid(), false, 'centiseconds with three digits');
test.equal(moment('123', 'SSS').get('ms'), 123, 'milliseconds');
test.equal(moment('1234', 'SSSS').get('ms'), 123, 'milliseconds with SSSS');
test.equal(moment('123456789101112', 'SSSS').get('ms'), 123, 'milliseconds with SSSS');
test.done();
},
"string with format no separators" : function (test) {
moment.lang('en');
var a = [
['MMDDYYYY', '12021999'],
['DDMMYYYY', '12021999'],
['YYYYMMDD', '19991202'],
['DDMMMYYYY', '10Sep2001']
], i;
test.expect(a.length);
for (i = 0; i < a.length; i++) {
test.equal(moment(a[i][1], a[i][0]).format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"string with format (timezone)" : function (test) {
test.expect(8);
test.equal(moment('5 -0700', 'H ZZ').toDate().getUTCHours(), 12, 'parse hours "5 -0700" ---> "H ZZ"');
test.equal(moment('5 -07:00', 'H Z').toDate().getUTCHours(), 12, 'parse hours "5 -07:00" ---> "H Z"');
test.equal(moment('5 -0730', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours "5 -0730" ---> "H ZZ"');
test.equal(moment('5 -07:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours "5 -07:0" ---> "H Z"');
test.equal(moment('5 +0100', 'H ZZ').toDate().getUTCHours(), 4, 'parse hours "5 +0100" ---> "H ZZ"');
test.equal(moment('5 +01:00', 'H Z').toDate().getUTCHours(), 4, 'parse hours "5 +01:00" ---> "H Z"');
test.equal(moment('5 +0130', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours "5 +0130" ---> "H ZZ"');
test.equal(moment('5 +01:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours "5 +01:30" ---> "H Z"');
test.done();
},
"string with format (timezone offset)" : function (test) {
var a, b, c, d, e, f;
test.expect(4);
a = new Date(Date.UTC(2011, 0, 1, 1));
b = moment('2011 1 1 0 -01:00', 'YYYY MM DD HH Z');
test.equal(a.getHours(), b.hours(), 'date created with utc == parsed string with timezone offset');
test.equal(+a, +b, 'date created with utc == parsed string with timezone offset');
c = moment('2011 2 1 10 -05:00', 'YYYY MM DD HH Z');
d = moment('2011 2 1 8 -07:00', 'YYYY MM DD HH Z');
test.equal(c.hours(), d.hours(), '10 am central time == 8 am pacific time');
e = moment.utc('Fri, 20 Jul 2012 17:15:00', 'ddd, DD MMM YYYY HH:mm:ss');
f = moment.utc('Fri, 20 Jul 2012 10:15:00 -0700', 'ddd, DD MMM YYYY HH:mm:ss ZZ');
test.equal(e.hours(), f.hours(), 'parse timezone offset in utc');
test.done();
},
"string with array of formats" : function (test) {
test.equal(moment('11-02-1999', ['MM-DD-YYYY', 'DD-MM-YYYY']).format('MM DD YYYY'), '11 02 1999', 'switching month and day');
test.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last');
test.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first');
test.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year last');
test.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year first');
test.equal(moment('02-11-1999', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last');
test.equal(moment('1999-02-11', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first');
test.equal(moment('13-11-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'second must be month');
test.equal(moment('11-13-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'first must be month');
test.equal(moment('01-02-2000', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, month first format');
test.equal(moment('02-01-2000', ['DD/MM/YYYY', 'MM/DD/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, day first format');
test.equal(moment('11-02-10', ['MM/DD/YY', 'YY MM DD', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'all unparsed substrings have influence on format penalty');
test.equal(moment('11-02-10', ['MM-DD-YY HH:mm', 'YY MM DD']).format('MM DD YYYY'), '02 10 2011', 'prefer formats without extra tokens');
test.equal(moment('11-02-10 junk', ['MM-DD-YY', 'YY.MM.DD junk']).format('MM DD YYYY'), '02 10 2011', 'prefer formats that dont result in extra characters');
test.equal(moment('11-22-10', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), '10 22 2011', 'prefer valid results');
test.equal(moment('gibberish', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), 'Invalid date', 'doest throw for invalid strings');
test.equal(moment('gibberish', []).format('MM DD YYYY'), 'Invalid date', 'doest throw for an empty array');
//https://github.com/moment/moment/issues/1143
test.equal(moment(
"System Administrator and Database Assistant (7/1/2011), System Administrator and Database Assistant (7/1/2011), Database Coordinator (7/1/2011), Vice President (7/1/2011), System Administrator and Database Assistant (5/31/2012), Database Coordinator (7/1/2012), System Administrator and Database Assistant (7/1/2013)",
["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD", "YYYY-MM-DDTHH:mm:ssZ"])
.format('YYYY-MM-DD'), '2011-07-01', 'Works for long strings');
test.equal(moment('11-02-10', ['MM.DD.YY', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'escape RegExp special characters on comparing');
test.equal(moment('13-10-98', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YY', 'use two digit year');
test.equal(moment('13-10-1998', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YYYY', 'use four digit year');
test.equal(moment('01', ["MM", "DD"])._f, "MM", "Should use first valid format");
test.done();
},
"string with format - years" : function (test) {
test.expect(4);
test.equal(moment('67', 'YY').format('YYYY'), '2067', '67 > 2067');
test.equal(moment('68', 'YY').format('YYYY'), '2068', '68 > 2068');
test.equal(moment('69', 'YY').format('YYYY'), '1969', '69 > 1969');
test.equal(moment('70', 'YY').format('YYYY'), '1970', '70 > 1970');
test.done();
},
"implicit cloning" : function (test) {
test.expect(2);
var momentA = moment([2011, 10, 10]),
momentB = moment(momentA);
momentA.month(5);
test.equal(momentB.month(), 10, "Calling moment() on a moment will create a clone");
test.equal(momentA.month(), 5, "Calling moment() on a moment will create a clone");
test.done();
},
"explicit cloning" : function (test) {
test.expect(2);
var momentA = moment([2011, 10, 10]),
momentB = momentA.clone();
momentA.month(5);
test.equal(momentB.month(), 10, "Calling moment() on a moment will create a clone");
test.equal(momentA.month(), 5, "Calling moment() on a moment will create a clone");
test.done();
},
"cloning carrying over utc mode" : function (test) {
test.expect(8);
test.equal(moment().local().clone()._isUTC, false, "An explicit cloned local moment should have _isUTC == false");
test.equal(moment().utc().clone()._isUTC, true, "An cloned utc moment should have _isUTC == true");
test.equal(moment().clone()._isUTC, false, "An explicit cloned local moment should have _isUTC == false");
test.equal(moment.utc().clone()._isUTC, true, "An explicit cloned utc moment should have _isUTC == true");
test.equal(moment(moment().local())._isUTC, false, "An implicit cloned local moment should have _isUTC == false");
test.equal(moment(moment().utc())._isUTC, true, "An implicit cloned utc moment should have _isUTC == true");
test.equal(moment(moment())._isUTC, false, "An implicit cloned local moment should have _isUTC == false");
test.equal(moment(moment.utc())._isUTC, true, "An implicit cloned utc moment should have _isUTC == true");
test.done();
},
"parsing iso" : function (test) {
var offset = moment([2011, 9, 08]).zone(),
pad = function (input) {
if (input < 10) {
return '0' + input;
}
return '' + input;
},
hourOffset = (offset > 0) ? Math.floor(offset / 60) : Math.ceil(offset / 60),
minOffset = offset - (hourOffset * 60),
tz = (offset > 0) ? '-' + pad(hourOffset) + ':' + pad(minOffset) : '+' + pad(-hourOffset) + ':' + pad(-minOffset),
tz2 = tz.replace(':', ''),
tz3 = tz2.slice(0, 3),
formats = [
['2011-10-08', '2011-10-08T00:00:00.000' + tz],
['2011-10-08T18', '2011-10-08T18:00:00.000' + tz],
['2011-10-08T18:04', '2011-10-08T18:04:00.000' + tz],
['2011-10-08T18:04:20', '2011-10-08T18:04:20.000' + tz],
['2011-10-08T18:04' + tz, '2011-10-08T18:04:00.000' + tz],
['2011-10-08T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
['2011-10-08T18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
['2011-10-08T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
['2011-10-08T18:04' + tz3, '2011-10-08T18:04:00.000' + tz],
['2011-10-08T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz],
['2011-10-08T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
['2011-10-08T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
['2011-10-08 18', '2011-10-08T18:00:00.000' + tz],
['2011-10-08 18:04', '2011-10-08T18:04:00.000' + tz],
['2011-10-08 18:04:20', '2011-10-08T18:04:20.000' + tz],
['2011-10-08 18:04' + tz, '2011-10-08T18:04:00.000' + tz],
['2011-10-08 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
['2011-10-08 18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
['2011-10-08 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
['2011-10-08 18:04' + tz3, '2011-10-08T18:04:00.000' + tz],
['2011-10-08 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz],
['2011-10-08 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
['2011-10-08 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
['2011-W40', '2011-10-03T00:00:00.000' + tz],
['2011-W40-6', '2011-10-08T00:00:00.000' + tz],
['2011-W40-6T18', '2011-10-08T18:00:00.000' + tz],
['2011-W40-6T18:04', '2011-10-08T18:04:00.000' + tz],
['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000' + tz],
['2011-W40-6T18:04' + tz, '2011-10-08T18:04:00.000' + tz],
['2011-W40-6T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
['2011-W40-6T18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
['2011-W40-6T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
['2011-W40-6T18:04' + tz3, '2011-10-08T18:04:00.000' + tz],
['2011-W40-6T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz],
['2011-W40-6T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
['2011-W40-6T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
['2011-W40-6T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
['2011-W40-6 18', '2011-10-08T18:00:00.000' + tz],
['2011-W40-6 18:04', '2011-10-08T18:04:00.000' + tz],
['2011-W40-6 18:04:20', '2011-10-08T18:04:20.000' + tz],
['2011-W40-6 18:04' + tz, '2011-10-08T18:04:00.000' + tz],
['2011-W40-6 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
['2011-W40-6 18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
['2011-W40-6 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
['2011-W40-6 18:04' + tz3, '2011-10-08T18:04:00.000' + tz],
['2011-W40-6 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz],
['2011-W40-6 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
['2011-W40-6 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
['2011-W40-6 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
['2011-281', '2011-10-08T00:00:00.000' + tz],
['2011-281T18', '2011-10-08T18:00:00.000' + tz],
['2011-281T18:04', '2011-10-08T18:04:00.000' + tz],
['2011-281T18:04:20', '2011-10-08T18:04:20.000' + tz],
['2011-281T18:04' + tz, '2011-10-08T18:04:00.000' + tz],
['2011-281T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
['2011-281T18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
['2011-281T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
['2011-281T18:04' + tz3, '2011-10-08T18:04:00.000' + tz],
['2011-281T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz],
['2011-281T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
['2011-281T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
['2011-281T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
['2011-281 18', '2011-10-08T18:00:00.000' + tz],
['2011-281 18:04', '2011-10-08T18:04:00.000' + tz],
['2011-281 18:04:20', '2011-10-08T18:04:20.000' + tz],
['2011-281 18:04' + tz, '2011-10-08T18:04:00.000' + tz],
['2011-281 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
['2011-281 18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
['2011-281 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
['2011-281 18:04' + tz3, '2011-10-08T18:04:00.000' + tz],
['2011-281 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz],
['2011-281 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
['2011-281 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
['2011-281 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz]
], i;
test.expect(formats.length);
for (i = 0; i < formats.length; i++) {
test.equal(moment(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], "moment should be able to parse ISO " + formats[i][0]);
}
test.done();
},
"parsing ISO with Z" : function (test) {
var i, mom, formats = [
['2011-10-08T18:04', '2011-10-08T18:04:00.000'],
['2011-10-08T18:04:20', '2011-10-08T18:04:20.000'],
['2011-10-08T18:04:20.1', '2011-10-08T18:04:20.100'],
['2011-10-08T18:04:20.11', '2011-10-08T18:04:20.110'],
['2011-10-08T18:04:20.111', '2011-10-08T18:04:20.111'],
['2011-W40-6T18', '2011-10-08T18:00:00.000'],
['2011-W40-6T18:04', '2011-10-08T18:04:00.000'],
['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000'],
['2011-W40-6T18:04:20.1', '2011-10-08T18:04:20.100'],
['2011-W40-6T18:04:20.11', '2011-10-08T18:04:20.110'],
['2011-W40-6T18:04:20.111', '2011-10-08T18:04:20.111'],
['2011-281T18', '2011-10-08T18:00:00.000'],
['2011-281T18:04', '2011-10-08T18:04:00.000'],
['2011-281T18:04:20', '2011-10-08T18:04:20.000'],
['2011-281T18:04:20', '2011-10-08T18:04:20.000'],
['2011-281T18:04:20.1', '2011-10-08T18:04:20.100'],
['2011-281T18:04:20.11', '2011-10-08T18:04:20.110'],
['2011-281T18:04:20.111', '2011-10-08T18:04:20.111']
];
for (i = 0; i < formats.length; i++) {
mom = moment(formats[i][0] + 'Z').utc();
test.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], "moment should be able to parse ISO in UTC " + formats[i][0] + 'Z');
mom = moment(formats[i][0] + ' Z').utc();
test.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], "moment should be able to parse ISO in UTC " + formats[i][0] + ' Z');
}
test.done();
},
"parsing iso with T" : function (test) {
test.expect(8);
test.equal(moment('2011-10-08T18')._f, "YYYY-MM-DDTHH", "should include 'T' in the format");
test.equal(moment('2011-10-08T18:20')._f, "YYYY-MM-DDTHH:mm", "should include 'T' in the format");
test.equal(moment('2011-10-08T18:20:13')._f, "YYYY-MM-DDTHH:mm:ss", "should include 'T' in the format");
test.equal(moment('2011-10-08T18:20:13.321')._f, "YYYY-MM-DDTHH:mm:ss.SSSS", "should include 'T' in the format");
test.equal(moment('2011-10-08 18')._f, "YYYY-MM-DD HH", "should not include 'T' in the format");
test.equal(moment('2011-10-08 18:20')._f, "YYYY-MM-DD HH:mm", "should not include 'T' in the format");
test.equal(moment('2011-10-08 18:20:13')._f, "YYYY-MM-DD HH:mm:ss", "should not include 'T' in the format");
test.equal(moment('2011-10-08 18:20:13.321')._f, "YYYY-MM-DD HH:mm:ss.SSSS", "should not include 'T' in the format");
test.done();
},
"parsing iso Z timezone" : function (test) {
var i,
formats = [
['2011-10-08T18:04Z', '2011-10-08T18:04:00.000+00:00'],
['2011-10-08T18:04:20Z', '2011-10-08T18:04:20.000+00:00'],
['2011-10-08T18:04:20.111Z', '2011-10-08T18:04:20.111+00:00']
];
test.expect(formats.length);
for (i = 0; i < formats.length; i++) {
test.equal(moment.utc(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], "moment should be able to parse ISO " + formats[i][0]);
}
test.done();
},
"parsing iso Z timezone into local" : function (test) {
test.expect(1);
var m = moment('2011-10-08T18:04:20.111Z');
test.equal(m.utc().format('YYYY-MM-DDTHH:mm:ss.SSS'), '2011-10-08T18:04:20.111', "moment should be able to parse ISO 2011-10-08T18:04:20.111Z");
test.done();
},
"parsing iso with more subsecond precision digits" : function (test) {
test.equal(moment.utc("2013-07-31T22:00:00.0000000Z").format(),
"2013-07-31T22:00:00+00:00", "more than 3 subsecond digits");
test.done();
},
"null or empty" : function (test) {
test.expect(8);
test.equal(moment('').isValid(), false, "moment('') is not valid");
test.equal(moment(null).isValid(), false, "moment(null) is not valid");
test.equal(moment(null, 'YYYY-MM-DD').isValid(), false, "moment('', 'format') is not valid");
test.equal(moment('', 'YYYY-MM-DD').isValid(), false, "moment('', 'format') is not valid");
test.equal(moment.utc('').isValid(), false, "moment.utc('') is not valid");
test.equal(moment.utc(null).isValid(), false, "moment.utc(null) is not valid");
test.equal(moment.utc(null, 'YYYY-MM-DD').isValid(), false, "moment.utc(null) is not valid");
test.equal(moment.utc('', 'YYYY-MM-DD').isValid(), false, "moment.utc('', 'YYYY-MM-DD') is not valid");
test.done();
},
"first century" : function (test) {
test.expect(9);
test.equal(moment([0, 0, 1]).format("YYYY-MM-DD"), "0000-01-01", "Year AD 0");
test.equal(moment([99, 0, 1]).format("YYYY-MM-DD"), "0099-01-01", "Year AD 99");
test.equal(moment([999, 0, 1]).format("YYYY-MM-DD"), "0999-01-01", "Year AD 999");
test.equal(moment('0 1 1', 'YYYY MM DD').format("YYYY-MM-DD"), "0000-01-01", "Year AD 0");
test.equal(moment('99 1 1', 'YYYY MM DD').format("YYYY-MM-DD"), "0099-01-01", "Year AD 99");
test.equal(moment('999 1 1', 'YYYY MM DD').format("YYYY-MM-DD"), "0999-01-01", "Year AD 999");
test.equal(moment('0 1 1', 'YYYYY MM DD').format("YYYYY-MM-DD"), "00000-01-01", "Year AD 0");
test.equal(moment('99 1 1', 'YYYYY MM DD').format("YYYYY-MM-DD"), "00099-01-01", "Year AD 99");
test.equal(moment('999 1 1', 'YYYYY MM DD').format("YYYYY-MM-DD"), "00999-01-01", "Year AD 999");
test.done();
},
"six digit years" : function (test) {
test.expect(8);
test.equal(moment([-270000, 0, 1]).format("YYYYY-MM-DD"), "-270000-01-01", "format BC 270,001");
test.equal(moment([ 270000, 0, 1]).format("YYYYY-MM-DD"), "270000-01-01", "format AD 270,000");
test.equal(moment("-270000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), -270000, "parse BC 270,001");
test.equal(moment("270000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), 270000, "parse AD 270,000");
test.equal(moment("+270000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), 270000, "parse AD +270,000");
test.equal(moment.utc("-270000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), -270000, "parse utc BC 270,001");
test.equal(moment.utc("270000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), 270000, "parse utc AD 270,000");
test.equal(moment.utc("+270000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), 270000, "parse utc AD +270,000");
test.done();
},
"negative four digit years" : function (test) {
test.expect(2);
test.equal(moment("-1000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), -1000, "parse BC 1,001");
test.equal(moment.utc("-1000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), -1000, "parse utc BC 1,001");
test.done();
},
"strict parsing" : function (test) {
test.equal(moment("2014-", "YYYY-Q", true).isValid(), false, "fail missing quarter");
test.equal(moment("2012-05", "YYYY-MM", true).format("YYYY-MM"), "2012-05", "parse correct string");
test.equal(moment(" 2012-05", "YYYY-MM", true).isValid(), false, "fail on extra whitespace");
test.equal(moment("foo 2012-05", "[foo] YYYY-MM", true).format('YYYY-MM'), "2012-05", "handle fixed text");
test.equal(moment("2012 05", "YYYY-MM", true).isValid(), false, "fail on different separator");
test.equal(moment("2012 05", "YYYY MM DD", true).isValid(), false, "fail on too many tokens");
test.equal(moment("05 30 2010", ["DD MM YYYY", "MM DD YYYY"], true).format("MM DD YYYY"), "05 30 2010", "array with bad date");
test.equal(moment("05 30 2010", ["", "MM DD YYYY"], true).format("MM DD YYYY"), "05 30 2010", "array with invalid format");
test.equal(moment("05 30 2010", [" DD MM YYYY", "MM DD YYYY"], true).format("MM DD YYYY"), "05 30 2010", "array with non-matching format");
test.equal(moment("2010.*...", "YYYY.*", true).isValid(), false, "invalid format with regex chars");
test.equal(moment("2010.*", "YYYY.*", true).year(), 2010, "valid format with regex chars");
test.equal(moment(".*2010.*", ".*YYYY.*", true).year(), 2010, "valid format with regex chars on both sides");
//strict tokens
test.equal(moment("-5-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid negative year");
test.equal(moment("2-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid one-digit year");
test.equal(moment("20-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid two-digit year");
test.equal(moment("201-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid three-digit year");
test.equal(moment("2010-05-25", 'YYYY-MM-DD', true).isValid(), true, "valid four-digit year");
test.equal(moment("22010-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid five-digit year");
test.equal(moment("12-05-25", 'YY-MM-DD', true).isValid(), true, "valid two-digit year");
test.equal(moment("2012-05-25", 'YY-MM-DD', true).isValid(), false, "invalid four-digit year");
test.equal(moment("-5-05-25", 'Y-MM-DD', true).isValid(), true, "valid negative year");
test.equal(moment("2-05-25", 'Y-MM-DD', true).isValid(), true, "valid one-digit year");
test.equal(moment("20-05-25", 'Y-MM-DD', true).isValid(), true, "valid two-digit year");
test.equal(moment("201-05-25", 'Y-MM-DD', true).isValid(), true, "valid three-digit year");
test.equal(moment("2012-5-25", 'YYYY-M-DD', true).isValid(), true, "valid one-digit month");
test.equal(moment("2012-5-25", 'YYYY-MM-DD', true).isValid(), false, "invalid one-digit month");
test.equal(moment("2012-05-25", 'YYYY-M-DD', true).isValid(), true, "valid one-digit month");
test.equal(moment("2012-05-25", 'YYYY-MM-DD', true).isValid(), true, "valid one-digit month");
test.equal(moment("2012-05-2", 'YYYY-MM-D', true).isValid(), true, "valid one-digit day");
test.equal(moment("2012-05-2", 'YYYY-MM-DD', true).isValid(), false, "invalid one-digit day");
test.equal(moment("2012-05-02", 'YYYY-MM-D', true).isValid(), true, "valid two-digit day");
test.equal(moment("2012-05-02", 'YYYY-MM-DD', true).isValid(), true, "valid two-digit day");
test.equal(moment("+002012-05-25", 'YYYYY-MM-DD', true).isValid(), true, "valid six-digit year");
test.equal(moment("+2012-05-25", 'YYYYY-MM-DD', true).isValid(), false, "invalid four-digit year");
//thse are kinda pointless, but they should work as expected
test.equal(moment("1", 'S', true).isValid(), true, "valid one-digit milisecond");
test.equal(moment("12", 'S', true).isValid(), false, "invalid two-digit milisecond");
test.equal(moment("123", 'S', true).isValid(), false, "invalid three-digit milisecond");
test.equal(moment("1", 'SS', true).isValid(), false, "invalid one-digit milisecond");
test.equal(moment("12", 'SS', true).isValid(), true, "valid two-digit milisecond");
test.equal(moment("123", 'SS', true).isValid(), false, "invalid three-digit milisecond");
test.equal(moment("1", 'SSS', true).isValid(), false, "invalid one-digit milisecond");
test.equal(moment("12", 'SSS', true).isValid(), false, "invalid two-digit milisecond");
test.equal(moment("123", 'SSS', true).isValid(), true, "valid three-digit milisecond");
test.done();
},
"parsing into a language" : function (test) {
test.expect(2);
moment.lang('parselang', {
months : "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split('_'),
monthsShort : "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split("_")
});
moment.lang('en');
test.equal(moment('2012 seven', 'YYYY MMM', 'parselang').month(), 6, "should be able to parse in a specific language");
moment.lang('parselang');
test.equal(moment('2012 july', 'YYYY MMM', 'en').month(), 6, "should be able to parse in a specific language");
moment.lang('parselang', null);
test.done();
},
"parsing week and weekday information" : function (test) {
var ver = getVerifier(test);
//year
ver('12', 'gg', "2012 01 01", 'week-year two digits');
ver('2012', 'gggg', "2012 01 01", 'week-year four digits');
ver('99', 'gg', "1998 12 27", 'week-year two digits previous year');
ver('1999', 'gggg', "1998 12 27", 'week-year four digits previous year');
ver('99', 'GG', "1999 01 04", 'iso week-year two digits');
ver('1999', 'GGGG', "1999 01 04", 'iso week-year four digits');
ver('13', 'GG', "2012 12 31", 'iso week-year two digits previous year');
ver('2013', 'GGGG', "2012 12 31", 'iso week-year four digits previous year');
//yer + week
ver('1999 37', 'gggg w', "1999 09 05", 'week');
ver('1999 37', 'gggg ww', "1999 09 05", 'week double');
ver('1999 37', 'GGGG W', "1999 09 13", 'iso week');
ver('1999 37', 'GGGG WW', "1999 09 13", 'iso week double');
ver('1999 37 4', 'GGGG WW E', "1999 09 16", 'iso day');
ver('1999 37 04', 'GGGG WW E', "1999 09 16", 'iso day wide', true);
ver('1999 37 4', 'gggg ww e', "1999 09 09", 'day');
ver('1999 37 04', 'gggg ww e', "1999 09 09", 'day wide', true);
//yer + week + day
ver('1999 37 4', 'gggg ww d', "1999 09 09", 'd');
ver('1999 37 Th', 'gggg ww dd', "1999 09 09", 'dd');
ver('1999 37 Thu', 'gggg ww ddd', "1999 09 09", 'ddd');
ver('1999 37 Thursday', 'gggg ww dddd', "1999 09 09", 'dddd');
//lower-order only
test.equal(moment('22', 'ww').week(), 22, "week sets the week by itself");
test.equal(moment('22', 'ww').weekYear(), moment().weekYear(), "week keeps this year");
test.equal(moment('2012 22', 'YYYY ww').weekYear(), 2012, "week keeps parsed year");
test.equal(moment('22', 'WW').isoWeek(), 22, "iso week sets the week by itself");
test.equal(moment('2012 22', 'YYYY WW').weekYear(), 2012, "iso week keeps parsed year");
test.equal(moment('22', 'WW').weekYear(), moment().weekYear(), "iso week keeps this year");
//order
ver('6 2013 2', 'e gggg w', "2013 01 12", "order doesn't matter");
ver('6 2013 2', 'E GGGG W', "2013 01 12", "iso order doesn't matter");
//can parse other stuff too
test.equal(moment('1999-W37-4 3:30', 'GGGG-[W]WW-E HH:mm').format('YYYY MM DD HH:mm'), '1999 09 16 03:30', "parsing weeks and hours");
// In safari, all years before 1300 are shifted back with one day.
// http://stackoverflow.com/questions/20768975/safari-subtracts-1-day-from-dates-before-1300
if (new Date("1300-01-01").getUTCFullYear() === 1300) {
// Years less than 100
ver('0098-06', 'GGGG-WW', "0098 02 03", "small years work", true);
}
test.done();
},
'parsing localized weekdays' : function (test) {
var ver = getVerifier(test);
try {
moment.lang('fr'); //french uses doy = 4, dow = 1
ver('1999 37 4', 'GGGG WW E', "1999 09 16", 'iso ignores language');
ver('1999 37 7', 'GGGG WW E', "1999 09 19", 'iso ignores language');
ver('1999 37 0', 'gggg ww e', "1999 09 13", 'localized e uses local doy and dow: 0 = monday');
ver('1999 37 4', 'gggg ww e', "1999 09 17", 'localized e uses local doy and dow: 4 = friday');
ver('1999 37 1', 'gggg ww d', "1999 09 13", 'localized d uses 0-indexed days: 1 = monday');
ver('1999 37 Lu', 'gggg ww dd', "1999 09 13", 'localized d uses 0-indexed days: Mo');
ver('1999 37 lun.', 'gggg ww ddd', "1999 09 13", 'localized d uses 0-indexed days: Mon');
ver('1999 37 lundi', 'gggg ww dddd', "1999 09 13", 'localized d uses 0-indexed days: Monday');
ver('1999 37 4', 'gggg ww d', "1999 09 16", 'localized d uses 0-indexed days: 4');
//sunday goes at the end of the week
ver('1999 37 0', 'gggg ww d', "1999 09 19", 'localized d uses 0-indexed days: 0 = sund');
ver('1999 37 Di', 'gggg ww dd', "1999 09 19", 'localized d uses 0-indexed days: 0 = sund');
}
finally {
moment.lang('en');
test.done();
}
},
'parsing with customized two-digit year' : function (test) {
var original = moment.parseTwoDigitYear;
try {
test.equal(moment('68', 'YY').year(), 2068);
test.equal(moment('69', 'YY').year(), 1969);
moment.parseTwoDigitYear = function (input) {
return +input + (+input > 30 ? 1900 : 2000);
};
test.equal(moment('68', 'YY').year(), 1968);
test.equal(moment('67', 'YY').year(), 1967);
test.equal(moment('31', 'YY').year(), 1931);
test.equal(moment('30', 'YY').year(), 2030);
}
finally {
moment.parseTwoDigitYear = original;
test.done();
}
}
};
var moment = require("../../moment");
exports.daysInMonth = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"days in month" : function (test) {
test.expect(24);
var months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], i;
for (i = 0; i < 12; i++) {
test.equal(moment([2012, i]).daysInMonth(),
months[i],
moment([2012, i]).format('L') + " should have " + months[i] + " days. (beginning of month " + i + ')');
}
for (i = 0; i < 12; i++) {
test.equal(moment([2012, i, months[i]]).daysInMonth(),
months[i],
moment([2012, i, months[i]]).format('L') + " should have " + months[i] + " days. (end of month " + i + ')');
}
test.done();
},
"days in month leap years" : function (test) {
test.expect(4);
test.equal(moment([2010, 1]).daysInMonth(), 28, "Feb 2010 should have 28 days");
test.equal(moment([2100, 1]).daysInMonth(), 28, "Feb 2100 should have 28 days");
test.equal(moment([2008, 1]).daysInMonth(), 29, "Feb 2008 should have 29 days");
test.equal(moment([2000, 1]).daysInMonth(), 29, "Feb 2000 should have 29 days");
test.done();
}
};
var moment = require("../../moment");
function equal(test, a, b, message) {
test.ok(Math.abs(a - b) < 0.00000001, "(" + a + " === " + b + ") " + message);
}
function dstForYear(year) {
var start = moment([year]),
end = moment([year + 1]),
current = start.clone(),
last;
while (current < end) {
last = current.clone();
current.add(24, 'hour');
if (last.zone() !== current.zone()) {
end = current.clone();
current = last.clone();
break;
}
}
while (current < end) {
last = current.clone();
current.add(1, 'hour');
if (last.zone() !== current.zone()) {
return {
moment : last,
diff : (current.zone() - last.zone()) / 60
};
}
}
}
exports.diff = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"diff" : function (test) {
test.expect(5);
test.equal(moment(1000).diff(0), 1000, "1 second - 0 = 1000");
test.equal(moment(1000).diff(500), 500, "1 second - 0.5 seconds = 500");
test.equal(moment(0).diff(1000), -1000, "0 - 1 second = -1000");
test.equal(moment(new Date(1000)).diff(1000), 0, "1 second - 1 second = 0");
var oneHourDate = new Date(),
nowDate = new Date(+oneHourDate);
oneHourDate.setHours(oneHourDate.getHours() + 1);
test.equal(moment(oneHourDate).diff(nowDate), 60 * 60 * 1000, "1 hour from now = 3600000");
test.done();
},
"diff key after" : function (test) {
test.expect(10);
test.equal(moment([2010]).diff([2011], 'years'), -1, "year diff");
test.equal(moment([2010]).diff([2010, 2], 'months'), -2, "month diff");
test.equal(moment([2010]).diff([2010, 0, 7], 'weeks'), 0, "week diff");
test.equal(moment([2010]).diff([2010, 0, 8], 'weeks'), -1, "week diff");
test.equal(moment([2010]).diff([2010, 0, 21], 'weeks'), -2, "week diff");
test.equal(moment([2010]).diff([2010, 0, 22], 'weeks'), -3, "week diff");
test.equal(moment([2010]).diff([2010, 0, 4], 'days'), -3, "day diff");
test.equal(moment([2010]).diff([2010, 0, 1, 4], 'hours'), -4, "hour diff");
test.equal(moment([2010]).diff([2010, 0, 1, 0, 5], 'minutes'), -5, "minute diff");
test.equal(moment([2010]).diff([2010, 0, 1, 0, 0, 6], 'seconds'), -6, "second diff");
test.done();
},
"diff key before" : function (test) {
test.expect(10);
test.equal(moment([2011]).diff([2010], 'years'), 1, "year diff");
test.equal(moment([2010, 2]).diff([2010], 'months'), 2, "month diff");
test.equal(moment([2010, 0, 4]).diff([2010], 'days'), 3, "day diff");
test.equal(moment([2010, 0, 7]).diff([2010], 'weeks'), 0, "week diff");
test.equal(moment([2010, 0, 8]).diff([2010], 'weeks'), 1, "week diff");
test.equal(moment([2010, 0, 21]).diff([2010], 'weeks'), 2, "week diff");
test.equal(moment([2010, 0, 22]).diff([2010], 'weeks'), 3, "week diff");
test.equal(moment([2010, 0, 1, 4]).diff([2010], 'hours'), 4, "hour diff");
test.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minutes'), 5, "minute diff");
test.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'seconds'), 6, "second diff");
test.done();
},
"diff key before singular" : function (test) {
test.expect(10);
test.equal(moment([2011]).diff([2010], 'year'), 1, "year diff singular");
test.equal(moment([2010, 2]).diff([2010], 'month'), 2, "month diff singular");
test.equal(moment([2010, 0, 4]).diff([2010], 'day'), 3, "day diff singular");
test.equal(moment([2010, 0, 7]).diff([2010], 'week'), 0, "week diff singular");
test.equal(moment([2010, 0, 8]).diff([2010], 'week'), 1, "week diff singular");
test.equal(moment([2010, 0, 21]).diff([2010], 'week'), 2, "week diff singular");
test.equal(moment([2010, 0, 22]).diff([2010], 'week'), 3, "week diff singular");
test.equal(moment([2010, 0, 1, 4]).diff([2010], 'hour'), 4, "hour diff singular");
test.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minute'), 5, "minute diff singular");
test.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'second'), 6, "second diff singular");
test.done();
},
"diff key before abbreviated" : function (test) {
test.expect(10);
test.equal(moment([2011]).diff([2010], 'y'), 1, "year diff abbreviated");
test.equal(moment([2010, 2]).diff([2010], 'M'), 2, "month diff abbreviated");
test.equal(moment([2010, 0, 4]).diff([2010], 'd'), 3, "day diff abbreviated");
test.equal(moment([2010, 0, 7]).diff([2010], 'w'), 0, "week diff abbreviated");
test.equal(moment([2010, 0, 8]).diff([2010], 'w'), 1, "week diff abbreviated");
test.equal(moment([2010, 0, 21]).diff([2010], 'w'), 2, "week diff abbreviated");
test.equal(moment([2010, 0, 22]).diff([2010], 'w'), 3, "week diff abbreviated");
test.equal(moment([2010, 0, 1, 4]).diff([2010], 'h'), 4, "hour diff abbreviated");
test.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'm'), 5, "minute diff abbreviated");
test.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 's'), 6, "second diff abbreviated");
test.done();
},
"diff month" : function (test) {
test.expect(1);
test.equal(moment([2011, 0, 31]).diff([2011, 2, 1], 'months'), -1, "month diff");
test.done();
},
"diff across DST" : function (test) {
var dst = dstForYear(2012), a, b, daysInMonth;
if (!dst) {
test.done();
return;
}
test.expect(16);
a = dst.moment;
b = a.clone().utc().add(12, 'hours').local();
daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2;
equal(test, b.diff(a, 'ms', true), 12 * 60 * 60 * 1000, "ms diff across DST");
equal(test, b.diff(a, 's', true), 12 * 60 * 60, "second diff across DST");
equal(test, b.diff(a, 'm', true), 12 * 60, "minute diff across DST");
equal(test, b.diff(a, 'h', true), 12, "hour diff across DST");
equal(test, b.diff(a, 'd', true), (12 - dst.diff) / 24, "day diff across DST");
equal(test, b.diff(a, 'w', true), (12 - dst.diff) / 24 / 7, "week diff across DST");
equal(test, b.diff(a, 'M', true), (12 - dst.diff) / 24 / daysInMonth, "month diff across DST");
equal(test, b.diff(a, 'y', true), (12 - dst.diff) / 24 / daysInMonth / 12, "year diff across DST");
a = dst.moment;
b = a.clone().utc().add(12 + dst.diff, 'hours').local();
daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2;
equal(test, b.diff(a, 'ms', true), (12 + dst.diff) * 60 * 60 * 1000, "ms diff across DST");
equal(test, b.diff(a, 's', true), (12 + dst.diff) * 60 * 60, "second diff across DST");
equal(test, b.diff(a, 'm', true), (12 + dst.diff) * 60, "minute diff across DST");
equal(test, b.diff(a, 'h', true), (12 + dst.diff), "hour diff across DST");
equal(test, b.diff(a, 'd', true), 12 / 24, "day diff across DST");
equal(test, b.diff(a, 'w', true), 12 / 24 / 7, "week diff across DST");
equal(test, b.diff(a, 'M', true), 12 / 24 / daysInMonth, "month diff across DST");
equal(test, b.diff(a, 'y', true), 12 / 24 / daysInMonth / 12, "year diff across DST");
test.done();
},
"diff overflow" : function (test) {
test.expect(4);
test.equal(moment([2011]).diff([2010], 'months'), 12, "month diff");
test.equal(moment([2010, 0, 2]).diff([2010], 'hours'), 24, "hour diff");
test.equal(moment([2010, 0, 1, 2]).diff([2010], 'minutes'), 120, "minute diff");
test.equal(moment([2010, 0, 1, 0, 4]).diff([2010], 'seconds'), 240, "second diff");
test.done();
},
"diff between utc and local" : function (test) {
test.expect(7);
test.equal(moment([2012]).utc().diff([2011], 'years'), 1, "year diff");
test.equal(moment([2010, 2, 2]).utc().diff([2010, 0, 2], 'months'), 2, "month diff");
test.equal(moment([2010, 0, 4]).utc().diff([2010], 'days'), 3, "day diff");
test.equal(moment([2010, 0, 22]).utc().diff([2010], 'weeks'), 3, "week diff");
test.equal(moment([2010, 0, 1, 4]).utc().diff([2010], 'hours'), 4, "hour diff");
test.equal(moment([2010, 0, 1, 0, 5]).utc().diff([2010], 'minutes'), 5, "minute diff");
test.equal(moment([2010, 0, 1, 0, 0, 6]).utc().diff([2010], 'seconds'), 6, "second diff");
test.done();
},
"diff floored" : function (test) {
test.expect(7);
test.equal(moment([2010, 0, 1, 23]).diff([2010], 'day'), 0, "23 hours = 0 days");
test.equal(moment([2010, 0, 1, 23, 59]).diff([2010], 'day'), 0, "23:59 hours = 0 days");
test.equal(moment([2010, 0, 1, 24]).diff([2010], 'day'), 1, "24 hours = 1 day");
test.equal(moment([2010, 0, 2]).diff([2011, 0, 1], 'year'), 0, "year rounded down");
test.equal(moment([2011, 0, 1]).diff([2010, 0, 2], 'year'), 0, "year rounded down");
test.equal(moment([2010, 0, 2]).diff([2011, 0, 2], 'year'), -1, "year rounded down");
test.equal(moment([2011, 0, 2]).diff([2010, 0, 2], 'year'), 1, "year rounded down");
test.done();
},
"year diffs include dates" : function (test) {
test.expect(1);
test.ok(moment([2012, 1, 19]).diff(moment([2002, 1, 20]), 'years', true) < 10, "year diff should include date of month");
test.done();
},
"month diffs" : function (test) {
test.expect(8);
// due to floating point math errors, these tests just need to be accurate within 0.00000001
equal(test, moment([2012, 0, 1]).diff([2012, 1, 1], 'months', true), -1, 'Jan 1 to Feb 1 should be 1 month');
equal(test, moment([2012, 0, 1]).diff([2012, 0, 1, 12], 'months', true), -0.5 / 31, 'Jan 1 to Jan 1 noon should be 0.5 / 31 months');
equal(test, moment([2012, 0, 15]).diff([2012, 1, 15], 'months', true), -1, 'Jan 15 to Feb 15 should be 1 month');
equal(test, moment([2012, 0, 28]).diff([2012, 1, 28], 'months', true), -1, 'Jan 28 to Feb 28 should be 1 month');
equal(test, moment([2012, 0, 31]).diff([2012, 1, 29], 'months', true), -1 + (2 / 30), 'Jan 31 to Feb 29 should be 1 - (2 / 30) months');
equal(test, moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), -2 + (30 / 31), 'Jan 31 to Mar 1 should be 2 - (30 / 31) months');
equal(test, moment([2012, 0, 31]).diff([2012, 2, 1, 12], 'months', true), -2 + (29.5 / 31), 'Jan 31 to Mar 1 should be 2 - (29.5 / 31) months');
equal(test, moment([2012, 0, 1]).diff([2012, 0, 31], 'months', true), -(30 / 31), 'Jan 1 to Jan 31 should be 30 / 31 months');
test.done();
},
"year diffs" : function (test) {
test.expect(10);
// due to floating point math errors, these tests just need to be accurate within 0.00000001
equal(test, moment([2012, 0, 1]).diff([2013, 0, 1], 'years', true), -1, 'Jan 1 2012 to Jan 1 2013 should be 1 year');
equal(test, moment([2012, 1, 28]).diff([2013, 1, 28], 'years', true), -1, 'Feb 28 2012 to Feb 28 2013 should be 1 year');
equal(test, moment([2012, 2, 1]).diff([2013, 2, 1], 'years', true), -1, 'Mar 1 2012 to Mar 1 2013 should be 1 year');
equal(test, moment([2012, 11, 1]).diff([2013, 11, 1], 'years', true), -1, 'Dec 1 2012 to Dec 1 2013 should be 1 year');
equal(test, moment([2012, 11, 31]).diff([2013, 11, 31], 'years', true), -1, 'Dec 31 2012 to Dec 31 2013 should be 1 year');
equal(test, moment([2012, 0, 1]).diff([2013, 6, 1], 'years', true), -1.5, 'Jan 1 2012 to Jul 1 2013 should be 1.5 years');
equal(test, moment([2012, 0, 31]).diff([2013, 6, 31], 'years', true), -1.5, 'Jan 31 2012 to Jul 31 2013 should be 1.5 years');
equal(test, moment([2012, 0, 1]).diff([2013, 0, 1, 12], 'years', true), -1 - (0.5 / 31) / 12, 'Jan 1 2012 to Jan 1 2013 noon should be 1+(0.5 / 31) / 12 years');
equal(test, moment([2012, 0, 1]).diff([2013, 6, 1, 12], 'years', true), -1.5 - (0.5 / 31) / 12, 'Jan 1 2012 to Jul 1 2013 noon should be 1.5+(0.5 / 31) / 12 years');
equal(test, moment([2012, 1, 29]).diff([2013, 1, 28], 'years', true), -1 + (1 / 28.5) / 12, 'Feb 29 2012 to Feb 28 2013 should be 1-(1 / 28.5) / 12 years');
test.done();
}
};
var moment = require("../../moment");
exports.duration = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"object instantiation" : function (test) {
var d = moment.duration({
years: 2,
months: 3,
weeks: 2,
days: 1,
hours: 8,
minutes: 9,
seconds: 20,
milliseconds: 12
});
test.expect(8);
test.equal(d.years(), 2, "years");
test.equal(d.months(), 3, "months");
test.equal(d.weeks(), 2, "weeks");
test.equal(d.days(), 15, "days"); // two weeks + 1 day
test.equal(d.hours(), 8, "hours");
test.equal(d.minutes(), 9, "minutes");
test.equal(d.seconds(), 20, "seconds");
test.equal(d.milliseconds(), 12, "milliseconds");
test.done();
},
"object instantiation with strings" : function (test) {
var d = moment.duration({
years: '2',
months: '3',
weeks: '2',
days: '1',
hours: '8',
minutes: '9',
seconds: '20',
milliseconds: '12'
});
test.expect(8);
test.equal(d.years(), 2, "years");
test.equal(d.months(), 3, "months");
test.equal(d.weeks(), 2, "weeks");
test.equal(d.days(), 15, "days"); // two weeks + 1 day
test.equal(d.hours(), 8, "hours");
test.equal(d.minutes(), 9, "minutes");
test.equal(d.seconds(), 20, "seconds");
test.equal(d.milliseconds(), 12, "milliseconds");
test.done();
},
"milliseconds instantiation" : function (test) {
test.expect(1);
test.equal(moment.duration(72).milliseconds(), 72, "milliseconds");
test.done();
},
"instantiation by type" : function (test) {
test.expect(16);
test.equal(moment.duration(1, "years").years(), 1, "years");
test.equal(moment.duration(1, "y").years(), 1, "y");
test.equal(moment.duration(2, "months").months(), 2, "months");
test.equal(moment.duration(2, "M").months(), 2, "M");
test.equal(moment.duration(3, "weeks").weeks(), 3, "weeks");
test.equal(moment.duration(3, "w").weeks(), 3, "weeks");
test.equal(moment.duration(4, "days").days(), 4, "days");
test.equal(moment.duration(4, "d").days(), 4, "d");
test.equal(moment.duration(5, "hours").hours(), 5, "hours");
test.equal(moment.duration(5, "h").hours(), 5, "h");
test.equal(moment.duration(6, "minutes").minutes(), 6, "minutes");
test.equal(moment.duration(6, "m").minutes(), 6, "m");
test.equal(moment.duration(7, "seconds").seconds(), 7, "seconds");
test.equal(moment.duration(7, "s").seconds(), 7, "s");
test.equal(moment.duration(8, "milliseconds").milliseconds(), 8, "milliseconds");
test.equal(moment.duration(8, "ms").milliseconds(), 8, "ms");
test.done();
},
"shortcuts" : function (test) {
test.expect(8);
test.equal(moment.duration({y: 1}).years(), 1, "years = y");
test.equal(moment.duration({M: 2}).months(), 2, "months = M");
test.equal(moment.duration({w: 3}).weeks(), 3, "weeks = w");
test.equal(moment.duration({d: 4}).days(), 4, "days = d");
test.equal(moment.duration({h: 5}).hours(), 5, "hours = h");
test.equal(moment.duration({m: 6}).minutes(), 6, "minutes = m");
test.equal(moment.duration({s: 7}).seconds(), 7, "seconds = s");
test.equal(moment.duration({ms: 8}).milliseconds(), 8, "milliseconds = ms");
test.done();
},
"generic getter" : function (test) {
test.expect(24);
test.equal(moment.duration(1, "years").get("years"), 1, "years");
test.equal(moment.duration(1, "years").get("year"), 1, "years = year");
test.equal(moment.duration(1, "years").get("y"), 1, "years = y");
test.equal(moment.duration(2, "months").get("months"), 2, "months");
test.equal(moment.duration(2, "months").get("month"), 2, "months = month");
test.equal(moment.duration(2, "months").get("M"), 2, "months = M");
test.equal(moment.duration(3, "weeks").get("weeks"), 3, "weeks");
test.equal(moment.duration(3, "weeks").get("week"), 3, "weeks = week");
test.equal(moment.duration(3, "weeks").get("w"), 3, "weeks = w");
test.equal(moment.duration(4, "days").get("days"), 4, "days");
test.equal(moment.duration(4, "days").get("day"), 4, "days = day");
test.equal(moment.duration(4, "days").get("d"), 4, "days = d");
test.equal(moment.duration(5, "hours").get("hours"), 5, "hours");
test.equal(moment.duration(5, "hours").get("hour"), 5, "hours = hour");
test.equal(moment.duration(5, "hours").get("h"), 5, "hours = h");
test.equal(moment.duration(6, "minutes").get("minutes"), 6, "minutes");
test.equal(moment.duration(6, "minutes").get("minute"), 6, "minutes = minute");
test.equal(moment.duration(6, "minutes").get("m"), 6, "minutes = m");
test.equal(moment.duration(7, "seconds").get("seconds"), 7, "seconds");
test.equal(moment.duration(7, "seconds").get("second"), 7, "seconds = second");
test.equal(moment.duration(7, "seconds").get("s"), 7, "seconds = s");
test.equal(moment.duration(8, "milliseconds").get("milliseconds"), 8, "milliseconds");
test.equal(moment.duration(8, "milliseconds").get("millisecond"), 8, "milliseconds = millisecond");
test.equal(moment.duration(8, "milliseconds").get("ms"), 8, "milliseconds = ms");
test.done();
},
"instantiation from another duration" : function (test) {
var simple = moment.duration(1234),
lengthy = moment.duration(60 * 60 * 24 * 360 * 1e3),
complicated = moment.duration({
years: 2,
months: 3,
weeks: 4,
days: 1,
hours: 8,
minutes: 9,
seconds: 20,
milliseconds: 12
}),
modified = moment.duration(1, 'day').add(moment.duration(1, 'day'));
test.expect(4);
test.deepEqual(moment.duration(simple), simple, "simple clones are equal");
test.deepEqual(moment.duration(lengthy), lengthy, "lengthy clones are equal");
test.deepEqual(moment.duration(complicated), complicated, "complicated clones are equal");
test.deepEqual(moment.duration(modified), modified, "cloning modified duration works");
test.done();
},
"instantiation from 24-hour time zero" : function (test) {
test.expect(6);
test.equal(moment.duration("00:00").years(), 0, "0 years");
test.equal(moment.duration("00:00").days(), 0, "0 days");
test.equal(moment.duration("00:00").hours(), 0, "0 hours");
test.equal(moment.duration("00:00").minutes(), 0, "0 minutes");
test.equal(moment.duration("00:00").seconds(), 0, "0 seconds");
test.equal(moment.duration("00:00").milliseconds(), 0, "0 milliseconds");
test.done();
},
"instantiation from 24-hour time <24 hours" : function (test) {
test.expect(6);
test.equal(moment.duration("06:45").years(), 0, "0 years");
test.equal(moment.duration("06:45").days(), 0, "0 days");
test.equal(moment.duration("06:45").hours(), 6, "6 hours");
test.equal(moment.duration("06:45").minutes(), 45, "45 minutes");
test.equal(moment.duration("06:45").seconds(), 0, "0 seconds");
test.equal(moment.duration("06:45").milliseconds(), 0, "0 milliseconds");
test.done();
},
"instantiation from 24-hour time >24 hours" : function (test) {
test.expect(6);
test.equal(moment.duration("26:45").years(), 0, "0 years");
test.equal(moment.duration("26:45").days(), 1, "0 days");
test.equal(moment.duration("26:45").hours(), 2, "2 hours");
test.equal(moment.duration("26:45").minutes(), 45, "45 minutes");
test.equal(moment.duration("26:45").seconds(), 0, "0 seconds");
test.equal(moment.duration("26:45").milliseconds(), 0, "0 milliseconds");
test.done();
},
"instatiation from serialized C# TimeSpan zero" : function (test) {
test.expect(6);
test.equal(moment.duration("00:00:00").years(), 0, "0 years");
test.equal(moment.duration("00:00:00").days(), 0, "0 days");
test.equal(moment.duration("00:00:00").hours(), 0, "0 hours");
test.equal(moment.duration("00:00:00").minutes(), 0, "0 minutes");
test.equal(moment.duration("00:00:00").seconds(), 0, "0 seconds");
test.equal(moment.duration("00:00:00").milliseconds(), 0, "0 milliseconds");
test.done();
},
"instatiation from serialized C# TimeSpan with days" : function (test) {
test.expect(6);
test.equal(moment.duration("1.02:03:04.9999999").years(), 0, "0 years");
test.equal(moment.duration("1.02:03:04.9999999").days(), 1, "1 day");
test.equal(moment.duration("1.02:03:04.9999999").hours(), 2, "2 hours");
test.equal(moment.duration("1.02:03:04.9999999").minutes(), 3, "3 minutes");
test.equal(moment.duration("1.02:03:04.9999999").seconds(), 4, "4 seconds");
test.equal(moment.duration("1.02:03:04.9999999").milliseconds(), 999, "999 milliseconds");
test.done();
},
"instatiation from serialized C# TimeSpan without days" : function (test) {
test.expect(10);
test.equal(moment.duration("01:02:03.9999999").years(), 0, "0 years");
test.equal(moment.duration("01:02:03.9999999").days(), 0, "0 days");
test.equal(moment.duration("01:02:03.9999999").hours(), 1, "1 hour");
test.equal(moment.duration("01:02:03.9999999").minutes(), 2, "2 minutes");
test.equal(moment.duration("01:02:03.9999999").seconds(), 3, "3 seconds");
test.equal(moment.duration("01:02:03.9999999").milliseconds(), 999, "999 milliseconds");
test.equal(moment.duration("23:59:59.9999999").days(), 0, "0 days");
test.equal(moment.duration("23:59:59.9999999").hours(), 23, "23 hours");
test.equal(moment.duration("500:59:59.9999999").days(), 20, "500 hours overflows to 20 days");
test.equal(moment.duration("500:59:59.9999999").hours(), 20, "500 hours overflows to 20 hours");
test.done();
},
"instatiation from serialized C# TimeSpan without days or milliseconds" : function (test) {
test.expect(6);
test.equal(moment.duration("01:02:03").years(), 0, "0 years");
test.equal(moment.duration("01:02:03").days(), 0, "0 days");
test.equal(moment.duration("01:02:03").hours(), 1, "1 hour");
test.equal(moment.duration("01:02:03").minutes(), 2, "2 minutes");
test.equal(moment.duration("01:02:03").seconds(), 3, "3 seconds");
test.equal(moment.duration("01:02:03").milliseconds(), 0, "0 milliseconds");
test.done();
},
"instatiation from serialized C# TimeSpan without milliseconds" : function (test) {
test.expect(6);
test.equal(moment.duration("1.02:03:04").years(), 0, "0 years");
test.equal(moment.duration("1.02:03:04").days(), 1, "1 day");
test.equal(moment.duration("1.02:03:04").hours(), 2, "2 hours");
test.equal(moment.duration("1.02:03:04").minutes(), 3, "3 minutes");
test.equal(moment.duration("1.02:03:04").seconds(), 4, "4 seconds");
test.equal(moment.duration("1.02:03:04").milliseconds(), 0, "0 milliseconds");
test.done();
},
"instatiation from serialized C# TimeSpan maxValue" : function (test) {
test.expect(6);
test.equal(moment.duration("10675199.02:48:05.4775807").years(), 29653, "29653 years");
test.equal(moment.duration("10675199.02:48:05.4775807").days(), 29, "29 day");
test.equal(moment.duration("10675199.02:48:05.4775807").hours(), 2, "2 hours");
test.equal(moment.duration("10675199.02:48:05.4775807").minutes(), 48, "48 minutes");
test.equal(moment.duration("10675199.02:48:05.4775807").seconds(), 5, "5 seconds");
test.equal(moment.duration("10675199.02:48:05.4775807").milliseconds(), 477, "477 milliseconds");
test.done();
},
"instatiation from serialized C# TimeSpan minValue" : function (test) {
test.expect(6);
test.equal(moment.duration("-10675199.02:48:05.4775808").years(), -29653, "29653 years");
test.equal(moment.duration("-10675199.02:48:05.4775808").days(), -29, "29 day");
test.equal(moment.duration("-10675199.02:48:05.4775808").hours(), -2, "2 hours");
test.equal(moment.duration("-10675199.02:48:05.4775808").minutes(), -48, "48 minutes");
test.equal(moment.duration("-10675199.02:48:05.4775808").seconds(), -5, "5 seconds");
test.equal(moment.duration("-10675199.02:48:05.4775808").milliseconds(), -477, "477 milliseconds");
test.done();
},
"instantiation from ISO 8601 duration" : function (test) {
test.expect(7);
test.equal(moment.duration("P1Y2M3DT4H5M6S").asSeconds(), moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).asSeconds(), "all fields");
test.equal(moment.duration("P1M").asSeconds(), moment.duration({M: 1}).asSeconds(), "single month field");
test.equal(moment.duration("PT1M").asSeconds(), moment.duration({m: 1}).asSeconds(), "single minute field");
test.equal(moment.duration("P1MT2H").asSeconds(), moment.duration({M: 1, h: 2}).asSeconds(), "random fields missing");
test.equal(moment.duration("-P60D").asSeconds(), moment.duration({d: -60}).asSeconds(), "negative days");
test.equal(moment.duration("PT0.5S").asSeconds(), moment.duration({s: 0.5}).asSeconds(), "fractional seconds");
test.equal(moment.duration("PT0,5S").asSeconds(), moment.duration({s: 0.5}).asSeconds(), "fractional seconds (comma)");
test.done();
},
"serialization to ISO 8601 duration strings" : function (test) {
test.expect(6);
test.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toIsoString(), "P1Y2M3DT4H5M6S", "all fields");
test.equal(moment.duration({M: -1}).toIsoString(), "-P1M", "one month ago");
test.equal(moment.duration({m: -1}).toIsoString(), "-PT1M", "one minute ago");
test.equal(moment.duration({s: -0.5}).toIsoString(), "-PT0.5S", "one half second ago");
test.equal(moment.duration({y: -0.5, M: 1}).toIsoString(), "-P5M", "a month after half a year ago");
test.equal(moment.duration({}).toIsoString(), "P0D", "zero duration");
test.done();
},
"`isodate` (python) test cases" : function (test) {
test.expect(24);
test.equal(moment.duration("P18Y9M4DT11H9M8S").asSeconds(), moment.duration({y: 18, M: 9, d: 4, h: 11, m: 9, s: 8}).asSeconds(), "python isodate 1");
test.equal(moment.duration("P2W").asSeconds(), moment.duration({w: 2}).asSeconds(), "python isodate 2");
test.equal(moment.duration("P3Y6M4DT12H30M5S").asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), "python isodate 3");
test.equal(moment.duration("P23DT23H").asSeconds(), moment.duration({d: 23, h: 23}).asSeconds(), "python isodate 4");
test.equal(moment.duration("P4Y").asSeconds(), moment.duration({y: 4}).asSeconds(), "python isodate 5");
test.equal(moment.duration("P1M").asSeconds(), moment.duration({M: 1}).asSeconds(), "python isodate 6");
test.equal(moment.duration("PT1M").asSeconds(), moment.duration({m: 1}).asSeconds(), "python isodate 7");
test.equal(moment.duration("P0.5Y").asSeconds(), moment.duration({y: 0.5}).asSeconds(), "python isodate 8");
test.equal(moment.duration("PT36H").asSeconds(), moment.duration({h: 36}).asSeconds(), "python isodate 9");
test.equal(moment.duration("P1DT12H").asSeconds(), moment.duration({d: 1, h: 12}).asSeconds(), "python isodate 10");
test.equal(moment.duration("-P2W").asSeconds(), moment.duration({w: -2}).asSeconds(), "python isodate 11");
test.equal(moment.duration("-P2.2W").asSeconds(), moment.duration({w: -2.2}).asSeconds(), "python isodate 12");
test.equal(moment.duration("P1DT2H3M4S").asSeconds(), moment.duration({d: 1, h: 2, m: 3, s: 4}).asSeconds(), "python isodate 13");
test.equal(moment.duration("P1DT2H3M").asSeconds(), moment.duration({d: 1, h: 2, m: 3}).asSeconds(), "python isodate 14");
test.equal(moment.duration("P1DT2H").asSeconds(), moment.duration({d: 1, h: 2}).asSeconds(), "python isodate 15");
test.equal(moment.duration("PT2H").asSeconds(), moment.duration({h: 2}).asSeconds(), "python isodate 16");
test.equal(moment.duration("PT2.3H").asSeconds(), moment.duration({h: 2.3}).asSeconds(), "python isodate 17");
test.equal(moment.duration("PT2H3M4S").asSeconds(), moment.duration({h: 2, m: 3, s: 4}).asSeconds(), "python isodate 18");
test.equal(moment.duration("PT3M4S").asSeconds(), moment.duration({m: 3, s: 4}).asSeconds(), "python isodate 19");
test.equal(moment.duration("PT22S").asSeconds(), moment.duration({s: 22}).asSeconds(), "python isodate 20");
test.equal(moment.duration("PT22.22S").asSeconds(), moment.duration({s: 22.22}).asSeconds(), "python isodate 21");
test.equal(moment.duration("-P2Y").asSeconds(), moment.duration({y: -2}).asSeconds(), "python isodate 22");
test.equal(moment.duration("-P3Y6M4DT12H30M5S").asSeconds(), moment.duration({y: -3, M: -6, d: -4, h: -12, m: -30, s: -5}).asSeconds(), "python isodate 23");
test.equal(moment.duration("-P1DT2H3M4S").asSeconds(), moment.duration({d: -1, h: -2, m: -3, s: -4}).asSeconds(), "python isodate 24");
test.done();
},
"ISO 8601 misuse cases" : function (test) {
test.expect(8);
test.equal(moment.duration("P").asSeconds(), 0, "lonely P");
test.equal(moment.duration("PT").asSeconds(), 0, "just P and T");
test.equal(moment.duration("P1H").asSeconds(), 0, "missing T");
test.equal(moment.duration("P1D1Y").asSeconds(), 0, "out of order");
test.equal(moment.duration("PT.5S").asSeconds(), 0.5, "accept no leading zero for decimal");
test.equal(moment.duration("PT1,S").asSeconds(), 1, "accept trailing decimal separator");
test.equal(moment.duration("PT1M0,,5S").asSeconds(), 60, "extra decimal separators are ignored as 0");
test.equal(moment.duration("P-1DS").asSeconds(), 0, "wrong position of negative");
test.done();
},
"humanize" : function (test) {
test.expect(32);
moment.lang('en');
test.equal(moment.duration({seconds: 44}).humanize(), "a few seconds", "44 seconds = a few seconds");
test.equal(moment.duration({seconds: 45}).humanize(), "a minute", "45 seconds = a minute");
test.equal(moment.duration({seconds: 89}).humanize(), "a minute", "89 seconds = a minute");
test.equal(moment.duration({seconds: 90}).humanize(), "2 minutes", "90 seconds = 2 minutes");
test.equal(moment.duration({minutes: 44}).humanize(), "44 minutes", "44 minutes = 44 minutes");
test.equal(moment.duration({minutes: 45}).humanize(), "an hour", "45 minutes = an hour");
test.equal(moment.duration({minutes: 89}).humanize(), "an hour", "89 minutes = an hour");
test.equal(moment.duration({minutes: 90}).humanize(), "2 hours", "90 minutes = 2 hours");
test.equal(moment.duration({hours: 5}).humanize(), "5 hours", "5 hours = 5 hours");
test.equal(moment.duration({hours: 21}).humanize(), "21 hours", "21 hours = 21 hours");
test.equal(moment.duration({hours: 22}).humanize(), "a day", "22 hours = a day");
test.equal(moment.duration({hours: 35}).humanize(), "a day", "35 hours = a day");
test.equal(moment.duration({hours: 36}).humanize(), "2 days", "36 hours = 2 days");
test.equal(moment.duration({days: 1}).humanize(), "a day", "1 day = a day");
test.equal(moment.duration({days: 5}).humanize(), "5 days", "5 days = 5 days");
test.equal(moment.duration({weeks: 1}).humanize(), "7 days", "1 week = 7 days");
test.equal(moment.duration({days: 25}).humanize(), "25 days", "25 days = 25 days");
test.equal(moment.duration({days: 26}).humanize(), "a month", "26 days = a month");
test.equal(moment.duration({days: 30}).humanize(), "a month", "30 days = a month");
test.equal(moment.duration({days: 45}).humanize(), "a month", "45 days = a month");
test.equal(moment.duration({days: 46}).humanize(), "2 months", "46 days = 2 months");
test.equal(moment.duration({days: 74}).humanize(), "2 months", "75 days = 2 months");
test.equal(moment.duration({days: 76}).humanize(), "3 months", "76 days = 3 months");
test.equal(moment.duration({months: 1}).humanize(), "a month", "1 month = a month");
test.equal(moment.duration({months: 5}).humanize(), "5 months", "5 months = 5 months");
test.equal(moment.duration({days: 344}).humanize(), "11 months", "344 days = 11 months");
test.equal(moment.duration({days: 345}).humanize(), "a year", "345 days = a year");
test.equal(moment.duration({days: 547}).humanize(), "a year", "547 days = a year");
test.equal(moment.duration({days: 548}).humanize(), "2 years", "548 days = 2 years");
test.equal(moment.duration({years: 1}).humanize(), "a year", "1 year = a year");
test.equal(moment.duration({years: 5}).humanize(), "5 years", "5 years = 5 years");
test.equal(moment.duration(7200000).humanize(), "2 hours", "7200000 = 2 minutes");
test.done();
},
"humanize duration with suffix" : function (test) {
test.expect(2);
moment.lang('en');
test.equal(moment.duration({seconds: 44}).humanize(true), "in a few seconds", "44 seconds = a few seconds");
test.equal(moment.duration({seconds: -44}).humanize(true), "a few seconds ago", "44 seconds = a few seconds");
test.done();
},
"bubble value up" : function (test) {
test.expect(5);
test.equal(moment.duration({milliseconds: 61001}).milliseconds(), 1, "61001 milliseconds has 1 millisecond left over");
test.equal(moment.duration({milliseconds: 61001}).seconds(), 1, "61001 milliseconds has 1 second left over");
test.equal(moment.duration({milliseconds: 61001}).minutes(), 1, "61001 milliseconds has 1 minute left over");
test.equal(moment.duration({minutes: 350}).minutes(), 50, "350 minutes has 50 minutes left over");
test.equal(moment.duration({minutes: 350}).hours(), 5, "350 minutes has 5 hours left over");
test.done();
},
"clipping" : function (test) {
test.expect(18);
test.equal(moment.duration({months: 11}).months(), 11, "11 months is 11 months");
test.equal(moment.duration({months: 11}).years(), 0, "11 months makes no year");
test.equal(moment.duration({months: 12}).months(), 0, "12 months is 0 months left over");
test.equal(moment.duration({months: 12}).years(), 1, "12 months makes 1 year");
test.equal(moment.duration({months: 13}).months(), 1, "13 months is 1 month left over");
test.equal(moment.duration({months: 13}).years(), 1, "13 months makes 1 year");
test.equal(moment.duration({days: 29}).days(), 29, "29 days is 29 days");
test.equal(moment.duration({days: 29}).months(), 0, "29 days makes no month");
test.equal(moment.duration({days: 30}).days(), 0, "30 days is 0 days left over");
test.equal(moment.duration({days: 30}).months(), 1, "30 days is a month");
test.equal(moment.duration({days: 31}).days(), 1, "31 days is 1 day left over");
test.equal(moment.duration({days: 31}).months(), 1, "31 days is a month");
test.equal(moment.duration({hours: 23}).hours(), 23, "23 hours is 23 hours");
test.equal(moment.duration({hours: 23}).days(), 0, "23 hours makes no day");
test.equal(moment.duration({hours: 24}).hours(), 0, "24 hours is 0 hours left over");
test.equal(moment.duration({hours: 24}).days(), 1, "24 hours makes 1 day");
test.equal(moment.duration({hours: 25}).hours(), 1, "25 hours is 1 hour left over");
test.equal(moment.duration({hours: 25}).days(), 1, "25 hours makes 1 day");
test.done();
},
"effective equivalency" : function (test) {
test.expect(7);
test.deepEqual(moment.duration({seconds: 1})._data, moment.duration({milliseconds: 1000})._data, "1 second is the same as 1000 milliseconds");
test.deepEqual(moment.duration({seconds: 60})._data, moment.duration({minutes: 1})._data, "1 minute is the same as 60 seconds");
test.deepEqual(moment.duration({minutes: 60})._data, moment.duration({hours: 1})._data, "1 hour is the same as 60 minutes");
test.deepEqual(moment.duration({hours: 24})._data, moment.duration({days: 1})._data, "1 day is the same as 24 hours");
test.deepEqual(moment.duration({days: 7})._data, moment.duration({weeks: 1})._data, "1 week is the same as 7 days");
test.deepEqual(moment.duration({days: 30})._data, moment.duration({months: 1})._data, "1 month is the same as 30 days");
test.deepEqual(moment.duration({months: 12})._data, moment.duration({years: 1})._data, "1 years is the same as 12 months");
test.done();
},
"asGetters" : function (test) {
var d = moment.duration({
years: 2,
months: 3,
weeks: 2,
days: 1,
hours: 8,
minutes: 9,
seconds: 20,
milliseconds: 12
});
test.expect(8);
test.equal(d.asYears().toFixed(2), "2.29", "years");
test.equal(d.asMonths().toFixed(2), "27.51", "months");
test.equal(d.asWeeks().toFixed(2), "119.33", "weeks");
test.equal(d.asDays().toFixed(2), "835.34", "days");
test.equal(d.asHours().toFixed(2), "20048.16", "hours");
test.equal(d.asMinutes().toFixed(2), "1202889.33", "minutes");
test.equal(d.asSeconds().toFixed(2), "72173360.01", "seconds");
test.equal(d.asMilliseconds(), 72173360012, "milliseconds");
test.done();
},
"generic as getter" : function (test) {
var d = moment.duration({
years: 2,
months: 3,
weeks: 2,
days: 1,
hours: 8,
minutes: 9,
seconds: 20,
milliseconds: 12
});
test.expect(24);
test.equal(d.as("years").toFixed(2), "2.29", "years");
test.equal(d.as("year").toFixed(2), "2.29", "years = year");
test.equal(d.as("y").toFixed(2), "2.29", "years = y");
test.equal(d.as("months").toFixed(2), "27.51", "months");
test.equal(d.as("month").toFixed(2), "27.51", "months = month");
test.equal(d.as("M").toFixed(2), "27.51", "months = M");
test.equal(d.as("weeks").toFixed(2), "119.33", "weeks");
test.equal(d.as("week").toFixed(2), "119.33", "weeks = week");
test.equal(d.as("w").toFixed(2), "119.33", "weeks = w");
test.equal(d.as("days").toFixed(2), "835.34", "days");
test.equal(d.as("day").toFixed(2), "835.34", "days = day");
test.equal(d.as("d").toFixed(2), "835.34", "days = d");
test.equal(d.as("hours").toFixed(2), "20048.16", "hours");
test.equal(d.as("hour").toFixed(2), "20048.16", "hours = hour");
test.equal(d.as("h").toFixed(2), "20048.16", "hours = h");
test.equal(d.as("minutes").toFixed(2), "1202889.33", "minutes");
test.equal(d.as("minute").toFixed(2), "1202889.33", "minutes = minute");
test.equal(d.as("m").toFixed(2), "1202889.33", "minutes = m");
test.equal(d.as("seconds").toFixed(2), "72173360.01", "seconds");
test.equal(d.as("second").toFixed(2), "72173360.01", "seconds = second");
test.equal(d.as("s").toFixed(2), "72173360.01", "seconds = s");
test.equal(d.as("milliseconds"), 72173360012, "milliseconds");
test.equal(d.as("millisecond"), 72173360012, "milliseconds = millisecond");
test.equal(d.as("ms"), 72173360012, "milliseconds = ms");
test.done();
},
"isDuration" : function (test) {
test.expect(3);
test.ok(moment.isDuration(moment.duration(12345678)), "correctly says true");
test.ok(!moment.isDuration(moment()), "moment object is not a duration");
test.ok(!moment.isDuration({milliseconds: 1}), "plain object is not a duration");
test.done();
},
"add" : function (test) {
test.expect(4);
var d = moment.duration({months: 4, weeks: 3, days: 2});
// for some reason, d._data._months does not get updated; use d._months instead.
test.equal(d.add(1, 'month')._months, 5, 'Add months');
test.equal(d.add(5, 'days')._days, 28, 'Add days');
test.equal(d.add(10000)._milliseconds, 10000, 'Add milliseconds');
test.equal(d.add({h: 23, m: 59})._milliseconds, 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 10000, 'Add hour:minute');
test.done();
},
"add and bubble" : function (test) {
test.expect(4);
test.equal(moment.duration(1, 'second').add(1000, 'milliseconds').seconds(), 2, 'Adding milliseconds should bubble up to seconds');
test.equal(moment.duration(1, 'minute').add(60, 'second').minutes(), 2, 'Adding seconds should bubble up to minutes');
test.equal(moment.duration(1, 'hour').add(60, 'minutes').hours(), 2, 'Adding minutes should bubble up to hours');
test.equal(moment.duration(1, 'day').add(24, 'hours').days(), 2, 'Adding hours should bubble up to days');
test.done();
},
"subtract and bubble" : function (test) {
test.expect(4);
test.equal(moment.duration(2, 'second').subtract(1000, 'milliseconds').seconds(), 1, 'Subtracting milliseconds should bubble up to seconds');
test.equal(moment.duration(2, 'minute').subtract(60, 'second').minutes(), 1, 'Subtracting seconds should bubble up to minutes');
test.equal(moment.duration(2, 'hour').subtract(60, 'minutes').hours(), 1, 'Subtracting minutes should bubble up to hours');
test.equal(moment.duration(2, 'day').subtract(24, 'hours').days(), 1, 'Subtracting hours should bubble up to days');
test.done();
},
"subtract" : function (test) {
test.expect(4);
var d = moment.duration({months: 2, weeks: 2, days: 0, hours: 5});
// for some reason, d._data._months does not get updated; use d._months instead.
test.equal(d.subtract(1, 'months')._months, 1, 'Subtract months');
test.equal(d.subtract(14, 'days')._days, 0, 'Subtract days');
test.equal(d.subtract(10000)._milliseconds, 5 * 60 * 60 * 1000 - 10000, 'Subtract milliseconds');
test.equal(d.subtract({h: 1, m: 59})._milliseconds, 3 * 60 * 60 * 1000 + 1 * 60 * 1000 - 10000, 'Subtract hour:minute');
test.done();
}
};
var moment = require("../../moment");
exports.format = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"format YY" : function (test) {
test.expect(1);
var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125));
test.equal(b.format('YY'), '09', 'YY ---> 09');
test.done();
},
"format escape brackets" : function (test) {
test.expect(10);
moment.lang('en');
var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125));
test.equal(b.format('[day]'), 'day', 'Single bracket');
test.equal(b.format('[day] YY [YY]'), 'day 09 YY', 'Double bracket');
test.equal(b.format('[YY'), '[09', 'Un-ended bracket');
test.equal(b.format('[[YY]]'), '[YY]', 'Double nested brackets');
test.equal(b.format('[[]'), '[', 'Escape open bracket');
test.equal(b.format('[Last]'), 'Last', 'localized tokens');
test.equal(b.format('[L] L'), 'L 02/14/2009', 'localized tokens with escaped localized tokens');
test.equal(b.format('[L LL LLL LLLL aLa]'), 'L LL LLL LLLL aLa', 'localized tokens with escaped localized tokens');
test.equal(b.format('[LLL] LLL'), 'LLL February 14 2009 3:25 PM', 'localized tokens with escaped localized tokens (recursion)');
test.equal(b.format('YYYY[\n]DD[\n]'), '2009\n14\n', 'Newlines');
test.done();
},
"handle negative years" : function (test) {
test.expect(10);
moment.lang('en');
test.equal(moment.utc().year(-1).format('YY'), '-01', 'YY with negative year');
test.equal(moment.utc().year(-1).format('YYYY'), '-0001', 'YYYY with negative year');
test.equal(moment.utc().year(-12).format('YY'), '-12', 'YY with negative year');
test.equal(moment.utc().year(-12).format('YYYY'), '-0012', 'YYYY with negative year');
test.equal(moment.utc().year(-123).format('YY'), '-23', 'YY with negative year');
test.equal(moment.utc().year(-123).format('YYYY'), '-0123', 'YYYY with negative year');
test.equal(moment.utc().year(-1234).format('YY'), '-34', 'YY with negative year');
test.equal(moment.utc().year(-1234).format('YYYY'), '-1234', 'YYYY with negative year');
test.equal(moment.utc().year(-12345).format('YY'), '-45', 'YY with negative year');
test.equal(moment.utc().year(-12345).format('YYYY'), '-12345', 'YYYY with negative year');
test.done();
},
"format milliseconds" : function (test) {
test.expect(6);
var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123));
test.equal(b.format('S'), '1', 'Deciseconds');
test.equal(b.format('SS'), '12', 'Centiseconds');
test.equal(b.format('SSS'), '123', 'Milliseconds');
b.milliseconds(789);
test.equal(b.format('S'), '7', 'Deciseconds');
test.equal(b.format('SS'), '78', 'Centiseconds');
test.equal(b.format('SSS'), '789', 'Milliseconds');
test.done();
},
"format timezone" : function (test) {
test.expect(2);
var b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
explanation = 'moment().format("z") = ' + b.format('z') + ' It should be something like "PST"';
if (moment().zone() === -60) {
explanation += "For UTC+1 this is a known issue, see https://github.com/timrwood/moment/issues/162";
}
test.ok(b.format('Z').match(/^[\+\-]\d\d:\d\d$/), b.format('Z') + ' should be something like "+07:30"');
test.ok(b.format('ZZ').match(/^[\+\-]\d{4}$/), b.format('ZZ') + ' should be something like "+0700"');
test.done();
},
"format multiple with zone" : function (test) {
test.expect(1);
var b = moment('2012-10-08 -1200', ['YYYY-MM-DD HH:mm ZZ', 'YYYY-MM-DD ZZ', 'YYYY-MM-DD']);
test.equals(b.format('YYYY-MM'), '2012-10', 'Parsing multiple formats should not crash with different sized formats');
test.done();
},
"isDST" : function (test) {
test.expect(2);
var janOffset = new Date(2011, 0, 1).getTimezoneOffset(),
julOffset = new Date(2011, 6, 1).getTimezoneOffset(),
janIsDst = janOffset < julOffset,
julIsDst = julOffset < janOffset,
jan1 = moment([2011]),
jul1 = moment([2011, 6]);
if (janIsDst && julIsDst) {
test.ok(0, 'January and July cannot both be in DST');
test.ok(0, 'January and July cannot both be in DST');
} else if (janIsDst) {
test.ok(jan1.isDST(), 'January 1 is DST');
test.ok(!jul1.isDST(), 'July 1 is not DST');
} else if (julIsDst) {
test.ok(!jan1.isDST(), 'January 1 is not DST');
test.ok(jul1.isDST(), 'July 1 is DST');
} else {
test.ok(!jan1.isDST(), 'January 1 is not DST');
test.ok(!jul1.isDST(), 'July 1 is not DST');
}
test.done();
},
"unix timestamp" : function (test) {
test.expect(5);
var m = moment('1234567890.123', 'X');
test.equals(m.format('X'), '1234567890', 'unix timestamp without milliseconds');
test.equals(m.format('X.S'), '1234567890.1', 'unix timestamp with deciseconds');
test.equals(m.format('X.SS'), '1234567890.12', 'unix timestamp with centiseconds');
test.equals(m.format('X.SSS'), '1234567890.123', 'unix timestamp with milliseconds');
m = moment(1234567890.123, 'X');
test.equals(m.format('X'), '1234567890', 'unix timestamp as integer');
test.done();
},
"zone" : function (test) {
test.expect(3);
if (moment().zone() > 0) {
test.ok(moment().format('ZZ').indexOf('-') > -1, 'When the zone() offset is greater than 0, the ISO offset should be less than zero');
}
if (moment().zone() < 0) {
test.ok(moment().format('ZZ').indexOf('+') > -1, 'When the zone() offset is less than 0, the ISO offset should be greater than zero');
}
if (moment().zone() === 0) {
test.ok(moment().format('ZZ').indexOf('+') > -1, 'When the zone() offset is equal to 0, the ISO offset should be positive zero');
}
if (moment().zone() === 0) {
test.equal(moment().zone(), 0, 'moment.fn.zone should be a multiple of 15 (was ' + moment().zone() + ')');
} else {
test.equal(moment().zone() % 15, 0, 'moment.fn.zone should be a multiple of 15 (was ' + moment().zone() + ')');
}
test.equal(moment().zone(), new Date().getTimezoneOffset(), 'zone should equal getTimezoneOffset');
test.done();
},
"default format" : function (test) {
test.expect(1);
var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\d[\+\-]\d\d:\d\d/;
test.ok(isoRegex.exec(moment().format()), "default format (" + moment().format() + ") should match ISO");
test.done();
},
"escaping quotes" : function (test) {
test.expect(4);
moment.lang('en');
var date = moment([2012, 0]);
test.equal(date.format('MMM \'YY'), "Jan '12", "Should be able to format with single parenthesis");
test.equal(date.format('MMM "YY'), 'Jan "12', "Should be able to format with double parenthesis");
test.equal(date.format("MMM 'YY"), "Jan '12", "Should be able to format with single parenthesis");
test.equal(date.format("MMM \"YY"), 'Jan "12', "Should be able to format with double parenthesis");
test.done();
},
"toJSON" : function (test) {
var supportsJson = typeof JSON !== "undefined" && JSON.stringify && JSON.stringify.call,
date = moment("2012-10-09T21:30:40.678+0100");
test.expect(supportsJson ? 2 : 1);
test.equal(date.toJSON(), "2012-10-09T20:30:40.678Z", "should output ISO8601 on moment.fn.toJSON");
if (supportsJson) {
test.equal(JSON.stringify({
date : date
}), '{"date":"2012-10-09T20:30:40.678Z"}', "should output ISO8601 on JSON.stringify");
}
test.done();
},
"toISOString" : function (test) {
test.expect(4);
var date = moment.utc("2012-10-09T20:30:40.678");
test.equal(date.toISOString(), "2012-10-09T20:30:40.678Z", "should output ISO8601 on moment.fn.toISOString");
// big years
date = moment.utc("+020123-10-09T20:30:40.678");
test.equal(date.toISOString(), "+020123-10-09T20:30:40.678Z", "ISO8601 format on big positive year");
// negative years
date = moment.utc("-000001-10-09T20:30:40.678");
test.equal(date.toISOString(), "-000001-10-09T20:30:40.678Z", "ISO8601 format on negative year");
// big negative years
date = moment.utc("-020123-10-09T20:30:40.678");
test.equal(date.toISOString(), "-020123-10-09T20:30:40.678Z", "ISO8601 format on big negative year");
test.done();
},
"long years" : function (test) {
test.expect(6);
test.equal(moment.utc().year(2).format('YYYYYY'), '+000002', 'small year with YYYYYY');
test.equal(moment.utc().year(2012).format('YYYYYY'), '+002012', 'regular year with YYYYYY');
test.equal(moment.utc().year(20123).format('YYYYYY'), '+020123', 'big year with YYYYYY');
test.equal(moment.utc().year(-1).format('YYYYYY'), '-000001', 'small negative year with YYYYYY');
test.equal(moment.utc().year(-2012).format('YYYYYY'), '-002012', 'negative year with YYYYYY');
test.equal(moment.utc().year(-20123).format('YYYYYY'), '-020123', 'big negative year with YYYYYY');
test.done();
},
"iso week formats" : function (test) {
// http://en.wikipedia.org/wiki/ISO_week_date
var cases = {
"2005-01-02": "2004-53",
"2005-12-31": "2005-52",
"2007-01-01": "2007-01",
"2007-12-30": "2007-52",
"2007-12-31": "2008-01",
"2008-01-01": "2008-01",
"2008-12-28": "2008-52",
"2008-12-29": "2009-01",
"2008-12-30": "2009-01",
"2008-12-31": "2009-01",
"2009-01-01": "2009-01",
"2009-12-31": "2009-53",
"2010-01-01": "2009-53",
"2010-01-02": "2009-53",
"2010-01-03": "2009-53",
"404-12-31": "0404-53",
"405-12-31": "0405-52"
}, i, isoWeek, formatted2, formatted1;
for (i in cases) {
isoWeek = cases[i].split('-').pop();
formatted2 = moment(i, 'YYYY-MM-DD').format('WW');
test.equal(isoWeek, formatted2, i + ": WW should be " + isoWeek + ", but " + formatted2);
isoWeek = isoWeek.replace(/^0+/, '');
formatted1 = moment(i, 'YYYY-MM-DD').format('W');
test.equal(isoWeek, formatted1, i + ": W should be " + isoWeek + ", but " + formatted1);
}
test.done();
},
"iso week year formats" : function (test) {
// http://en.wikipedia.org/wiki/ISO_week_date
var cases = {
"2005-01-02": "2004-53",
"2005-12-31": "2005-52",
"2007-01-01": "2007-01",
"2007-12-30": "2007-52",
"2007-12-31": "2008-01",
"2008-01-01": "2008-01",
"2008-12-28": "2008-52",
"2008-12-29": "2009-01",
"2008-12-30": "2009-01",
"2008-12-31": "2009-01",
"2009-01-01": "2009-01",
"2009-12-31": "2009-53",
"2010-01-01": "2009-53",
"2010-01-02": "2009-53",
"2010-01-03": "2009-53",
"404-12-31": "0404-53",
"405-12-31": "0405-52"
}, i, isoWeekYear, formatted5, formatted4, formatted2;
for (i in cases) {
isoWeekYear = cases[i].split('-')[0];
formatted5 = moment(i, 'YYYY-MM-DD').format('GGGGG');
test.equal('0' + isoWeekYear, formatted5, i + ": GGGGG should be " + isoWeekYear + ", but " + formatted5);
formatted4 = moment(i, 'YYYY-MM-DD').format('GGGG');
test.equal(isoWeekYear, formatted4, i + ": GGGG should be " + isoWeekYear + ", but " + formatted4);
formatted2 = moment(i, 'YYYY-MM-DD').format('GG');
test.equal(isoWeekYear.slice(2, 4), formatted2, i + ": GG should be " + isoWeekYear + ", but " + formatted2);
}
test.done();
},
"week year formats" : function (test) {
// http://en.wikipedia.org/wiki/ISO_week_date
var cases = {
"2005-01-02": "2004-53",
"2005-12-31": "2005-52",
"2007-01-01": "2007-01",
"2007-12-30": "2007-52",
"2007-12-31": "2008-01",
"2008-01-01": "2008-01",
"2008-12-28": "2008-52",
"2008-12-29": "2009-01",
"2008-12-30": "2009-01",
"2008-12-31": "2009-01",
"2009-01-01": "2009-01",
"2009-12-31": "2009-53",
"2010-01-01": "2009-53",
"2010-01-02": "2009-53",
"2010-01-03": "2009-53",
"404-12-31": "0404-53",
"405-12-31": "0405-52"
}, i, isoWeekYear, formatted5, formatted4, formatted2;
moment.lang('en-gb'); // 1, 4
for (i in cases) {
isoWeekYear = cases[i].split('-')[0];
formatted5 = moment(i, 'YYYY-MM-DD').format('ggggg');
test.equal('0' + isoWeekYear, formatted5, i + ": ggggg should be " + isoWeekYear + ", but " + formatted5);
formatted4 = moment(i, 'YYYY-MM-DD').format('gggg');
test.equal(isoWeekYear, formatted4, i + ": gggg should be " + isoWeekYear + ", but " + formatted4);
formatted2 = moment(i, 'YYYY-MM-DD').format('gg');
test.equal(isoWeekYear.slice(2, 4), formatted2, i + ": gg should be " + isoWeekYear + ", but " + formatted2);
}
test.done();
},
"iso weekday formats" : function (test) {
test.expect(7);
test.equal(moment([1985, 1, 4]).format('E'), '1', "Feb 4 1985 is Monday -- 1st day");
test.equal(moment([2029, 8, 18]).format('E'), '2', "Sep 18 2029 is Tuesday -- 2nd day");
test.equal(moment([2013, 3, 24]).format('E'), '3', "Apr 24 2013 is Wednesday -- 3rd day");
test.equal(moment([2015, 2, 5]).format('E'), '4', "Mar 5 2015 is Thursday -- 4th day");
test.equal(moment([1970, 0, 2]).format('E'), '5', "Jan 2 1970 is Friday -- 5th day");
test.equal(moment([2001, 4, 12]).format('E'), '6', "May 12 2001 is Saturday -- 6th day");
test.equal(moment([2000, 0, 2]).format('E'), '7', "Jan 2 2000 is Sunday -- 7th day");
test.done();
},
"weekday formats" : function (test) {
test.expect(7);
moment.lang('dow: 3,doy: 5', {week: {dow: 3, doy: 5}});
test.equal(moment([1985, 1, 6]).format('e'), '0', "Feb 6 1985 is Wednesday -- 0th day");
test.equal(moment([2029, 8, 20]).format('e'), '1', "Sep 20 2029 is Thursday -- 1st day");
test.equal(moment([2013, 3, 26]).format('e'), '2', "Apr 26 2013 is Friday -- 2nd day");
test.equal(moment([2015, 2, 7]).format('e'), '3', "Mar 7 2015 is Saturday -- 3nd day");
test.equal(moment([1970, 0, 4]).format('e'), '4', "Jan 4 1970 is Sunday -- 4th day");
test.equal(moment([2001, 4, 14]).format('e'), '5', "May 14 2001 is Monday -- 5th day");
test.equal(moment([2000, 0, 4]).format('e'), '6', "Jan 4 2000 is Tuesday -- 6th day");
test.done();
},
"toString is just human readable format" : function (test) {
test.expect(1);
var b = moment(new Date(2009, 1, 5, 15, 25, 50, 125));
test.equal(b.toString(), b.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'));
test.done();
},
"toJSON skips postformat" : function (test) {
test.expect(1);
moment.lang('postformat', {postformat: function (s) { s.replace(/./g, 'X'); }});
test.equal(moment.utc([2000, 0, 1]).toJSON(), "2000-01-01T00:00:00.000Z", "toJSON doesn't postformat");
moment.lang('postformat', null);
test.done();
},
"calendar day timezone" : function (test) {
test.expect(10);
moment.lang('en');
var zones = [60, -60, 90, -90, 360, -360, 720, -720],
b = moment().utc().startOf('day').subtract({ m : 1 }),
c = moment().local().startOf('day').subtract({ m : 1 }),
i, z, a;
for (i = 0; i < zones.length; ++i) {
z = zones[i];
a = moment().zone(z).startOf('day').subtract({ m: 1 });
test.equal(moment(a).zone(z).calendar(), "Yesterday at 11:59 PM", "Yesterday at 11:59 PM, not Today, or the wrong time");
}
test.equal(moment(b).utc().calendar(), "Yesterday at 11:59 PM", "Yesterday at 11:59 PM, not Today, or the wrong time");
test.equal(moment(c).local().calendar(), "Yesterday at 11:59 PM", "Yesterday at 11:59 PM, not Today, or the wrong time");
test.done();
},
"invalid" : function (test) {
moment.lang('en');
test.equal(moment.invalid().format(), "Invalid date");
test.equal(moment.invalid().format('YYYY-MM-DD'), "Invalid date");
test.done();
},
"quarter formats" : function (test) {
test.expect(7);
test.equal(moment([1985, 1, 4]).format('Q'), '1', "Feb 4 1985 is Q1");
test.equal(moment([2029, 8, 18]).format('Q'), '3', "Sep 18 2029 is Q3");
test.equal(moment([2013, 3, 24]).format('Q'), '2', "Apr 24 2013 is Q2");
test.equal(moment([2015, 2, 5]).format('Q'), '1', "Mar 5 2015 is Q1");
test.equal(moment([1970, 0, 2]).format('Q'), '1', "Jan 2 1970 is Q1");
test.equal(moment([2001, 11, 12]).format('Q'), '4', "Dec 12 2001 is Q4");
test.equal(moment([2000, 0, 2]).format('[Q]Q-YYYY'), 'Q1-2000', "Jan 2 2000 is Q1");
test.done();
}
};
var moment = require("../../moment");
exports.gettersSetters = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"getters" : function (test) {
test.expect(8);
var a = moment([2011, 9, 12, 6, 7, 8, 9]);
test.equal(a.year(), 2011, 'year');
test.equal(a.month(), 9, 'month');
test.equal(a.date(), 12, 'date');
test.equal(a.day(), 3, 'day');
test.equal(a.hours(), 6, 'hour');
test.equal(a.minutes(), 7, 'minute');
test.equal(a.seconds(), 8, 'second');
test.equal(a.milliseconds(), 9, 'milliseconds');
test.done();
},
"getters programmatic" : function (test) {
var a = moment([2011, 9, 12, 6, 7, 8, 9]);
test.equal(a.get('year'), 2011, 'year');
test.equal(a.get('month'), 9, 'month');
test.equal(a.get('date'), 12, 'date');
test.equal(a.get('day'), 3, 'day');
test.equal(a.get('hour'), 6, 'hour');
test.equal(a.get('minute'), 7, 'minute');
test.equal(a.get('second'), 8, 'second');
test.equal(a.get('milliseconds'), 9, 'milliseconds');
//actual getters tested elsewhere
test.equal(a.get('weekday'), a.weekday(), 'weekday');
test.equal(a.get('isoWeekday'), a.isoWeekday(), 'isoWeekday');
test.equal(a.get('week'), a.week(), 'week');
test.equal(a.get('isoWeek'), a.isoWeek(), 'isoWeek');
test.equal(a.get('dayOfYear'), a.dayOfYear(), 'dayOfYear');
test.done();
},
"setters plural" : function (test) {
test.expect(8);
var a = moment();
a.years(2011);
a.months(9);
a.dates(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(9);
test.equal(a.years(), 2011, 'years');
test.equal(a.months(), 9, 'months');
test.equal(a.dates(), 12, 'dates');
test.equal(a.days(), 3, 'days');
test.equal(a.hours(), 6, 'hours');
test.equal(a.minutes(), 7, 'minutes');
test.equal(a.seconds(), 8, 'seconds');
test.equal(a.milliseconds(), 9, 'milliseconds');
test.done();
},
"setters singular" : function (test) {
test.expect(8);
var a = moment();
a.year(2011);
a.month(9);
a.date(12);
a.hour(6);
a.minute(7);
a.second(8);
a.millisecond(9);
test.equal(a.year(), 2011, 'year');
test.equal(a.month(), 9, 'month');
test.equal(a.date(), 12, 'date');
test.equal(a.day(), 3, 'day');
test.equal(a.hour(), 6, 'hour');
test.equal(a.minute(), 7, 'minute');
test.equal(a.second(), 8, 'second');
test.equal(a.millisecond(), 9, 'milliseconds');
test.done();
},
"setters" : function (test) {
test.expect(9);
var a = moment();
a.year(2011);
a.month(9);
a.date(12);
a.hours(6);
a.minutes(7);
a.seconds(8);
a.milliseconds(9);
test.equal(a.year(), 2011, 'year');
test.equal(a.month(), 9, 'month');
test.equal(a.date(), 12, 'date');
test.equal(a.day(), 3, 'day');
test.equal(a.hours(), 6, 'hour');
test.equal(a.minutes(), 7, 'minute');
test.equal(a.seconds(), 8, 'second');
test.equal(a.milliseconds(), 9, 'milliseconds');
// Test month() behavior. See https://github.com/timrwood/moment/pull/822
a = moment('20130531', 'YYYYMMDD');
a.month(3);
test.equal(a.month(), 3, 'month edge case');
test.done();
},
"setter programmatic" : function (test) {
var a = moment();
a.set('year', 2011);
a.set('month', 9);
a.set('date', 12);
a.set('hours', 6);
a.set('minutes', 7);
a.set('seconds', 8);
a.set('milliseconds', 9);
test.equal(a.year(), 2011, 'year');
test.equal(a.month(), 9, 'month');
test.equal(a.date(), 12, 'date');
test.equal(a.day(), 3, 'day');
test.equal(a.hours(), 6, 'hour');
test.equal(a.minutes(), 7, 'minute');
test.equal(a.seconds(), 8, 'second');
test.equal(a.milliseconds(), 9, 'milliseconds');
// Test month() behavior. See https://github.com/timrwood/moment/pull/822
a = moment('20130531', 'YYYYMMDD');
a.month(3);
test.equal(a.month(), 3, 'month edge case');
test.done();
},
// Disable this, until we weekYear setter is fixed.
// https://github.com/moment/moment/issues/1379
// "setters programatic with weeks" : function (test) {
// var a = moment();
// a.set('weekYear', 2001);
// a.set('week', 49);
// a.set('day', 4);
// test.equals(a.weekYear(), 2001);
// test.equals(a.week(), 49);
// test.equals(a.day(), 4);
// a.set('weekday', 1);
// test.equals(a.weekday(), 1);
// test.done();
// },
// I think this suffers from the same issue as the non-iso version.
// "setters programatic with weeks ISO" : function (test) {
// var a = moment();
// a.set('isoWeekYear', 2001);
// a.set('isoWeek', 49);
// a.set('isoWeekday', 4);
// test.equals(a.weekYear(), 2001);
// test.equals(a.week(), 49);
// test.equals(a.day(), 4);
// test.done();
// },
"setters strings" : function (test) {
test.expect(7);
var a = moment([2012]).lang('en');
test.equal(a.clone().day(0).day('Wednesday').day(), 3, 'day full name');
test.equal(a.clone().day(0).day('Wed').day(), 3, 'day short name');
test.equal(a.clone().day(0).day('We').day(), 3, 'day minimal name');
test.equal(a.clone().day(0).day('invalid').day(), 0, 'invalid day name');
test.equal(a.clone().month(0).month('April').month(), 3, 'month full name');
test.equal(a.clone().month(0).month('Apr').month(), 3, 'month short name');
test.equal(a.clone().month(0).month('invalid').month(), 0, 'invalid month name');
test.done();
},
"setters - falsey values" : function (test) {
test.expect(1);
var a = moment();
// ensure minutes wasn't coincidentally 0 already
a.minutes(1);
a.minutes(0);
test.equal(a.minutes(), 0, 'falsey value');
test.done();
},
"chaining setters" : function (test) {
test.expect(7);
var a = moment();
a.year(2011)
.month(9)
.date(12)
.hours(6)
.minutes(7)
.seconds(8);
test.equal(a.year(), 2011, 'year');
test.equal(a.month(), 9, 'month');
test.equal(a.date(), 12, 'date');
test.equal(a.day(), 3, 'day');
test.equal(a.hours(), 6, 'hour');
test.equal(a.minutes(), 7, 'minute');
test.equal(a.seconds(), 8, 'second');
test.done();
},
"day setter" : function (test) {
test.expect(18);
var a = moment([2011, 0, 15]);
test.equal(moment(a).day(0).date(), 9, 'set from saturday to sunday');
test.equal(moment(a).day(6).date(), 15, 'set from saturday to saturday');
test.equal(moment(a).day(3).date(), 12, 'set from saturday to wednesday');
a = moment([2011, 0, 9]);
test.equal(moment(a).day(0).date(), 9, 'set from sunday to sunday');
test.equal(moment(a).day(6).date(), 15, 'set from sunday to saturday');
test.equal(moment(a).day(3).date(), 12, 'set from sunday to wednesday');
a = moment([2011, 0, 12]);
test.equal(moment(a).day(0).date(), 9, 'set from wednesday to sunday');
test.equal(moment(a).day(6).date(), 15, 'set from wednesday to saturday');
test.equal(moment(a).day(3).date(), 12, 'set from wednesday to wednesday');
test.equal(moment(a).day(-7).date(), 2, 'set from wednesday to last sunday');
test.equal(moment(a).day(-1).date(), 8, 'set from wednesday to last saturday');
test.equal(moment(a).day(-4).date(), 5, 'set from wednesday to last wednesday');
test.equal(moment(a).day(7).date(), 16, 'set from wednesday to next sunday');
test.equal(moment(a).day(13).date(), 22, 'set from wednesday to next saturday');
test.equal(moment(a).day(10).date(), 19, 'set from wednesday to next wednesday');
test.equal(moment(a).day(14).date(), 23, 'set from wednesday to second next sunday');
test.equal(moment(a).day(20).date(), 29, 'set from wednesday to second next saturday');
test.equal(moment(a).day(17).date(), 26, 'set from wednesday to second next wednesday');
test.done();
}
};
var moment = require("../../moment");
exports.invalid = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"invalid" : function (test) {
var m = moment.invalid();
test.equals(m.isValid(), false);
test.equals(m.parsingFlags().userInvalidated, true);
test.ok(isNaN(m.valueOf()));
test.done();
},
"invalid with existing flag" : function (test) {
var m = moment.invalid({invalidMonth : 'whatchamacallit'});
test.equals(m.isValid(), false);
test.equals(m.parsingFlags().userInvalidated, false);
test.equals(m.parsingFlags().invalidMonth, 'whatchamacallit');
test.ok(isNaN(m.valueOf()));
test.done();
},
"invalid with custom flag" : function (test) {
var m = moment.invalid({tooBusyWith : 'reiculating splines'});
test.equals(m.isValid(), false);
test.equals(m.parsingFlags().userInvalidated, false);
test.equals(m.parsingFlags().tooBusyWith, 'reiculating splines');
test.ok(isNaN(m.valueOf()));
test.done();
}
};
var moment = require("../../moment");
exports.isAfter = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"is after without units" : function (test) {
test.expect(17);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, "year is later");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), true, "year is earlier");
test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, "month is later");
test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), true, "month is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, "day is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), true, "day is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, "hour is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), true, "hour is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, "minute is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), true, "minute is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, "second is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), true, "second is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, "millisecond match");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, "millisecond is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), true, "millisecond is earlier");
test.equal(m.isAfter(m), false, "moments are not after themselves");
test.equal(+m, +mCopy, "isAfter second should not change moment");
test.done();
},
"is after year" : function (test) {
test.expect(11);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, "year match");
test.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'years'), true, "plural should work");
test.equal(m.isAfter(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, "year is later");
test.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), true, "year is earlier");
test.equal(m.isAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, "exact start of year");
test.equal(m.isAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, "exact end of year");
test.equal(m.isAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, "start of next year");
test.equal(m.isAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), true, "end of previous year");
test.equal(m.isAfter(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), true, "end of year far before");
test.equal(m.isAfter(m, 'year'), false, "same moments are not after the same year");
test.equal(+m, +mCopy, "isAfter year should not change moment");
test.done();
},
"is after month" : function (test) {
test.expect(13);
var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m);
test.equal(m.isAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, "month match");
test.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'months'), true, "plural should work");
test.equal(m.isAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, "year is later");
test.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), true, "year is earlier");
test.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, "month is later");
test.equal(m.isAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), true, "month is earlier");
test.equal(m.isAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, "exact start of month");
test.equal(m.isAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, "exact end of month");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, "start of next month");
test.equal(m.isAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), true, "end of previous month");
test.equal(m.isAfter(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), true, "later month but earlier year");
test.equal(m.isAfter(m, 'month'), false, "same moments are not after the same month");
test.equal(+m, +mCopy, "isAfter month should not change moment");
test.done();
},
"is after day" : function (test) {
test.expect(15);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, "day match");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'days'), true, "plural should work");
test.equal(m.isAfter(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), false, "year is later");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), true, "year is earlier");
test.equal(m.isAfter(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), false, "month is later");
test.equal(m.isAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), true, "month is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), false, "day is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), true, "day is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, "exact start of day");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, "exact end of day");
test.equal(m.isAfter(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), false, "start of next day");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), true, "end of previous day");
test.equal(m.isAfter(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), true, "later day but earlier year");
test.equal(m.isAfter(m, 'day'), false, "same moments are not after the same day");
test.equal(+m, +mCopy, "isAfter day should not change moment");
test.done();
},
"is after hour" : function (test) {
test.expect(16);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour match");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hours'), true, "plural should work");
test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), false, "year is later");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), true, "year is earlier");
test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), false, "month is later");
test.equal(m.isAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, "month is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), false, "day is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), true, "day is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), false, "hour is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, "exact start of hour");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, "exact end of hour");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), false, "start of next hour");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), true, "end of previous hour");
test.equal(m.isAfter(m, 'hour'), false, "same moments are not after the same hour");
test.equal(+m, +mCopy, "isAfter hour should not change moment");
test.done();
},
"is after minute" : function (test) {
test.expect(18);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, "minute match");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minutes'), true, "plural should work");
test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), false, "year is later");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), true, "year is earlier");
test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), false, "month is later");
test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), true, "month is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), false, "day is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), true, "day is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), false, "hour is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), true, "hour is earler");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), false, "minute is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), true, "minute is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, "exact start of minute");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, "exact end of minute");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), false, "start of next minute");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), true, "end of previous minute");
test.equal(m.isAfter(m, 'minute'), false, "same moments are not after the same minute");
test.equal(+m, +mCopy, "isAfter minute should not change moment");
test.done();
},
"is after second" : function (test) {
test.expect(20);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, "second match");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'seconds'), true, "plural should work");
test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), false, "year is later");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), true, "year is earlier");
test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), false, "month is later");
test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), true, "month is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), false, "day is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), true, "day is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), false, "hour is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), true, "hour is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), false, "minute is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), true, "minute is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), false, "second is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), true, "second is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, "exact start of second");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, "exact end of second");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), false, "start of next second");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), true, "end of previous second");
test.equal(m.isAfter(m, 'second'), false, "same moments are not after the same second");
test.equal(+m, +mCopy, "isAfter second should not change moment");
test.done();
},
"is after millisecond" : function (test) {
test.expect(18);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "millisecond match");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, "plural should work");
test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is later");
test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, "year is earlier");
test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is later");
test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), true, "month is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, "day is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), true, "day is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, "hour is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), true, "hour is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, "minute is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), true, "minute is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, "second is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), true, "second is earlier");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, "millisecond is later");
test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), true, "millisecond is earlier");
test.equal(m.isAfter(m, 'millisecond'), false, "same moments are not after the same millisecond");
test.equal(+m, +mCopy, "isAfter millisecond should not change moment");
test.done();
}
};
var moment = require("../../moment");
exports.isBefore = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"is after without units" : function (test) {
test.expect(17);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), true, "year is later");
test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, "year is earlier");
test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, "month is later");
test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, "month is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, "day is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, "day is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, "hour is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, "hour is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, "minute is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, "minute is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, "second is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, "second is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, "millisecond match");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, "millisecond is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, "millisecond is earlier");
test.equal(m.isBefore(m), false, "moments are not before themselves");
test.equal(+m, +mCopy, "isBefore second should not change moment");
test.done();
},
"is before year" : function (test) {
test.expect(11);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, "year match");
test.equal(m.isBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, "plural should work");
test.equal(m.isBefore(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), true, "year is later");
test.equal(m.isBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), false, "year is earlier");
test.equal(m.isBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, "exact start of year");
test.equal(m.isBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, "exact end of year");
test.equal(m.isBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), true, "start of next year");
test.equal(m.isBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, "end of previous year");
test.equal(m.isBefore(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), false, "end of year far before");
test.equal(m.isBefore(m, 'year'), false, "same moments are not before the same year");
test.equal(+m, +mCopy, "isBefore year should not change moment");
test.done();
},
"is before month" : function (test) {
test.expect(13);
var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m);
test.equal(m.isBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, "month match");
test.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'months'), true, "plural should work");
test.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), true, "year is later");
test.equal(m.isBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), false, "year is earlier");
test.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), true, "month is later");
test.equal(m.isBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, "month is earlier");
test.equal(m.isBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, "exact start of month");
test.equal(m.isBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, "exact end of month");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), true, "start of next month");
test.equal(m.isBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, "end of previous month");
test.equal(m.isBefore(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), false, "later month but earlier year");
test.equal(m.isBefore(m, 'month'), false, "same moments are not before the same month");
test.equal(+m, +mCopy, "isBefore month should not change moment");
test.done();
},
"is before day" : function (test) {
test.expect(15);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, "day match");
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'days'), true, "plural should work");
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), true, "year is later");
test.equal(m.isBefore(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), false, "year is earlier");
test.equal(m.isBefore(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), true, "month is later");
test.equal(m.isBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, "month is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), true, "day is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), false, "day is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, "exact start of day");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, "exact end of day");
test.equal(m.isBefore(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), true, "start of next day");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), false, "end of previous day");
test.equal(m.isBefore(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), false, "later day but earlier year");
test.equal(m.isBefore(m, 'day'), false, "same moments are not before the same day");
test.equal(+m, +mCopy, "isBefore day should not change moment");
test.done();
},
"is before hour" : function (test) {
test.expect(16);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour match");
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hours'), true, "plural should work");
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), true, "year is later");
test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), false, "year is earlier");
test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), true, "month is later");
test.equal(m.isBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), false, "month is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), true, "day is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), false, "day is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), true, "hour is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, "exact start of hour");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, "exact end of hour");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), true, "start of next hour");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), false, "end of previous hour");
test.equal(m.isBefore(m, 'hour'), false, "same moments are not before the same hour");
test.equal(+m, +mCopy, "isBefore hour should not change moment");
test.done();
},
"is before minute" : function (test) {
test.expect(18);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, "minute match");
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minutes'), true, "plural should work");
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), true, "year is later");
test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), false, "year is earlier");
test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), true, "month is later");
test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, "month is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), true, "day is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), false, "day is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), true, "hour is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), false, "hour is earler");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), true, "minute is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), false, "minute is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, "exact start of minute");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, "exact end of minute");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), true, "start of next minute");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), false, "end of previous minute");
test.equal(m.isBefore(m, 'minute'), false, "same moments are not before the same minute");
test.equal(+m, +mCopy, "isBefore minute should not change moment");
test.done();
},
"is before second" : function (test) {
test.expect(20);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, "second match");
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'seconds'), true, "plural should work");
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), true, "year is later");
test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), false, "year is earlier");
test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), true, "month is later");
test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, "month is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), true, "day is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), false, "day is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), true, "hour is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), false, "hour is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), true, "minute is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), false, "minute is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), true, "second is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), false, "second is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, "exact start of second");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, "exact end of second");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), true, "start of next second");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), false, "end of previous second");
test.equal(m.isBefore(m, 'second'), false, "same moments are not before the same second");
test.equal(+m, +mCopy, "isBefore second should not change moment");
test.done();
},
"is before millisecond" : function (test) {
test.expect(18);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "millisecond match");
test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), false, "plural should work");
test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, "year is later");
test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is earlier");
test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), true, "month is later");
test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), true, "day is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, "day is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), true, "hour is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, "hour is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), true, "minute is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, "minute is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), true, "second is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, "second is earlier");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), true, "millisecond is later");
test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, "millisecond is earlier");
test.equal(m.isBefore(m, 'millisecond'), false, "same moments are not before the same millisecond");
test.equal(+m, +mCopy, "isBefore millisecond should not change moment");
test.done();
}
};
var moment = require('../../moment');
exports.isMoment = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"is moment object": function (test) {
test.expect(13);
var MyObj = function () {},
extend = function (a, b) {
var i;
for (i in b) {
a[i] = b[i];
}
return a;
};
MyObj.prototype.toDate = function () {
return new Date();
};
test.ok(moment.isMoment(moment()), 'simple moment object');
test.ok(moment.isMoment(moment(null)), 'invalid moment object');
test.ok(moment.isMoment(extend({}, moment())), 'externally cloned moments are moments');
test.ok(moment.isMoment(extend({}, moment.utc())), 'externally cloned utc moments are moments');
test.ok(!moment.isMoment(new MyObj()), 'myObj is not moment object');
test.ok(!moment.isMoment(moment), 'moment function is not moment object');
test.ok(!moment.isMoment(new Date()), 'date object is not moment object');
test.ok(!moment.isMoment(Object), 'Object is not moment object');
test.ok(!moment.isMoment('foo'), 'string is not moment object');
test.ok(!moment.isMoment(1), 'number is not moment object');
test.ok(!moment.isMoment(NaN), 'NaN is not moment object');
test.ok(!moment.isMoment(null), 'null is not moment object');
test.ok(!moment.isMoment(undefined), 'undefined is not moment object');
test.done();
}
};
var moment = require("../../moment");
exports.isSame = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"is same without units" : function (test) {
test.expect(17);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
test.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, "year is later");
test.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, "year is earlier");
test.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, "month is later");
test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, "month is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, "day is later");
test.equal(m.isSame(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, "day is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, "hour is later");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, "hour is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, "minute is later");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, "minute is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, "second is later");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, "second is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, "millisecond match");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, "millisecond is later");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, "millisecond is earlier");
test.equal(m.isSame(m), true, "moments are the same as themselves");
test.equal(+m, +mCopy, "isSame second should not change moment");
test.done();
},
"is same year" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, "year match");
test.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, "plural should work");
test.equal(m.isSame(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), false, "year mismatch");
test.equal(m.isSame(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, "exact start of year");
test.equal(m.isSame(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, "exact end of year");
test.equal(m.isSame(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, "start of next year");
test.equal(m.isSame(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, "end of previous year");
test.equal(m.isSame(m, 'year'), true, "same moments are in the same year");
test.equal(+m, +mCopy, "isSame year should not change moment");
test.done();
},
"is same month" : function (test) {
test.expect(10);
var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m);
test.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, "month match");
test.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, "plural should work");
test.equal(m.isSame(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, "year mismatch");
test.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, "month mismatch");
test.equal(m.isSame(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, "exact start of month");
test.equal(m.isSame(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, "exact end of month");
test.equal(m.isSame(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, "start of next month");
test.equal(m.isSame(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, "end of previous month");
test.equal(m.isSame(m, 'month'), true, "same moments are in the same month");
test.equal(+m, +mCopy, "isSame month should not change moment");
test.done();
},
"is same day" : function (test) {
test.expect(11);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, "day match");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, "plural should work");
test.equal(m.isSame(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), false, "year mismatch");
test.equal(m.isSame(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, "month mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), false, "day mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, "exact start of day");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, "exact end of day");
test.equal(m.isSame(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), false, "start of next day");
test.equal(m.isSame(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), false, "end of previous day");
test.equal(m.isSame(m, 'day'), true, "same moments are in the same day");
test.equal(+m, +mCopy, "isSame day should not change moment");
test.done();
},
"is same hour" : function (test) {
test.expect(12);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, "hour match");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, "plural should work");
test.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), false, "year mismatch");
test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), false, "month mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), false, "day mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), false, "hour mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, "exact start of hour");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, "exact end of hour");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), false, "start of next hour");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), false, "end of previous hour");
test.equal(m.isSame(m, 'hour'), true, "same moments are in the same hour");
test.equal(+m, +mCopy, "isSame hour should not change moment");
test.done();
},
"is same minute" : function (test) {
test.expect(13);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, "minute match");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, "plural should work");
test.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), false, "year mismatch");
test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, "month mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), false, "day mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), false, "hour mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), false, "minute mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, "exact start of minute");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, "exact end of minute");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), false, "start of next minute");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, "end of previous minute");
test.equal(m.isSame(m, 'minute'), true, "same moments are in the same minute");
test.equal(+m, +mCopy, "isSame minute should not change moment");
test.done();
},
"is same second" : function (test) {
test.expect(14);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, "second match");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, "plural should work");
test.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), false, "year mismatch");
test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, "month mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), false, "day mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), false, "hour mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), false, "minute mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), false, "second mismatch");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, "exact start of second");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, "exact end of second");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), false, "start of next second");
test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, "end of previous second");
test.equal(m.isSame(m, 'second'), true, "same moments are in the same second");
test.equal(+m, +mCopy, "isSame second should not change moment");
test.done();
},
"is same millisecond" : function (test) {
test.expect(18);
var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, "millisecond match");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, "plural should work");
test.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is later");
test.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is earlier");
test.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is later");
test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, "day is later");
test.equal(m.isSame(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, "day is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, "hour is later");
test.equal(m.isSame(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, "hour is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, "minute is later");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, "minute is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, "second is later");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, "second is earlier");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, "millisecond is later");
test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, "millisecond is earlier");
test.equal(m.isSame(m, 'millisecond'), true, "same moments are in the same millisecond");
test.equal(+m, +mCopy, "isSame millisecond should not change moment");
test.done();
},
"is same with zone'd moments" : function (test) {
test.expect(3);
test.ok(moment.parseZone('2013-02-01T-05:00').isSame(moment('2013-02-01'), 'year'), "zoned vs local moment");
test.ok(moment('2013-02-01').isSame(moment('2013-02-01').zone('-05:00'), 'year'), "local vs zoned moment");
test.ok(moment.parseZone('2013-02-01T-05:00').isSame(moment.parseZone('2013-02-01T-06:30'), 'year'),
"zoned vs (differently) zoned moment");
test.done();
}
};
var moment = require("../../moment");
exports.isValid = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"array bad month" : function (test) {
test.expect(2);
test.equal(moment([2010, -1]).isValid(), false, 'month -1 invalid');
test.equal(moment([2100, 12]).isValid(), false, 'month 12 invalid');
test.done();
},
"array good month" : function (test) {
test.expect(12 * 2);
for (var i = 0; i < 12; i++) {
test.equal(moment([2010, i]).isValid(), true, 'month ' + i);
test.equal(moment.utc([2010, i]).isValid(), true, 'month ' + i);
}
test.done();
},
"array bad date" : function (test) {
var tests = [
moment([2010, 0, 0]),
moment([2100, 0, 32]),
moment.utc([2010, 0, 0]),
moment.utc([2100, 0, 32])
],
i, m;
test.expect(tests.length);
for (i in tests) {
m = tests[i];
test.equal(m.isValid(), false);
}
test.done();
},
"array bad date leap year" : function (test) {
test.expect(8);
test.equal(moment([2010, 1, 29]).isValid(), false, '2010 feb 29');
test.equal(moment([2100, 1, 29]).isValid(), false, '2100 feb 29');
test.equal(moment([2008, 1, 30]).isValid(), false, '2008 feb 30');
test.equal(moment([2000, 1, 30]).isValid(), false, '2000 feb 30');
test.equal(moment.utc([2010, 1, 29]).isValid(), false, 'utc 2010 feb 29');
test.equal(moment.utc([2100, 1, 29]).isValid(), false, 'utc 2100 feb 29');
test.equal(moment.utc([2008, 1, 30]).isValid(), false, 'utc 2008 feb 30');
test.equal(moment.utc([2000, 1, 30]).isValid(), false, 'utc 2000 feb 30');
test.done();
},
"string + formats bad date" : function (test) {
test.equal(moment('2020-00-00', []).isValid(), false, 'invalid on empty array');
test.equal(moment('2020-00-00', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), false, 'invalid on all in array');
test.equal(moment('2020-00-00', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'invalid on all in array');
test.equal(moment('2020-01-01', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), true, 'valid on first');
test.equal(moment('2020-01-01', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), true, 'valid on last');
test.equal(moment('2020-01-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on both');
test.equal(moment('2020-13-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on last');
test.equal(moment('12-13-2012', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'month rollover');
test.equal(moment('12-13-2012', ['DD-MM-YYYY', 'DD-MM-YYYY']).isValid(), false, 'month rollover');
test.equal(moment('38-12-2012', ['DD-MM-YYYY']).isValid(), false, 'day rollover');
test.done();
},
"string nonsensical with format" : function (test) {
test.expect(2);
test.equal(moment('fail', "MM-DD-YYYY").isValid(), false, 'string "fail" with format "MM-DD-YYYY"');
test.equal(moment("xx-xx-2001", 'DD-MM-YYY').isValid(), true, 'string "xx-xx-2001" with format "MM-DD-YYYY"');
test.done();
},
"string with bad month name" : function (test) {
test.expect(2);
moment.lang('en');
test.equal(moment('01-Nam-2012', 'DD-MMM-YYYY').isValid(), false, '"Nam" is an invalid month');
test.equal(moment('01-Aug-2012', 'DD-MMM-YYYY').isValid(), true, '"Aug" is a valid month');
test.done();
},
"string with spaceless format" : function (test) {
test.expect(1);
test.equal(moment('10Sep2001', 'DDMMMYYYY').isValid(), true, "Parsing 10Sep2001 should result in a valid date");
test.done();
},
"invalid string iso 8601" : function (test) {
var tests = [
'2010-00-00',
'2010-01-00',
'2010-01-40',
'2010-01-01T24',
'2010-01-01T23:60',
'2010-01-01T23:59:60'
], i;
test.expect(tests.length * 2);
for (i = 0; i < tests.length; i++) {
test.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid');
test.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid');
}
test.done();
},
"invalid string iso 8601 + timezone" : function (test) {
var tests = [
'2010-00-00T+00:00',
'2010-01-00T+00:00',
'2010-01-40T+00:00',
'2010-01-40T24+00:00',
'2010-01-40T23:60+00:00',
'2010-01-40T23:59:60+00:00',
'2010-01-40T23:59:59.9999+00:00'
], i;
test.expect(tests.length * 2);
for (i = 0; i < tests.length; i++) {
test.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid');
test.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid');
}
test.done();
},
"valid string iso 8601 + timezone" : function (test) {
var tests = [
'2010-01-01',
'2010-01-30',
'2010-01-30T23+00:00',
'2010-01-30T23:59+00:00',
'2010-01-30T23:59:59+00:00',
'2010-01-30T23:59:59.999+00:00',
'2010-01-30T23:59:59.999-07:00',
'2010-01-30T00:00:00.000+07:00',
'2010-01-30T00:00:00.000+07'
], i;
test.expect(tests.length * 2);
for (i = 0; i < tests.length; i++) {
test.equal(moment(tests[i]).isValid(), true, tests[i] + ' should be valid');
test.equal(moment.utc(tests[i]).isValid(), true, tests[i] + ' should be valid');
}
test.done();
},
"invalidAt" : function (test) {
test.expect(7);
test.equal(moment([2000, 12]).invalidAt(), 1, 'month 12 is invalid: 0-11');
test.equal(moment([2000, 1, 30]).invalidAt(), 2, '30 is not a valid february day');
test.equal(moment([2000, 1, 29, 24]).invalidAt(), 3, '24 is invalid hour');
test.equal(moment([2000, 1, 29, 23, 60]).invalidAt(), 4, '60 is invalid minute');
test.equal(moment([2000, 1, 29, 23, 59, 60]).invalidAt(), 5, '60 is invalid second');
test.equal(moment([2000, 1, 29, 23, 59, 59, 1000]).invalidAt(), 6, '1000 is invalid millisecond');
test.equal(moment([2000, 1, 29, 23, 59, 59, 999]).invalidAt(), -1, '-1 if everything is fine');
test.done();
},
"valid Unix timestamp" : function (test) {
test.expect(21);
test.equal(moment(1371065286, "X").isValid(), true, 'number integer');
test.equal(moment(1379066897.0, "X").isValid(), true, 'number whole 1dp');
test.equal(moment(1379066897.7, "X").isValid(), true, 'number 1dp');
test.equal(moment(1379066897.00, "X").isValid(), true, 'number whole 2dp');
test.equal(moment(1379066897.07, "X").isValid(), true, 'number 2dp');
test.equal(moment(1379066897.17, "X").isValid(), true, 'number 2dp');
test.equal(moment(1379066897.000, "X").isValid(), true, 'number whole 3dp');
test.equal(moment(1379066897.007, "X").isValid(), true, 'number 3dp');
test.equal(moment(1379066897.017, "X").isValid(), true, 'number 3dp');
test.equal(moment(1379066897.157, "X").isValid(), true, 'number 3dp');
test.equal(moment("1371065286", "X").isValid(), true, 'string integer');
test.equal(moment("1379066897.", "X").isValid(), true, 'string trailing .');
test.equal(moment("1379066897.0", "X").isValid(), true, 'string whole 1dp');
test.equal(moment("1379066897.7", "X").isValid(), true, 'string 1dp');
test.equal(moment("1379066897.00", "X").isValid(), true, 'string whole 2dp');
test.equal(moment("1379066897.07", "X").isValid(), true, 'string 2dp');
test.equal(moment("1379066897.17", "X").isValid(), true, 'string 2dp');
test.equal(moment("1379066897.000", "X").isValid(), true, 'string whole 3dp');
test.equal(moment("1379066897.007", "X").isValid(), true, 'string 3dp');
test.equal(moment("1379066897.017", "X").isValid(), true, 'string 3dp');
test.equal(moment("1379066897.157", "X").isValid(), true, 'string 3dp');
test.done();
},
"invalid Unix timestamp" : function (test) {
test.expect(8);
test.equal(moment(undefined, "X").isValid(), false, 'undefined');
test.equal(moment("undefined", "X").isValid(), false, 'string undefined');
try {
test.equal(moment(null, "X").isValid(), false, 'null');
} catch (e) {
test.ok(true, 'null');
}
test.equal(moment("null", "X").isValid(), false, 'string null');
test.equal(moment([], "X").isValid(), false, 'array');
test.equal(moment("{}", "X").isValid(), false, 'object');
try {
test.equal(moment("", "X").isValid(), false, 'string empty');
} catch (e) {
test.ok(true, 'string empty');
}
test.equal(moment(" ", "X").isValid(), false, 'string space');
test.done();
},
"empty" : function (test) {
test.equal(moment(null).isValid(), false, 'null');
test.equal(moment('').isValid(), false, 'empty string');
test.equal(moment(null, 'YYYY').isValid(), false, 'format + null');
test.equal(moment('', 'YYYY').isValid(), false, 'format + empty string');
test.equal(moment(' ', 'YYYY').isValid(), false, 'format + empty when trimmed');
test.done();
},
"days of the year" : function (test) {
test.equal(moment('2010 300', 'YYYY DDDD').isValid(), true, 'day 300 of year valid');
test.equal(moment('2010 365', 'YYYY DDDD').isValid(), true, 'day 365 of year valid');
test.equal(moment('2010 366', 'YYYY DDDD').isValid(), false, 'day 366 of year invalid');
test.equal(moment('2012 365', 'YYYY DDDD').isValid(), true, 'day 365 of leap year valid');
test.equal(moment('2012 366', 'YYYY DDDD').isValid(), true, 'day 366 of leap year valid');
test.equal(moment('2012 367', 'YYYY DDDD').isValid(), false, 'day 367 of leap year invalid');
test.done();
},
"oddball permissiveness" : function (test) {
//https://github.com/moment/moment/issues/1128
test.ok(moment("2010-10-3199", ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD"]).isValid());
//https://github.com/moment/moment/issues/1122
test.ok(moment("3:25", ["h:mma", "hh:mma", "H:mm", "HH:mm"]).isValid());
test.done();
}
};
var moment = require("../../moment");
exports.lang = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"library getter" : function (test) {
var r;
test.expect(8);
r = moment.lang('en');
test.equal(r, 'en', 'Lang should return en by default');
test.equal(moment.lang(), 'en', 'Lang should return en by default');
moment.lang('fr');
test.equal(moment.lang(), 'fr', 'Lang should return the changed language');
moment.lang('en-gb');
test.equal(moment.lang(), 'en-gb', 'Lang should return the changed language');
moment.lang('en');
test.equal(moment.lang(), 'en', 'Lang should reset');
moment.lang('does-not-exist');
test.equal(moment.lang(), 'en', 'Lang should reset');
moment.lang('EN');
test.equal(moment.lang(), 'en', 'Normalize language key case');
moment.lang('EN_gb');
test.equal(moment.lang(), 'en-gb', 'Normalize language key underscore');
test.done();
},
"library getter array of langs" : function (test) {
test.equal(moment.lang(['non-existent', 'fr', 'also-non-existent']), 'fr', "passing an array uses the first valid language");
test.equal(moment.lang(['es', 'fr', 'also-non-existent']), 'es', "passing an array uses the first valid language");
test.done();
},
"library getter language substrings" : function (test) {
test.equal(moment.lang('fr-crap'), 'fr', "use substrings");
test.equal(moment.lang('fr-does-not-exist'), 'fr', "uses deep substrings");
test.equal(moment.lang('fr-CA-does-not-exist'), 'fr-ca', "uses deepest substring");
test.done();
},
"library getter language array and substrings" : function (test) {
test.equal(moment.lang(['en-CH', 'fr']), 'en', "prefer root languages to shallower ones");
test.equal(moment.lang(['en-gb-leeds', 'en-CA']), 'en-gb', "prefer root languages to shallower ones");
test.equal(moment.lang(['en-fake', 'en-CA']), 'en-ca', "prefer alternatives with shared roots");
test.equal(moment.lang(['en-fake', 'en-fake2', 'en-ca']), 'en-ca', "prefer alternatives with shared roots");
test.equals(moment.lang(['fake-CA', 'fake-MX', 'fr']), 'fr', "always find something if possible");
test.equals(moment.lang(['fake-CA', 'fake-MX', 'fr']), 'fr', "always find something if possible");
test.equals(moment.lang(['fake-CA', 'fake-MX', 'fr-fake-fake-fake']), 'fr', "always find something if possible");
test.equals(moment.lang(['en', 'en-CA']), 'en', "prefer earlier if it works");
test.done();
},
"library ensure inheritance" : function (test) {
test.expect(2);
moment.lang('made-up', {
// I put them out of order
months : "February_March_April_May_June_July_August_September_October_November_December_January".split("_")
// the rest of the properties should be inherited.
});
test.equal(moment([2012, 5, 6]).format('MMMM'), 'July', 'Override some of the configs');
test.equal(moment([2012, 5, 6]).format('MMM'), 'Jun', 'But not all of them');
test.done();
},
"library ensure inheritance LT L LL LLL LLLL" : function (test) {
test.expect(5);
var lang = 'test-inherit-lt';
moment.lang(lang, {
longDateFormat : {
LT : "-[LT]-",
L : "-[L]-",
LL : "-[LL]-",
LLL : "-[LLL]-",
LLLL : "-[LLLL]-"
},
calendar : {
sameDay : '[sameDay] LT',
nextDay : '[nextDay] L',
nextWeek : '[nextWeek] LL',
lastDay : '[lastDay] LLL',
lastWeek : '[lastWeek] LLLL',
sameElse : 'L'
}
});
moment.lang('es');
test.equal(moment().lang(lang).calendar(), "sameDay -LT-", "Should use instance lang in LT formatting");
test.equal(moment().add('days', 1).lang(lang).calendar(), "nextDay -L-", "Should use instance lang in L formatting");
test.equal(moment().add('days', -1).lang(lang).calendar(), "lastDay -LLL-", "Should use instance lang in LL formatting");
test.equal(moment().add('days', 4).lang(lang).calendar(), "nextWeek -LL-", "Should use instance lang in LLL formatting");
test.equal(moment().add('days', -4).lang(lang).calendar(), "lastWeek -LLLL-", "Should use instance lang in LLLL formatting");
test.done();
},
"library langData" : function (test) {
test.expect(3);
moment.lang('en');
var jan = moment([2000, 0]);
test.equal(moment.langData().months(jan), 'January', 'no arguments returns global');
test.equal(moment.langData('zh-cn').months(jan), '一月', 'a string returns the language based on key');
test.equal(moment.langData(moment().lang('es')).months(jan), 'enero', "if you pass in a moment it uses the moment's language");
test.done();
},
"instance lang method" : function (test) {
test.expect(3);
moment.lang('en');
test.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Normally default to global');
test.equal(moment([2012, 5, 6]).lang('es').format('MMMM'), 'junio', 'Use the instance specific language');
test.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Using an instance specific language does not affect other moments');
test.done();
},
"instance lang method with array" : function (test) {
var m = moment().lang(['non-existent', 'fr', 'also-non-existent']);
test.equal(m.lang()._abbr, 'fr', "passing an array uses the first valid language");
m = moment().lang(['es', 'fr', 'also-non-existent']);
test.equal(m.lang()._abbr, 'es', "passing an array uses the first valid language");
test.done();
},
"instance getter language substrings" : function (test) {
var m = moment();
m.lang('fr-crap');
test.equal(m.lang()._abbr, 'fr', "use substrings");
m.lang('fr-does-not-exist');
test.equal(m.lang()._abbr, 'fr', "uses deep substrings");
test.done();
},
"instance lang persists with manipulation" : function (test) {
test.expect(3);
moment.lang('en');
test.equal(moment([2012, 5, 6]).lang('es').add({days: 1}).format('MMMM'), 'junio', 'With addition');
test.equal(moment([2012, 5, 6]).lang('es').day(0).format('MMMM'), 'junio', 'With day getter');
test.equal(moment([2012, 5, 6]).lang('es').endOf('day').format('MMMM'), 'junio', 'With endOf');
test.done();
},
"instance lang persists with cloning" : function (test) {
test.expect(2);
moment.lang('en');
var a = moment([2012, 5, 6]).lang('es'),
b = a.clone(),
c = moment(a);
test.equal(b.format('MMMM'), 'junio', 'using moment.fn.clone()');
test.equal(b.format('MMMM'), 'junio', 'using moment()');
test.done();
},
"duration lang method" : function (test) {
test.expect(3);
moment.lang('en');
test.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Normally default to global');
test.equal(moment.duration({seconds: 44}).lang('es').humanize(), 'unos segundos', 'Use the instance specific language');
test.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Using an instance specific language does not affect other durations');
test.done();
},
"duration lang persists with cloning" : function (test) {
test.expect(1);
moment.lang('en');
var a = moment.duration({seconds: 44}).lang('es'),
b = moment.duration(a);
test.equal(b.humanize(), 'unos segundos', 'using moment.duration()');
test.done();
},
"instance lang used with from" : function (test) {
test.expect(2);
moment.lang('en');
var a = moment([2012, 5, 6]).lang('es'),
b = moment([2012, 5, 7]);
test.equal(a.from(b), 'hace un día', 'preserve language of first moment');
test.equal(b.from(a), 'in a day', 'do not preserve language of second moment');
test.done();
},
"month name callback function" : function (test) {
test.expect(3);
function fakeReplace(m, format) {
if (/test/.test(format)) {
return "test";
}
if (m.date() === 1) {
return "date";
}
return 'default';
}
moment.lang('made-up-2', {
months : fakeReplace,
monthsShort : fakeReplace,
weekdays : fakeReplace,
weekdaysShort : fakeReplace,
weekdaysMin : fakeReplace
});
test.equal(moment().format('[test] dd ddd dddd MMM MMMM'), 'test test test test test test', 'format month name function should be able to access the format string');
test.equal(moment([2011, 0, 1]).format('dd ddd dddd MMM MMMM'), 'date date date date date', 'format month name function should be able to access the moment object');
test.equal(moment([2011, 0, 2]).format('dd ddd dddd MMM MMMM'), 'default default default default default', 'format month name function should be able to access the moment object');
test.done();
},
"changing parts of a language config" : function (test) {
test.expect(2);
moment.lang('partial-lang', {
months : 'a b c d e f g h i j k l'.split(' ')
});
test.equal(moment([2011, 0, 1]).format('MMMM'), 'a', 'should be able to set language values when creating the language');
moment.lang('partial-lang', {
monthsShort : 'A B C D E F G H I J K L'.split(' ')
});
test.equal(moment([2011, 0, 1]).format('MMMM MMM'), 'a A', 'should be able to set language values after creating the language');
test.done();
},
"start/endOf week feature for first-day-is-monday langs" : function (test) {
test.expect(2);
moment.lang('monday-lang', {
week : {
dow : 1 // Monday is the first day of the week
}
});
moment.lang('monday-lang');
test.equal(moment([2013, 0, 1]).startOf('week').day(), 1, 'for lang monday-lang first day of the week should be monday');
test.equal(moment([2013, 0, 1]).endOf('week').day(), 0, 'for lang monday-lang last day of the week should be sunday');
test.done();
},
"meridiem parsing" : function (test) {
test.expect(2);
moment.lang('meridiem-parsing', {
meridiemParse : /[bd]/i,
isPM : function (input) {
return input === 'b';
}
});
moment.lang('meridiem-parsing');
test.equal(moment('2012-01-01 3b', 'YYYY-MM-DD ha').hour(), 15, 'Custom parsing of meridiem should work');
test.equal(moment('2012-01-01 3d', 'YYYY-MM-DD ha').hour(), 3, 'Custom parsing of meridiem should work');
test.done();
},
"invalid date formatting" : function (test) {
moment.lang('has-invalid', {
invalidDate: 'KHAAAAAAAAAAAN!'
});
test.equal(moment.invalid().format(), "KHAAAAAAAAAAAN!");
test.equal(moment.invalid().format('YYYY-MM-DD'), "KHAAAAAAAAAAAN!");
test.done();
},
"return lang name" : function (test) {
test.expect(1);
var registered = moment.lang('return-this', {});
test.equal(registered, 'return-this', 'returns the language configured');
test.done();
}
};
var moment = require("../../moment");
exports.leapyear = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"leap year" : function (test) {
test.expect(4);
test.equal(moment([2010, 0, 1]).isLeapYear(), false, '2010');
test.equal(moment([2100, 0, 1]).isLeapYear(), false, '2100');
test.equal(moment([2008, 0, 1]).isLeapYear(), true, '2008');
test.equal(moment([2000, 0, 1]).isLeapYear(), true, '2000');
test.done();
}
};
var moment = require("../../moment");
exports.listers = {
setUp : function (cb) {
moment.lang('en');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"default" : function (test) {
test.expect(5);
test.deepEqual(moment.months(), ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
test.deepEqual(moment.monthsShort(), ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]);
test.deepEqual(moment.weekdays(), ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);
test.deepEqual(moment.weekdaysShort(), ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]);
test.deepEqual(moment.weekdaysMin(), ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]);
test.done();
},
"index" : function (test) {
test.equal(moment.months(0), "January");
test.equal(moment.months(2), "March");
test.equal(moment.monthsShort(0), "Jan");
test.equal(moment.monthsShort(2), "Mar");
test.equal(moment.weekdays(0), "Sunday");
test.equal(moment.weekdays(2), "Tuesday");
test.equal(moment.weekdaysShort(0), "Sun");
test.equal(moment.weekdaysShort(2), "Tue");
test.equal(moment.weekdaysMin(0), "Su");
test.equal(moment.weekdaysMin(2), "Tu");
test.done();
},
"localized" : function (test) {
var months = "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split('_'),
monthsShort = "on_tw_th_fo_fi_si_se_ei_ni_te_el_tw".split("_"),
weekdays = "one_two_three_four_five_six_seven".split("_"),
weekdaysShort = "on_tw_th_fo_fi_si_se".split("_"),
weekdaysMin = "1_2_3_4_5_6_7".split("_");
moment.lang('numerologists', {
months : months,
monthsShort : monthsShort,
weekdays : weekdays,
weekdaysShort: weekdaysShort,
weekdaysMin: weekdaysMin
});
test.deepEqual(moment.months(), months);
test.deepEqual(moment.monthsShort(), monthsShort);
test.deepEqual(moment.weekdays(), weekdays);
test.deepEqual(moment.weekdaysShort(), weekdaysShort);
test.deepEqual(moment.weekdaysMin(), weekdaysMin);
test.equal(moment.months(0), "one");
test.equal(moment.monthsShort(0), "on");
test.equal(moment.weekdays(0), "one");
test.equal(moment.weekdaysShort(0), "on");
test.equal(moment.weekdaysMin(0), "1");
test.equal(moment.months(2), "three");
test.equal(moment.monthsShort(2), "th");
test.equal(moment.weekdays(2), "three");
test.equal(moment.weekdaysShort(2), "th");
test.equal(moment.weekdaysMin(2), "3");
test.done();
},
"with functions" : function (test) {
var monthsShort = "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split('_'),
monthsShortWeird = "onesy_twosy_threesy_foursy_fivesy_sixsy_sevensy_eightsy_ninesy_tensy_elevensy_twelvesy".split('_');
moment.lang("difficult", {
monthsShort: function (m, format) {
var arr = format.match(/-MMM-/) ? monthsShortWeird : monthsShort;
return arr[m.month()];
}
});
test.expect(6);
test.deepEqual(moment.monthsShort(), monthsShort);
test.deepEqual(moment.monthsShort('MMM'), monthsShort);
test.deepEqual(moment.monthsShort('-MMM-'), monthsShortWeird);
test.deepEqual(moment.monthsShort('MMM', 2), 'three');
test.deepEqual(moment.monthsShort('-MMM-', 2), 'threesy');
test.deepEqual(moment.monthsShort(2), 'three');
test.done();
}
};
var moment = require("../../moment");
var equalMoment = function (test, a, b, msg) {
test.equal(a.valueOf(), b.valueOf(), msg);
};
exports.minMax = {
setUp : function (cb) {
moment.lang('en');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"min" : function (test) {
test.expect(6);
var now = moment(),
future = now.clone().add(1, 'month'),
past = now.clone().subtract(1, 'month');
equalMoment(test, past.min(now), now, "A past date with the minimum of now should be now");
equalMoment(test, past.min(future), future, "A past date with the minimum of the future should be the future date");
equalMoment(test, future.min(now), future, "A future date with the minimum of now should be the future");
equalMoment(test, future.min(past), future, "A future date with the minimum of the past should be the future");
equalMoment(test, now.min(past), now, "Now with the minimum of the past should be now");
equalMoment(test, now.min(future), future, "Now with the minimum of the future should be the future");
test.done();
},
"max" : function (test) {
test.expect(6);
var now = moment(),
future = now.clone().add(1, 'month'),
past = now.clone().subtract(1, 'month');
equalMoment(test, past.max(now), past, "A past date with the maximum of now should be the past");
equalMoment(test, past.max(future), past, "A past date with the maximum of the future should be the past");
equalMoment(test, future.max(now), now, "A future date with the maximum of now should be now");
equalMoment(test, future.max(past), past, "A future date with the maximum of the past should be the past");
equalMoment(test, now.max(past), past, "Now with the maximum of the past should be the past");
equalMoment(test, now.max(future), now, "Now with the maximum of the future should be now");
test.done();
}
};
var moment = require("../../moment");
exports.mutable = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"manipulation methods" : function (test) {
var mutableMethods = {
'year': function (m) { return m.year(2011); },
'month': function (m) { return m.month(1); },
'date': function (m) { return m.date(9); },
'hours': function (m) { return m.hours(7); },
'minutes': function (m) { return m.minutes(33); },
'seconds': function (m) { return m.seconds(44); },
'milliseconds': function (m) { return m.milliseconds(55); },
'day': function (m) { return m.day(2); },
'startOf': function (m) { return m.startOf('week'); },
'endOf': function (m) { return m.endOf('week'); },
'add': function (m) { return m.add('days', 1); },
'subtract': function (m) { return m.subtract('years', 2); },
'local': function (m) { return m.local(); },
'utc': function (m) { return m.utc(); }
}, method, d, d2;
test.expect(14);
for (method in mutableMethods) {
if (mutableMethods.hasOwnProperty(method)) {
d = moment();
d2 = mutableMethods[method](d);
test.equal(d, d2, method + "() should be mutable");
}
}
test.done();
},
"non mutable methods" : function (test) {
var nonMutableMethods = {
'clone': function (m) { return m.clone(); }
}, method, d, d2;
test.expect(1);
for (method in nonMutableMethods) {
if (nonMutableMethods.hasOwnProperty(method)) {
d = new Date();
d2 = nonMutableMethods[method](moment(d)).toDate();
test.notEqual(d, d2, method + "() should not be mutable");
}
}
test.done();
}
};
/*global require, exports */
var moment = require("../../moment");
exports.normalizeUnits = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"normalize units" : function (test) {
var fullKeys = ["year", "quarter", "month", "isoWeek", "week", "day", "hour", "minute", "second", "millisecond", "date", 'dayOfYear', 'weekday', 'isoWeekday', 'weekYear', 'isoWeekYear'],
aliases = ["y", "Q", "M", "W", "w", "d", "h", "m", "s", "ms", "D", 'DDD', 'e', 'E', 'gg', 'GG'],
length = fullKeys.length,
fullKey,
fullKeyCaps,
fullKeyPlural,
fullKeyCapsPlural,
fullKeyLower,
alias,
index;
for (index = 0; index < length; index += 1) {
fullKey = fullKeys[index];
fullKeyCaps = fullKey.toUpperCase();
fullKeyLower = fullKey.toLowerCase();
fullKeyPlural = fullKey + "s";
fullKeyCapsPlural = fullKeyCaps + "s";
alias = aliases[index];
test.equal(moment.normalizeUnits(fullKey), fullKey, "Testing full key " + fullKey);
test.equal(moment.normalizeUnits(fullKeyCaps), fullKey, "Testing full key capitalised " + fullKey);
test.equal(moment.normalizeUnits(fullKeyPlural), fullKey, "Testing full key plural " + fullKey);
test.equal(moment.normalizeUnits(fullKeyCapsPlural), fullKey, "Testing full key capitalised and plural " + fullKey);
test.equal(moment.normalizeUnits(alias), fullKey, "Testing alias " + fullKey);
}
test.done();
}
};
var moment = require('../../moment'),
flags = function () {
return moment.apply(null, arguments).parsingFlags();
};
exports.parsingFlags = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
'overflow with array' : function (test) {
//months
test.equal(flags([2010, 0]).overflow, -1, 'month 0 valid');
test.equal(flags([2010, 1]).overflow, -1, 'month 1 valid');
test.equal(flags([2010, -1]).overflow, 1, 'month -1 invalid');
test.equal(flags([2100, 12]).overflow, 1, 'month 12 invalid');
//days
test.equal(flags([2010, 1, 16]).overflow, -1, 'date valid');
test.equal(flags([2010, 1, -1]).overflow, 2, 'date -1 invalid');
test.equal(flags([2010, 1, 0]).overflow, 2, 'date 0 invalid');
test.equal(flags([2010, 1, 32]).overflow, 2, 'date 32 invalid');
test.equal(flags([2012, 1, 29]).overflow, -1, 'date leap year valid');
test.equal(flags([2010, 1, 29]).overflow, 2, 'date leap year invalid');
//hours
test.equal(flags([2010, 1, 1, 8]).overflow, -1, 'hour valid');
test.equal(flags([2010, 1, 1, 0]).overflow, -1, 'hour 0 valid');
test.equal(flags([2010, 1, 1, -1]).overflow, 3, 'hour -1 invalid');
test.equal(flags([2010, 1, 1, 24]).overflow, 3, 'hour 24 invalid');
//minutes
test.equal(flags([2010, 1, 1, 8, 15]).overflow, -1, 'minute valid');
test.equal(flags([2010, 1, 1, 8, 0]).overflow, -1, 'minute 0 valid');
test.equal(flags([2010, 1, 1, 8, -1]).overflow, 4, 'minute -1 invalid');
test.equal(flags([2010, 1, 1, 8, 60]).overflow, 4, 'minute 60 invalid');
//seconds
test.equal(flags([2010, 1, 1, 8, 15, 12]).overflow, -1, 'second valid');
test.equal(flags([2010, 1, 1, 8, 15, 0]).overflow, -1, 'second 0 valid');
test.equal(flags([2010, 1, 1, 8, 15, -1]).overflow, 5, 'second -1 invalid');
test.equal(flags([2010, 1, 1, 8, 15, 60]).overflow, 5, 'second 60 invalid');
//milliseconds
test.equal(flags([2010, 1, 1, 8, 15, 12, 345]).overflow, -1, 'millisecond valid');
test.equal(flags([2010, 1, 1, 8, 15, 12, 0]).overflow, -1, 'millisecond 0 valid');
test.equal(flags([2010, 1, 1, 8, 15, 12, -1]).overflow, 6, 'millisecond -1 invalid');
test.equal(flags([2010, 1, 1, 8, 15, 12, 1000]).overflow, 6, 'millisecond 1000 invalid');
test.done();
},
'overflow without format' : function (test) {
//months
test.equal(flags('2001-01', 'YYYY-MM').overflow, -1, 'month 1 valid');
test.equal(flags('2001-12', 'YYYY-MM').overflow, -1, 'month 12 valid');
test.equal(flags('2001-13', 'YYYY-MM').overflow, 1, 'month 13 invalid');
//days
test.equal(flags('2010-01-16', 'YYYY-MM-DD').overflow, -1, 'date 16 valid');
test.equal(flags('2010-01-0', 'YYYY-MM-DD').overflow, 2, 'date 0 invalid');
test.equal(flags('2010-01-32', 'YYYY-MM-DD').overflow, 2, 'date 32 invalid');
test.equal(flags('2012-02-29', 'YYYY-MM-DD').overflow, -1, 'date leap year valid');
test.equal(flags('2010-02-29', 'YYYY-MM-DD').overflow, 2, 'date leap year invalid');
//days of the year
test.equal(flags('2010 300', 'YYYY DDDD').overflow, -1, 'day 300 of year valid');
test.equal(flags('2010 365', 'YYYY DDDD').overflow, -1, 'day 365 of year valid');
test.equal(flags('2010 366', 'YYYY DDDD').overflow, 2, 'day 366 of year invalid');
test.equal(flags('2012 366', 'YYYY DDDD').overflow, -1, 'day 366 of leap year valid');
test.equal(flags('2012 367', 'YYYY DDDD').overflow, 2, 'day 367 of leap year invalid');
//hours
test.equal(flags('08', 'HH').overflow, -1, 'hour valid');
test.equal(flags('00', 'HH').overflow, -1, 'hour 0 valid');
test.equal(flags('24', 'HH').overflow, 3, 'hour 24 invalid');
//minutes
test.equal(flags('08:15', 'HH:mm').overflow, -1, 'minute valid');
test.equal(flags('08:00', 'HH:mm').overflow, -1, 'minute 0 valid');
test.equal(flags('08:60', 'HH:mm').overflow, 4, 'minute 60 invalid');
//seconds
test.equal(flags('08:15:12', 'HH:mm:ss').overflow, -1, 'second valid');
test.equal(flags('08:15:00', 'HH:mm:ss').overflow, -1, 'second 0 valid');
test.equal(flags('08:15:60', 'HH:mm:ss').overflow, 5, 'second 60 invalid');
//milliseconds
test.equal(flags('08:15:12:345', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond valid');
test.equal(flags('08:15:12:000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 0 valid');
//this is OK because we don't match the last digit, so it's 100 ms
test.equal(flags('08:15:12:1000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 1000 actually valid');
test.done();
},
'extra tokens' : function (test) {
test.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedTokens, [], 'nothing extra');
test.deepEqual(flags('1982-05', 'YYYY-MM-DD').unusedTokens, ['DD'], 'extra formatting token');
test.deepEqual(flags('1982', 'YYYY-MM-DD').unusedTokens, ['MM', 'DD'], 'multiple extra formatting tokens');
test.deepEqual(flags('1982-05', 'YYYY-MM-').unusedTokens, [], 'extra non-formatting token');
test.deepEqual(flags('1982-05-', 'YYYY-MM-DD').unusedTokens, ['DD'], 'non-extra non-formatting token');
test.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD').unusedTokens, [], 'different non-formatting token');
test.done();
},
'extra tokens strict' : function (test) {
test.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedTokens, [], 'nothing extra');
test.deepEqual(flags('1982-05', 'YYYY-MM-DD', true).unusedTokens, ['-', 'DD'], 'extra formatting token');
test.deepEqual(flags('1982', 'YYYY-MM-DD', true).unusedTokens, ['-', 'MM', '-', 'DD'], 'multiple extra formatting tokens');
test.deepEqual(flags('1982-05', 'YYYY-MM-', true).unusedTokens, ['-'], 'extra non-formatting token');
test.deepEqual(flags('1982-05-', 'YYYY-MM-DD', true).unusedTokens, ['DD'], 'non-extra non-formatting token');
test.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD', true).unusedTokens, ['-', '-'], 'different non-formatting token');
test.done();
},
'unused input' : function (test) {
test.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedInput, [], 'normal input');
test.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').unusedInput, [' this is more stuff'], 'trailing nonsense');
test.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD').unusedInput, [' 09:30'], ['trailing legit-looking input']);
test.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]').unusedInput, [], 'junk that actually gets matched');
test.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').unusedInput, ['stuff at beginning '], 'leading junk');
test.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD').unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk');
test.done();
},
'unused input strict' : function (test) {
test.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedInput, [], 'normal input');
test.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD', true).unusedInput, [' this is more stuff'], 'trailing nonsense');
test.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD', true).unusedInput, [' 09:30'], ['trailing legit-looking input']);
test.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]', true).unusedInput, [], 'junk that actually gets matched');
test.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD', true).unusedInput, ['stuff at beginning '], 'leading junk');
test.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD', true).unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk');
test.done();
},
'chars left over' : function (test) {
test.equal(flags('1982-05-25', 'YYYY-MM-DD').charsLeftOver, 0, 'normal input');
test.equal(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').charsLeftOver, ' this is more stuff'.length, 'trailing nonsense');
test.equal(flags('1982-05-25 09:30', 'YYYY-MM-DD').charsLeftOver, ' 09:30'.length, 'trailing legit-looking input');
test.equal(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').charsLeftOver, 'stuff at beginning '.length, 'leading junk');
test.equal(flags('1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, [' junk ', ' more junk'].join('').length, 'interstitial junk');
test.equal(flags('stuff at beginning 1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, ['stuff at beginning ', ' junk ', ' more junk'].join('').length, 'leading and interstitial junk');
test.done();
},
'empty' : function (test) {
test.equal(flags('1982-05-25', 'YYYY-MM-DD').empty, false, 'normal input');
test.equal(flags('nothing here', 'YYYY-MM-DD').empty, true, 'pure garbage');
test.equal(flags('junk but has the number 2000 in it', 'YYYY-MM-DD').empty, false, 'only mostly garbage');
test.equal(flags('', 'YYYY-MM-DD').empty, true, 'empty string');
test.equal(flags('', 'YYYY-MM-DD').empty, true, 'blank string');
test.done();
},
'null' : function (test) {
test.equal(flags('1982-05-25', 'YYYY-MM-DD').nullInput, false, 'normal input');
test.equal(flags(null).nullInput, true, 'just null');
test.equal(flags(null, 'YYYY-MM-DD').nullInput, true, 'null with format');
test.done();
},
'invalid month' : function (test) {
test.equal(flags('1982 May', 'YYYY MMMM').invalidMonth, null, 'normal input');
test.equal(flags('1982 Laser', 'YYYY MMMM').invalidMonth, 'Laser', 'bad month name');
test.done();
},
'empty format array' : function (test) {
test.equal(flags('1982 May', ['YYYY MMM']).invalidFormat, false, 'empty format array');
test.equal(flags('1982 May', []).invalidFormat, true, 'empty format array');
test.done();
}
};
var moment = require("../../moment");
var symbolMap = {
'1': '!',
'2': '@',
'3': '#',
'4': '$',
'5': '%',
'6': '^',
'7': '&',
'8': '*',
'9': '(',
'0': ')'
};
var numberMap = {
'!': '1',
'@': '2',
'#': '3',
'$': '4',
'%': '5',
'^': '6',
'&': '7',
'*': '8',
'(': '9',
')': '0'
};
var symbolLang = {
preparse: function (string) {
return string.replace(/[!@#$%\^&*()]/g, function (match) {
return numberMap[match];
});
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
return symbolMap[match];
});
}
};
exports.preparsePostformat = {
setUp: function (cb) {
moment.lang('symbol', symbolLang);
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown: function (cb) {
moment.lang('en-gb');
cb();
},
"transform": function (test) {
test.expect(3);
test.equal(moment.utc('@)!@-)*-@&', 'YYYY-MM-DD').unix(), 1346025600, "preparse string + format");
test.equal(moment.utc('@)!@-)*-@&').unix(), 1346025600, "preparse ISO8601 string");
test.equal(moment.unix(1346025600).utc().format('YYYY-MM-DD'), '@)!@-)*-@&', "postformat");
test.done();
},
"transform from": function (test) {
test.expect(3);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "@ minutes", "postformat should work on moment.fn.from");
test.equal(moment().add('d', 6).fromNow(true), "^ days", "postformat should work on moment.fn.fromNow");
test.equal(moment.duration(10, "h").humanize(), "!) hours", "postformat should work on moment.duration.fn.humanize");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Today at @:)) AM", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Today at @:@% AM", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Today at #:)) AM", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at @:)) AM", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at !:)) AM", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at @:)) AM", "yesterday at the same time");
test.done();
}
};
var moment = require("../../moment");
exports.quarter = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"library quarter getter" : function (test) {
test.expect(7);
test.equal(moment([1985, 1, 4]).quarter(), 1, "Feb 4 1985 is Q1");
test.equal(moment([2029, 8, 18]).quarter(), 3, "Sep 18 2029 is Q3");
test.equal(moment([2013, 3, 24]).quarter(), 2, "Apr 24 2013 is Q2");
test.equal(moment([2015, 2, 5]).quarter(), 1, "Mar 5 2015 is Q1");
test.equal(moment([1970, 0, 2]).quarter(), 1, "Jan 2 1970 is Q1");
test.equal(moment([2001, 11, 12]).quarter(), 4, "Dec 12 2001 is Q4");
test.equal(moment([2000, 0, 2]).quarter(), 1, "Jan 2 2000 is Q1");
test.done();
},
"quarter setter singular" : function (test) {
var m;
test.expect(4);
m = moment([2014, 4, 11]);
test.equal(m.quarter(2).month(), 4, "set same quarter");
test.equal(m.quarter(3).month(), 7, "set 3rd quarter");
test.equal(m.quarter(1).month(), 1, "set 1st quarter");
test.equal(m.quarter(4).month(), 10, "set 4th quarter");
test.done();
},
"quarter setter plural" : function (test) {
var m;
test.expect(4);
m = moment([2014, 4, 11]);
test.equal(m.quarters(2).month(), 4, "set same quarter");
test.equal(m.quarters(3).month(), 7, "set 3rd quarter");
test.equal(m.quarters(1).month(), 1, "set 1st quarter");
test.equal(m.quarters(4).month(), 10, "set 4th quarter");
test.done();
},
"quarter setter programmatic" : function (test) {
var m;
test.expect(4);
m = moment([2014, 4, 11]);
test.equal(m.set("quarter", 2).month(), 4, "set same quarter");
test.equal(m.set("quarter", 3).month(), 7, "set 3rd quarter");
test.equal(m.set("quarter", 1).month(), 1, "set 1st quarter");
test.equal(m.set("quarter", 4).month(), 10, "set 4th quarter");
test.done();
},
"quarter setter programmatic plural" : function (test) {
var m;
test.expect(4);
m = moment([2014, 4, 11]);
test.equal(m.set("quarters", 2).month(), 4, "set same quarter");
test.equal(m.set("quarters", 3).month(), 7, "set 3rd quarter");
test.equal(m.set("quarters", 1).month(), 1, "set 1st quarter");
test.equal(m.set("quarters", 4).month(), 10, "set 4th quarter");
test.done();
},
"quarter setter programmatic abbr" : function (test) {
var m;
test.expect(4);
m = moment([2014, 4, 11]);
test.equal(m.set("Q", 2).month(), 4, "set same quarter");
test.equal(m.set("Q", 3).month(), 7, "set 3rd quarter");
test.equal(m.set("Q", 1).month(), 1, "set 1st quarter");
test.equal(m.set("Q", 4).month(), 10, "set 4th quarter");
test.done();
},
"quarter setter only month changes" : function (test) {
var m;
test.expect(7);
m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(4);
test.equal(m.year(), 2014, "keep year");
test.equal(m.month(), 10, "set month");
test.equal(m.date(), 11, "keep date");
test.equal(m.hour(), 1, "keep hour");
test.equal(m.minute(), 2, "keep minutes");
test.equal(m.second(), 3, "keep seconds");
test.equal(m.millisecond(), 4, "keep milliseconds");
test.done();
},
"quarter setter bubble to next year" : function (test) {
var m;
test.expect(7);
m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(7);
test.equal(m.year(), 2015, "year bubbled");
test.equal(m.month(), 7, "set month");
test.equal(m.date(), 11, "keep date");
test.equal(m.hour(), 1, "keep hour");
test.equal(m.minute(), 2, "keep minutes");
test.equal(m.second(), 3, "keep seconds");
test.equal(m.millisecond(), 4, "keep milliseconds");
test.done();
},
"quarter setter bubble to previous year" : function (test) {
var m;
test.expect(7);
m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(-3);
test.equal(m.year(), 2013, "year bubbled");
test.equal(m.month(), 1, "set month");
test.equal(m.date(), 11, "keep date");
test.equal(m.hour(), 1, "keep hour");
test.equal(m.minute(), 2, "keep minutes");
test.equal(m.second(), 3, "keep seconds");
test.equal(m.millisecond(), 4, "keep milliseconds");
test.done();
}
};
var moment = require("../../moment");
exports.endStartOf = {
setUp : function (done) {
moment.lang('en');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"start of year" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('year'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('years'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('y');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 0, "strip out the month");
test.equal(m.date(), 1, "strip out the day");
test.equal(m.hours(), 0, "strip out the hours");
test.equal(m.minutes(), 0, "strip out the minutes");
test.equal(m.seconds(), 0, "strip out the seconds");
test.equal(m.milliseconds(), 0, "strip out the milliseconds");
test.done();
},
"end of year" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('year'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('years'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('y');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 11, "set the month");
test.equal(m.date(), 31, "set the day");
test.equal(m.hours(), 23, "set the hours");
test.equal(m.minutes(), 59, "set the minutes");
test.equal(m.seconds(), 59, "set the seconds");
test.equal(m.milliseconds(), 999, "set the seconds");
test.done();
},
"start of quarter" : function (test) {
test.expect(10);
var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarter'),
ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarters'),
ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('Q');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.quarter(), 2, "keep the quarter");
test.equal(m.month(), 3, "strip out the month");
test.equal(m.date(), 1, "strip out the day");
test.equal(m.hours(), 0, "strip out the hours");
test.equal(m.minutes(), 0, "strip out the minutes");
test.equal(m.seconds(), 0, "strip out the seconds");
test.equal(m.milliseconds(), 0, "strip out the milliseconds");
test.done();
},
"end of quarter" : function (test) {
test.expect(10);
var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarter'),
ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarters'),
ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('Q');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.quarter(), 2, "keep the quarter");
test.equal(m.month(), 5, "set the month");
test.equal(m.date(), 30, "set the day");
test.equal(m.hours(), 23, "set the hours");
test.equal(m.minutes(), 59, "set the minutes");
test.equal(m.seconds(), 59, "set the seconds");
test.equal(m.milliseconds(), 999, "set the seconds");
test.done();
},
"start of month" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('month'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('months'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('M');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 1, "strip out the day");
test.equal(m.hours(), 0, "strip out the hours");
test.equal(m.minutes(), 0, "strip out the minutes");
test.equal(m.seconds(), 0, "strip out the seconds");
test.equal(m.milliseconds(), 0, "strip out the milliseconds");
test.done();
},
"end of month" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('month'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('months'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('M');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 28, "set the day");
test.equal(m.hours(), 23, "set the hours");
test.equal(m.minutes(), 59, "set the minutes");
test.equal(m.seconds(), 59, "set the seconds");
test.equal(m.milliseconds(), 999, "set the seconds");
test.done();
},
"start of week" : function (test) {
test.expect(10);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('week'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('weeks'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('w');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 0, "rolls back to January");
test.equal(m.day(), 0, "set day of week");
test.equal(m.date(), 30, "set correct date");
test.equal(m.hours(), 0, "strip out the hours");
test.equal(m.minutes(), 0, "strip out the minutes");
test.equal(m.seconds(), 0, "strip out the seconds");
test.equal(m.milliseconds(), 0, "strip out the milliseconds");
test.done();
},
"end of week" : function (test) {
test.expect(10);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('week'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.day(), 6, "set the day of the week");
test.equal(m.date(), 5, "set the day");
test.equal(m.hours(), 23, "set the hours");
test.equal(m.minutes(), 59, "set the minutes");
test.equal(m.seconds(), 59, "set the seconds");
test.equal(m.milliseconds(), 999, "set the seconds");
test.done();
},
"start of iso-week" : function (test) {
test.expect(10);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeek'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeeks'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('W');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 0, "rollback to January");
test.equal(m.isoWeekday(), 1, "set day of iso-week");
test.equal(m.date(), 31, "set correct date");
test.equal(m.hours(), 0, "strip out the hours");
test.equal(m.minutes(), 0, "strip out the minutes");
test.equal(m.seconds(), 0, "strip out the seconds");
test.equal(m.milliseconds(), 0, "strip out the milliseconds");
test.done();
},
"end of iso-week" : function (test) {
test.expect(10);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeek'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeeks'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('W');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.isoWeekday(), 7, "set the day of the week");
test.equal(m.date(), 6, "set the day");
test.equal(m.hours(), 23, "set the hours");
test.equal(m.minutes(), 59, "set the minutes");
test.equal(m.seconds(), 59, "set the seconds");
test.equal(m.milliseconds(), 999, "set the seconds");
test.done();
},
"start of day" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('day'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('days'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('d');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 2, "keep the day");
test.equal(m.hours(), 0, "strip out the hours");
test.equal(m.minutes(), 0, "strip out the minutes");
test.equal(m.seconds(), 0, "strip out the seconds");
test.equal(m.milliseconds(), 0, "strip out the milliseconds");
test.done();
},
"end of day" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('day'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('days'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('d');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 2, "keep the day");
test.equal(m.hours(), 23, "set the hours");
test.equal(m.minutes(), 59, "set the minutes");
test.equal(m.seconds(), 59, "set the seconds");
test.equal(m.milliseconds(), 999, "set the seconds");
test.done();
},
"start of hour" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hour'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hours'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('h');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 2, "keep the day");
test.equal(m.hours(), 3, "keep the hours");
test.equal(m.minutes(), 0, "strip out the minutes");
test.equal(m.seconds(), 0, "strip out the seconds");
test.equal(m.milliseconds(), 0, "strip out the milliseconds");
test.done();
},
"end of hour" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hour'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hours'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('h');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 2, "keep the day");
test.equal(m.hours(), 3, "keep the hours");
test.equal(m.minutes(), 59, "set the minutes");
test.equal(m.seconds(), 59, "set the seconds");
test.equal(m.milliseconds(), 999, "set the seconds");
test.done();
},
"start of minute" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minute'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minutes'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('m');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 2, "keep the day");
test.equal(m.hours(), 3, "keep the hours");
test.equal(m.minutes(), 4, "keep the minutes");
test.equal(m.seconds(), 0, "strip out the seconds");
test.equal(m.milliseconds(), 0, "strip out the milliseconds");
test.done();
},
"end of minute" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minute'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minutes'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('m');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 2, "keep the day");
test.equal(m.hours(), 3, "keep the hours");
test.equal(m.minutes(), 4, "keep the minutes");
test.equal(m.seconds(), 59, "set the seconds");
test.equal(m.milliseconds(), 999, "set the seconds");
test.done();
},
"start of second" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('second'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('seconds'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('s');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 2, "keep the day");
test.equal(m.hours(), 3, "keep the hours");
test.equal(m.minutes(), 4, "keep the minutes");
test.equal(m.seconds(), 5, "keep the the seconds");
test.equal(m.milliseconds(), 0, "strip out the milliseconds");
test.done();
},
"end of second" : function (test) {
test.expect(9);
var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('second'),
ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('seconds'),
ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('s');
test.equal(+m, +ms, "Plural or singular should work");
test.equal(+m, +ma, "Full or abbreviated should work");
test.equal(m.year(), 2011, "keep the year");
test.equal(m.month(), 1, "keep the month");
test.equal(m.date(), 2, "keep the day");
test.equal(m.hours(), 3, "keep the hours");
test.equal(m.minutes(), 4, "keep the minutes");
test.equal(m.seconds(), 5, "keep the seconds");
test.equal(m.milliseconds(), 999, "set the seconds");
test.done();
},
"startOf across DST +1" : function (test) {
var oldUpdateOffset = moment.updateOffset,
// Based on a real story somewhere in America/Los_Angeles
dstAt = moment("2014-03-09T02:00:00-08:00").parseZone(),
m;
moment.updateOffset = function (mom, keepTime) {
if (mom.isBefore(dstAt)) {
mom.zone(8, keepTime);
} else {
mom.zone(7, keepTime);
}
};
m = moment("2014-03-15T00:00:00-07:00").parseZone();
m.startOf('M');
test.equal(m.format(), "2014-03-01T00:00:00-08:00",
"startOf('month') across +1");
m = moment("2014-03-09T09:00:00-07:00").parseZone();
m.startOf('d');
test.equal(m.format(), "2014-03-09T00:00:00-08:00",
"startOf('day') across +1");
m = moment("2014-03-09T03:05:00-07:00").parseZone();
m.startOf('h');
test.equal(m.format(), "2014-03-09T03:00:00-07:00",
"startOf('hour') after +1");
m = moment("2014-03-09T01:35:00-08:00").parseZone();
m.startOf('h');
test.equal(m.format(), "2014-03-09T01:00:00-08:00",
"startOf('hour') before +1");
// There is no such time as 2:30-7 to try startOf('hour') across that
moment.updateOffset = oldUpdateOffset;
test.done();
},
"startOf across DST -1" : function (test) {
var oldUpdateOffset = moment.updateOffset,
// Based on a real story somewhere in America/Los_Angeles
dstAt = moment("2014-11-02T02:00:00-07:00").parseZone(),
m;
moment.updateOffset = function (mom, keepTime) {
if (mom.isBefore(dstAt)) {
mom.zone(7, keepTime);
} else {
mom.zone(8, keepTime);
}
};
m = moment("2014-11-15T00:00:00-08:00").parseZone();
m.startOf('M');
test.equal(m.format(), "2014-11-01T00:00:00-07:00",
"startOf('month') across -1");
m = moment("2014-11-02T09:00:00-08:00").parseZone();
m.startOf('d');
test.equal(m.format(), "2014-11-02T00:00:00-07:00",
"startOf('day') across -1");
// note that zone is -8
m = moment("2014-11-02T01:30:00-08:00").parseZone();
m.startOf('h');
test.equal(m.format(), "2014-11-02T01:00:00-08:00",
"startOf('hour') after +1");
// note that zone is -7
m = moment("2014-11-02T01:30:00-07:00").parseZone();
m.startOf('h');
test.equal(m.format(), "2014-11-02T01:00:00-07:00",
"startOf('hour') before +1");
moment.updateOffset = oldUpdateOffset;
test.done();
}
};
var moment = require("../../moment");
exports.stringPrototype = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"string prototype overrides call" : function (test) {
test.expect(1);
moment.lang('en');
var prior = String.prototype.call, b;
String.prototype.call = function () { return null; };
b = moment(new Date(2011, 7, 28, 15, 25, 50, 125));
test.equal(b.format('MMMM Do YYYY, h:mm a'), 'August 28th 2011, 3:25 pm');
String.prototype.call = prior;
test.done();
}
};
var moment = require("../../moment");
exports.utc = {
setUp : function (done) {
moment.lang('en');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"utc and local" : function (test) {
test.expect(7);
var m = moment(Date.UTC(2011, 1, 2, 3, 4, 5, 6)), zone, expected;
m.utc();
// utc
test.equal(m.date(), 2, "the day should be correct for utc");
test.equal(m.day(), 3, "the date should be correct for utc");
test.equal(m.hours(), 3, "the hours should be correct for utc");
// local
m.local();
if (m.zone() > 180) {
test.equal(m.date(), 1, "the date should be correct for local");
test.equal(m.day(), 2, "the day should be correct for local");
} else {
test.equal(m.date(), 2, "the date should be correct for local");
test.equal(m.day(), 3, "the day should be correct for local");
}
zone = Math.ceil(m.zone() / 60);
expected = (24 + 3 - zone) % 24;
test.equal(m.hours(), expected, "the hours (" + m.hours() + ") should be correct for local");
test.equal(moment().utc().zone(), 0, "timezone in utc should always be zero");
test.done();
},
"creating with utc and no arguments" : function (test) {
test.expect(2);
var startOfTest = new Date().valueOf(),
momentDefaultUtcTime = moment.utc().valueOf(),
afterMomentCreationTime = new Date().valueOf();
test.ok(startOfTest <= momentDefaultUtcTime, "moment UTC default time should be now, not in the past");
test.ok(momentDefaultUtcTime <= afterMomentCreationTime, "moment UTC default time should be now, not in the future");
test.done();
},
"creating with utc and a date parameter array" : function (test) {
test.expect(6);
var m = moment.utc([2011, 1, 2, 3, 4, 5, 6]);
test.equal(m.date(), 2, "the day should be correct for utc array");
test.equal(m.hours(), 3, "the hours should be correct for utc array");
m = moment.utc("2011-02-02 3:04:05", "YYYY-MM-DD HH:mm:ss");
test.equal(m.date(), 2, "the day should be correct for utc parsing format");
test.equal(m.hours(), 3, "the hours should be correct for utc parsing format");
m = moment.utc("2011-02-02T03:04:05+00:00");
test.equal(m.date(), 2, "the day should be correct for utc parsing iso");
test.equal(m.hours(), 3, "the hours should be correct for utc parsing iso");
test.done();
},
"creating with utc without timezone" : function (test) {
test.expect(4);
var m = moment.utc("2012-01-02T08:20:00");
test.equal(m.date(), 2, "the day should be correct for utc parse without timezone");
test.equal(m.hours(), 8, "the hours should be correct for utc parse without timezone");
m = moment.utc("2012-01-02T08:20:00+09:00");
test.equal(m.date(), 1, "the day should be correct for utc parse with timezone");
test.equal(m.hours(), 23, "the hours should be correct for utc parse with timezone");
test.done();
},
"cloning with utc" : function (test) {
test.expect(4);
var m = moment.utc("2012-01-02T08:20:00");
test.equal(moment.utc(m)._isUTC, true, "the local zone should be converted to UTC");
test.equal(moment.utc(m.clone().utc())._isUTC, true, "the local zone should stay in UTC");
m.zone(120);
test.equal(moment.utc(m)._isUTC, true, "the explicit zone should stay in UTC");
test.equal(moment.utc(m).zone(), 0, "the explicit zone should have an offset of 0");
test.done();
},
"weekday with utc" : function (test) {
test.expect(1);
test.equal(
moment('2013-09-15T00:00:00Z').utc().weekday(), // first minute of the day
moment('2013-09-15T23:59:00Z').utc().weekday(), // last minute of the day
"a UTC-moment's .weekday() should not be affected by the local timezone"
);
test.done();
}
};
var moment = require("../../moment");
exports.weekYear = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"iso week year": function (test) {
test.expect(19);
// Some examples taken from http://en.wikipedia.org/wiki/ISO_week
test.equal(moment([2005, 0, 1]).isoWeekYear(), 2004);
test.equal(moment([2005, 0, 2]).isoWeekYear(), 2004);
test.equal(moment([2005, 0, 3]).isoWeekYear(), 2005);
test.equal(moment([2005, 11, 31]).isoWeekYear(), 2005);
test.equal(moment([2006, 0, 1]).isoWeekYear(), 2005);
test.equal(moment([2006, 0, 2]).isoWeekYear(), 2006);
test.equal(moment([2007, 0, 1]).isoWeekYear(), 2007);
test.equal(moment([2007, 11, 30]).isoWeekYear(), 2007);
test.equal(moment([2007, 11, 31]).isoWeekYear(), 2008);
test.equal(moment([2008, 0, 1]).isoWeekYear(), 2008);
test.equal(moment([2008, 11, 28]).isoWeekYear(), 2008);
test.equal(moment([2008, 11, 29]).isoWeekYear(), 2009);
test.equal(moment([2008, 11, 30]).isoWeekYear(), 2009);
test.equal(moment([2008, 11, 31]).isoWeekYear(), 2009);
test.equal(moment([2009, 0, 1]).isoWeekYear(), 2009);
test.equal(moment([2010, 0, 1]).isoWeekYear(), 2009);
test.equal(moment([2010, 0, 2]).isoWeekYear(), 2009);
test.equal(moment([2010, 0, 3]).isoWeekYear(), 2009);
test.equal(moment([2010, 0, 4]).isoWeekYear(), 2010);
test.done();
},
"week year": function (test) {
test.expect(31);
// Some examples taken from http://en.wikipedia.org/wiki/ISO_week
moment.lang('dow: 1,doy: 4', {week: {dow: 1, doy: 4}}); // like iso
test.equal(moment([2005, 0, 1]).weekYear(), 2004);
test.equal(moment([2005, 0, 2]).weekYear(), 2004);
test.equal(moment([2005, 0, 3]).weekYear(), 2005);
test.equal(moment([2005, 11, 31]).weekYear(), 2005);
test.equal(moment([2006, 0, 1]).weekYear(), 2005);
test.equal(moment([2006, 0, 2]).weekYear(), 2006);
test.equal(moment([2007, 0, 1]).weekYear(), 2007);
test.equal(moment([2007, 11, 30]).weekYear(), 2007);
test.equal(moment([2007, 11, 31]).weekYear(), 2008);
test.equal(moment([2008, 0, 1]).weekYear(), 2008);
test.equal(moment([2008, 11, 28]).weekYear(), 2008);
test.equal(moment([2008, 11, 29]).weekYear(), 2009);
test.equal(moment([2008, 11, 30]).weekYear(), 2009);
test.equal(moment([2008, 11, 31]).weekYear(), 2009);
test.equal(moment([2009, 0, 1]).weekYear(), 2009);
test.equal(moment([2010, 0, 1]).weekYear(), 2009);
test.equal(moment([2010, 0, 2]).weekYear(), 2009);
test.equal(moment([2010, 0, 3]).weekYear(), 2009);
test.equal(moment([2010, 0, 4]).weekYear(), 2010);
moment.lang('dow: 1,doy: 7', {week: {dow: 1, doy: 7}});
test.equal(moment([2004, 11, 26]).weekYear(), 2004);
test.equal(moment([2004, 11, 27]).weekYear(), 2005);
test.equal(moment([2005, 11, 25]).weekYear(), 2005);
test.equal(moment([2005, 11, 26]).weekYear(), 2006);
test.equal(moment([2006, 11, 31]).weekYear(), 2006);
test.equal(moment([2007, 0, 1]).weekYear(), 2007);
test.equal(moment([2007, 11, 30]).weekYear(), 2007);
test.equal(moment([2007, 11, 31]).weekYear(), 2008);
test.equal(moment([2008, 11, 28]).weekYear(), 2008);
test.equal(moment([2008, 11, 29]).weekYear(), 2009);
test.equal(moment([2009, 11, 27]).weekYear(), 2009);
test.equal(moment([2009, 11, 28]).weekYear(), 2010);
test.done();
}
};
var moment = require("../../moment");
exports.weekYear = {
setUp : function (done) {
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
"iso weekday": function (test) {
var i;
test.expect(7 * 7);
for (i = 0; i < 7; ++i) {
moment.lang('dow:' + i + ',doy: 6', {week: {dow: i, doy: 6}});
test.equal(moment([1985, 1, 4]).isoWeekday(), 1, "Feb 4 1985 is Monday -- 1st day");
test.equal(moment([2029, 8, 18]).isoWeekday(), 2, "Sep 18 2029 is Tuesday -- 2nd day");
test.equal(moment([2013, 3, 24]).isoWeekday(), 3, "Apr 24 2013 is Wednesday -- 3rd day");
test.equal(moment([2015, 2, 5]).isoWeekday(), 4, "Mar 5 2015 is Thursday -- 4th day");
test.equal(moment([1970, 0, 2]).isoWeekday(), 5, "Jan 2 1970 is Friday -- 5th day");
test.equal(moment([2001, 4, 12]).isoWeekday(), 6, "May 12 2001 is Saturday -- 6th day");
test.equal(moment([2000, 0, 2]).isoWeekday(), 7, "Jan 2 2000 is Sunday -- 7th day");
}
test.done();
},
"iso weekday setter" : function (test) {
test.expect(27);
var a = moment([2011, 0, 10]);
test.equal(moment(a).isoWeekday(1).date(), 10, 'set from mon to mon');
test.equal(moment(a).isoWeekday(4).date(), 13, 'set from mon to thu');
test.equal(moment(a).isoWeekday(7).date(), 16, 'set from mon to sun');
test.equal(moment(a).isoWeekday(-6).date(), 3, 'set from mon to last mon');
test.equal(moment(a).isoWeekday(-3).date(), 6, 'set from mon to last thu');
test.equal(moment(a).isoWeekday(0).date(), 9, 'set from mon to last sun');
test.equal(moment(a).isoWeekday(8).date(), 17, 'set from mon to next mon');
test.equal(moment(a).isoWeekday(11).date(), 20, 'set from mon to next thu');
test.equal(moment(a).isoWeekday(14).date(), 23, 'set from mon to next sun');
a = moment([2011, 0, 13]);
test.equal(moment(a).isoWeekday(1).date(), 10, 'set from thu to mon');
test.equal(moment(a).isoWeekday(4).date(), 13, 'set from thu to thu');
test.equal(moment(a).isoWeekday(7).date(), 16, 'set from thu to sun');
test.equal(moment(a).isoWeekday(-6).date(), 3, 'set from thu to last mon');
test.equal(moment(a).isoWeekday(-3).date(), 6, 'set from thu to last thu');
test.equal(moment(a).isoWeekday(0).date(), 9, 'set from thu to last sun');
test.equal(moment(a).isoWeekday(8).date(), 17, 'set from thu to next mon');
test.equal(moment(a).isoWeekday(11).date(), 20, 'set from thu to next thu');
test.equal(moment(a).isoWeekday(14).date(), 23, 'set from thu to next sun');
a = moment([2011, 0, 16]);
test.equal(moment(a).isoWeekday(1).date(), 10, 'set from sun to mon');
test.equal(moment(a).isoWeekday(4).date(), 13, 'set from sun to thu');
test.equal(moment(a).isoWeekday(7).date(), 16, 'set from sun to sun');
test.equal(moment(a).isoWeekday(-6).date(), 3, 'set from sun to last mon');
test.equal(moment(a).isoWeekday(-3).date(), 6, 'set from sun to last thu');
test.equal(moment(a).isoWeekday(0).date(), 9, 'set from sun to last sun');
test.equal(moment(a).isoWeekday(8).date(), 17, 'set from sun to next mon');
test.equal(moment(a).isoWeekday(11).date(), 20, 'set from sun to next thu');
test.equal(moment(a).isoWeekday(14).date(), 23, 'set from sun to next sun');
test.done();
},
"weekday first day of week Sunday (dow 0)": function (test) {
test.expect(7);
moment.lang('dow: 0,doy: 6', {week: {dow: 0, doy: 6}});
test.equal(moment([1985, 1, 3]).weekday(), 0, "Feb 3 1985 is Sunday -- 0th day");
test.equal(moment([2029, 8, 17]).weekday(), 1, "Sep 17 2029 is Monday -- 1st day");
test.equal(moment([2013, 3, 23]).weekday(), 2, "Apr 23 2013 is Tuesday -- 2nd day");
test.equal(moment([2015, 2, 4]).weekday(), 3, "Mar 4 2015 is Wednesday -- 3nd day");
test.equal(moment([1970, 0, 1]).weekday(), 4, "Jan 1 1970 is Thursday -- 4th day");
test.equal(moment([2001, 4, 11]).weekday(), 5, "May 11 2001 is Friday -- 5th day");
test.equal(moment([2000, 0, 1]).weekday(), 6, "Jan 1 2000 is Saturday -- 6th day");
test.done();
},
"weekday first day of week Monday (dow 1)": function (test) {
test.expect(7);
moment.lang('dow: 1,doy: 6', {week: {dow: 1, doy: 6}});
test.equal(moment([1985, 1, 4]).weekday(), 0, "Feb 4 1985 is Monday -- 0th day");
test.equal(moment([2029, 8, 18]).weekday(), 1, "Sep 18 2029 is Tuesday -- 1st day");
test.equal(moment([2013, 3, 24]).weekday(), 2, "Apr 24 2013 is Wednesday -- 2nd day");
test.equal(moment([2015, 2, 5]).weekday(), 3, "Mar 5 2015 is Thursday -- 3nd day");
test.equal(moment([1970, 0, 2]).weekday(), 4, "Jan 2 1970 is Friday -- 4th day");
test.equal(moment([2001, 4, 12]).weekday(), 5, "May 12 2001 is Saturday -- 5th day");
test.equal(moment([2000, 0, 2]).weekday(), 6, "Jan 2 2000 is Sunday -- 6th day");
test.done();
},
"weekday first day of week Tuesday (dow 2)": function (test) {
test.expect(7);
moment.lang('dow: 2,doy: 6', {week: {dow: 2, doy: 6}});
test.equal(moment([1985, 1, 5]).weekday(), 0, "Feb 5 1985 is Tuesday -- 0th day");
test.equal(moment([2029, 8, 19]).weekday(), 1, "Sep 19 2029 is Wednesday -- 1st day");
test.equal(moment([2013, 3, 25]).weekday(), 2, "Apr 25 2013 is Thursday -- 2nd day");
test.equal(moment([2015, 2, 6]).weekday(), 3, "Mar 6 2015 is Friday -- 3nd day");
test.equal(moment([1970, 0, 3]).weekday(), 4, "Jan 3 1970 is Staturday -- 4th day");
test.equal(moment([2001, 4, 13]).weekday(), 5, "May 13 2001 is Sunday -- 5th day");
test.equal(moment([2000, 0, 3]).weekday(), 6, "Jan 3 2000 is Monday -- 6th day");
test.done();
},
"weekday first day of week Wednesday (dow 3)": function (test) {
test.expect(7);
moment.lang('dow: 3,doy: 6', {week: {dow: 3, doy: 6}});
test.equal(moment([1985, 1, 6]).weekday(), 0, "Feb 6 1985 is Wednesday -- 0th day");
test.equal(moment([2029, 8, 20]).weekday(), 1, "Sep 20 2029 is Thursday -- 1st day");
test.equal(moment([2013, 3, 26]).weekday(), 2, "Apr 26 2013 is Friday -- 2nd day");
test.equal(moment([2015, 2, 7]).weekday(), 3, "Mar 7 2015 is Saturday -- 3nd day");
test.equal(moment([1970, 0, 4]).weekday(), 4, "Jan 4 1970 is Sunday -- 4th day");
test.equal(moment([2001, 4, 14]).weekday(), 5, "May 14 2001 is Monday -- 5th day");
test.equal(moment([2000, 0, 4]).weekday(), 6, "Jan 4 2000 is Tuesday -- 6th day");
moment.lang('dow:3,doy:6', null);
test.done();
},
"weekday first day of week Thursday (dow 4)": function (test) {
test.expect(7);
moment.lang('dow: 4,doy: 6', {week: {dow: 4, doy: 6}});
test.equal(moment([1985, 1, 7]).weekday(), 0, "Feb 7 1985 is Thursday -- 0th day");
test.equal(moment([2029, 8, 21]).weekday(), 1, "Sep 21 2029 is Friday -- 1st day");
test.equal(moment([2013, 3, 27]).weekday(), 2, "Apr 27 2013 is Saturday -- 2nd day");
test.equal(moment([2015, 2, 8]).weekday(), 3, "Mar 8 2015 is Sunday -- 3nd day");
test.equal(moment([1970, 0, 5]).weekday(), 4, "Jan 5 1970 is Monday -- 4th day");
test.equal(moment([2001, 4, 15]).weekday(), 5, "May 15 2001 is Tuesday -- 5th day");
test.equal(moment([2000, 0, 5]).weekday(), 6, "Jan 5 2000 is Wednesday -- 6th day");
test.done();
},
"weekday first day of week Friday (dow 5)": function (test) {
test.expect(7);
moment.lang('dow: 5,doy: 6', {week: {dow: 5, doy: 6}});
test.equal(moment([1985, 1, 8]).weekday(), 0, "Feb 8 1985 is Friday -- 0th day");
test.equal(moment([2029, 8, 22]).weekday(), 1, "Sep 22 2029 is Staturday -- 1st day");
test.equal(moment([2013, 3, 28]).weekday(), 2, "Apr 28 2013 is Sunday -- 2nd day");
test.equal(moment([2015, 2, 9]).weekday(), 3, "Mar 9 2015 is Monday -- 3nd day");
test.equal(moment([1970, 0, 6]).weekday(), 4, "Jan 6 1970 is Tuesday -- 4th day");
test.equal(moment([2001, 4, 16]).weekday(), 5, "May 16 2001 is Wednesday -- 5th day");
test.equal(moment([2000, 0, 6]).weekday(), 6, "Jan 6 2000 is Thursday -- 6th day");
test.done();
},
"weekday first day of week Saturday (dow 6)": function (test) {
test.expect(7);
moment.lang('dow: 6,doy: 6', {week: {dow: 6, doy: 6}});
test.equal(moment([1985, 1, 9]).weekday(), 0, "Feb 9 1985 is Staturday -- 0th day");
test.equal(moment([2029, 8, 23]).weekday(), 1, "Sep 23 2029 is Sunday -- 1st day");
test.equal(moment([2013, 3, 29]).weekday(), 2, "Apr 29 2013 is Monday -- 2nd day");
test.equal(moment([2015, 2, 10]).weekday(), 3, "Mar 10 2015 is Tuesday -- 3nd day");
test.equal(moment([1970, 0, 7]).weekday(), 4, "Jan 7 1970 is Wednesday -- 4th day");
test.equal(moment([2001, 4, 17]).weekday(), 5, "May 17 2001 is Thursday -- 5th day");
test.equal(moment([2000, 0, 7]).weekday(), 6, "Jan 7 2000 is Friday -- 6th day");
test.done();
}
};
var moment = require("../../moment");
exports.weeks = {
setUp : function (done) {
moment.lang('en');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"day of year" : function (test) {
test.expect(8);
test.equal(moment([2000, 0, 1]).dayOfYear(), 1, "Jan 1 2000 should be day 1 of the year");
test.equal(moment([2000, 1, 28]).dayOfYear(), 59, "Feb 28 2000 should be day 59 of the year");
test.equal(moment([2000, 1, 29]).dayOfYear(), 60, "Feb 28 2000 should be day 60 of the year");
test.equal(moment([2000, 11, 31]).dayOfYear(), 366, "Dec 31 2000 should be day 366 of the year");
test.equal(moment([2001, 0, 1]).dayOfYear(), 1, "Jan 1 2001 should be day 1 of the year");
test.equal(moment([2001, 1, 28]).dayOfYear(), 59, "Feb 28 2001 should be day 59 of the year");
test.equal(moment([2001, 2, 1]).dayOfYear(), 60, "Mar 1 2001 should be day 60 of the year");
test.equal(moment([2001, 11, 31]).dayOfYear(), 365, "Dec 31 2001 should be day 365 of the year");
test.done();
},
"day of year setters" : function (test) {
test.expect(8);
test.equal(moment([2000, 0, 1]).dayOfYear(200).dayOfYear(), 200, "Setting Jan 1 2000 day of the year to 200 should work");
test.equal(moment([2000, 1, 28]).dayOfYear(200).dayOfYear(), 200, "Setting Feb 28 2000 day of the year to 200 should work");
test.equal(moment([2000, 1, 29]).dayOfYear(200).dayOfYear(), 200, "Setting Feb 28 2000 day of the year to 200 should work");
test.equal(moment([2000, 11, 31]).dayOfYear(200).dayOfYear(), 200, "Setting Dec 31 2000 day of the year to 200 should work");
test.equal(moment().dayOfYear(1).dayOfYear(), 1, "Setting day of the year to 1 should work");
test.equal(moment().dayOfYear(59).dayOfYear(), 59, "Setting day of the year to 59 should work");
test.equal(moment().dayOfYear(60).dayOfYear(), 60, "Setting day of the year to 60 should work");
test.equal(moment().dayOfYear(365).dayOfYear(), 365, "Setting day of the year to 365 should work");
test.done();
},
"iso weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).isoWeek(), 52, "Jan 1 2012 should be iso week 52");
test.equal(moment([2012, 0, 2]).isoWeek(), 1, "Jan 2 2012 should be iso week 1");
test.equal(moment([2012, 0, 8]).isoWeek(), 1, "Jan 8 2012 should be iso week 1");
test.equal(moment([2012, 0, 9]).isoWeek(), 2, "Jan 9 2012 should be iso week 2");
test.equal(moment([2012, 0, 15]).isoWeek(), 2, "Jan 15 2012 should be iso week 2");
test.done();
},
"iso weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).isoWeek(), 1, "Jan 1 2007 should be iso week 1");
test.equal(moment([2007, 0, 7]).isoWeek(), 1, "Jan 7 2007 should be iso week 1");
test.equal(moment([2007, 0, 8]).isoWeek(), 2, "Jan 8 2007 should be iso week 2");
test.equal(moment([2007, 0, 14]).isoWeek(), 2, "Jan 14 2007 should be iso week 2");
test.equal(moment([2007, 0, 15]).isoWeek(), 3, "Jan 15 2007 should be iso week 3");
test.done();
},
"iso weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).isoWeek(), 1, "Dec 31 2007 should be iso week 1");
test.equal(moment([2008, 0, 1]).isoWeek(), 1, "Jan 1 2008 should be iso week 1");
test.equal(moment([2008, 0, 6]).isoWeek(), 1, "Jan 6 2008 should be iso week 1");
test.equal(moment([2008, 0, 7]).isoWeek(), 2, "Jan 7 2008 should be iso week 2");
test.equal(moment([2008, 0, 13]).isoWeek(), 2, "Jan 13 2008 should be iso week 2");
test.equal(moment([2008, 0, 14]).isoWeek(), 3, "Jan 14 2008 should be iso week 3");
test.done();
},
"iso weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).isoWeek(), 1, "Dec 30 2002 should be iso week 1");
test.equal(moment([2003, 0, 1]).isoWeek(), 1, "Jan 1 2003 should be iso week 1");
test.equal(moment([2003, 0, 5]).isoWeek(), 1, "Jan 5 2003 should be iso week 1");
test.equal(moment([2003, 0, 6]).isoWeek(), 2, "Jan 6 2003 should be iso week 2");
test.equal(moment([2003, 0, 12]).isoWeek(), 2, "Jan 12 2003 should be iso week 2");
test.equal(moment([2003, 0, 13]).isoWeek(), 3, "Jan 13 2003 should be iso week 3");
test.done();
},
"iso weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).isoWeek(), 1, "Dec 29 2008 should be iso week 1");
test.equal(moment([2009, 0, 1]).isoWeek(), 1, "Jan 1 2009 should be iso week 1");
test.equal(moment([2009, 0, 4]).isoWeek(), 1, "Jan 4 2009 should be iso week 1");
test.equal(moment([2009, 0, 5]).isoWeek(), 2, "Jan 5 2009 should be iso week 2");
test.equal(moment([2009, 0, 11]).isoWeek(), 2, "Jan 11 2009 should be iso week 2");
test.equal(moment([2009, 0, 13]).isoWeek(), 3, "Jan 12 2009 should be iso week 3");
test.done();
},
"iso weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).isoWeek(), 53, "Dec 28 2009 should be iso week 53");
test.equal(moment([2010, 0, 1]).isoWeek(), 53, "Jan 1 2010 should be iso week 53");
test.equal(moment([2010, 0, 3]).isoWeek(), 53, "Jan 3 2010 should be iso week 53");
test.equal(moment([2010, 0, 4]).isoWeek(), 1, "Jan 4 2010 should be iso week 1");
test.equal(moment([2010, 0, 10]).isoWeek(), 1, "Jan 10 2010 should be iso week 1");
test.equal(moment([2010, 0, 11]).isoWeek(), 2, "Jan 11 2010 should be iso week 2");
test.done();
},
"iso weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).isoWeek(), 52, "Dec 27 2010 should be iso week 52");
test.equal(moment([2011, 0, 1]).isoWeek(), 52, "Jan 1 2011 should be iso week 52");
test.equal(moment([2011, 0, 2]).isoWeek(), 52, "Jan 2 2011 should be iso week 52");
test.equal(moment([2011, 0, 3]).isoWeek(), 1, "Jan 3 2011 should be iso week 1");
test.equal(moment([2011, 0, 9]).isoWeek(), 1, "Jan 9 2011 should be iso week 1");
test.equal(moment([2011, 0, 10]).isoWeek(), 2, "Jan 10 2011 should be iso week 2");
test.done();
},
"iso weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('W WW Wo'), '52 52 52nd', "Jan 1 2012 should be iso week 52");
test.equal(moment([2012, 0, 2]).format('W WW Wo'), '1 01 1st', "Jan 2 2012 should be iso week 1");
test.equal(moment([2012, 0, 8]).format('W WW Wo'), '1 01 1st', "Jan 8 2012 should be iso week 1");
test.equal(moment([2012, 0, 9]).format('W WW Wo'), '2 02 2nd', "Jan 9 2012 should be iso week 2");
test.equal(moment([2012, 0, 15]).format('W WW Wo'), '2 02 2nd', "Jan 15 2012 should be iso week 2");
test.done();
},
"weeks plural year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).weeks(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).weeks(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).weeks(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).weeks(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).weeks(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"iso weeks plural year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).isoWeeks(), 52, "Jan 1 2012 should be iso week 52");
test.equal(moment([2012, 0, 2]).isoWeeks(), 1, "Jan 2 2012 should be iso week 1");
test.equal(moment([2012, 0, 8]).isoWeeks(), 1, "Jan 8 2012 should be iso week 1");
test.equal(moment([2012, 0, 9]).isoWeeks(), 2, "Jan 9 2012 should be iso week 2");
test.equal(moment([2012, 0, 15]).isoWeeks(), 2, "Jan 15 2012 should be iso week 2");
test.done();
},
"weeks setter" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(30).week(), 30, "Setting Jan 1 2012 to week 30 should work");
test.equal(moment([2012, 0, 7]).week(30).week(), 30, "Setting Jan 7 2012 to week 30 should work");
test.equal(moment([2012, 0, 8]).week(30).week(), 30, "Setting Jan 8 2012 to week 30 should work");
test.equal(moment([2012, 0, 14]).week(30).week(), 30, "Setting Jan 14 2012 to week 30 should work");
test.equal(moment([2012, 0, 15]).week(30).week(), 30, "Setting Jan 15 2012 to week 30 should work");
test.done();
},
"iso weeks setter" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).isoWeeks(25).isoWeeks(), 25, "Setting Jan 1 2012 to week 25 should work");
test.equal(moment([2012, 0, 2]).isoWeeks(24).isoWeeks(), 24, "Setting Jan 2 2012 to week 24 should work");
test.equal(moment([2012, 0, 8]).isoWeeks(23).isoWeeks(), 23, "Setting Jan 8 2012 to week 23 should work");
test.equal(moment([2012, 0, 9]).isoWeeks(22).isoWeeks(), 22, "Setting Jan 9 2012 to week 22 should work");
test.equal(moment([2012, 0, 15]).isoWeeks(21).isoWeeks(), 21, "Setting Jan 15 2012 to week 21 should work");
test.done();
},
"iso weeks setter day of year" : function (test) {
test.expect(6);
test.equal(moment([2012, 0, 1]).isoWeek(1).dayOfYear(), 9, "Setting Jan 1 2012 to week 1 should be day of year 8");
test.equal(moment([2012, 0, 1]).isoWeek(1).year(), 2011, "Setting Jan 1 2012 to week 1 should be year 2011");
test.equal(moment([2012, 0, 2]).isoWeek(1).dayOfYear(), 2, "Setting Jan 2 2012 to week 1 should be day of year 2");
test.equal(moment([2012, 0, 8]).isoWeek(1).dayOfYear(), 8, "Setting Jan 8 2012 to week 1 should be day of year 8");
test.equal(moment([2012, 0, 9]).isoWeek(1).dayOfYear(), 2, "Setting Jan 9 2012 to week 1 should be day of year 2");
test.equal(moment([2012, 0, 15]).isoWeek(1).dayOfYear(), 8, "Setting Jan 15 2012 to week 1 should be day of year 8");
test.done();
},
"years with iso week 53" : function (test) {
test.expect(71);
// Based on a table taken from http://en.wikipedia.org/wiki/ISO_week_date
// (as downloaded on 2014-01-06) listing the 71 years in a 400-year cycle
// that have 53 weeks; in this case reflecting the 2000 based cycle
test.equal(moment([2004, 11, 31]).isoWeek(), 53, "Dec 31 2004 should be iso week 53");
test.equal(moment([2009, 11, 31]).isoWeek(), 53, "Dec 31 2009 should be iso week 53");
test.equal(moment([2015, 11, 31]).isoWeek(), 53, "Dec 31 2015 should be iso week 53");
test.equal(moment([2020, 11, 31]).isoWeek(), 53, "Dec 31 2020 should be iso week 53");
test.equal(moment([2026, 11, 31]).isoWeek(), 53, "Dec 31 2026 should be iso week 53");
test.equal(moment([2032, 11, 31]).isoWeek(), 53, "Dec 31 2032 should be iso week 53");
test.equal(moment([2037, 11, 31]).isoWeek(), 53, "Dec 31 2037 should be iso week 53");
test.equal(moment([2043, 11, 31]).isoWeek(), 53, "Dec 31 2043 should be iso week 53");
test.equal(moment([2048, 11, 31]).isoWeek(), 53, "Dec 31 2048 should be iso week 53");
test.equal(moment([2054, 11, 31]).isoWeek(), 53, "Dec 31 2054 should be iso week 53");
test.equal(moment([2060, 11, 31]).isoWeek(), 53, "Dec 31 2060 should be iso week 53");
test.equal(moment([2065, 11, 31]).isoWeek(), 53, "Dec 31 2065 should be iso week 53");
test.equal(moment([2071, 11, 31]).isoWeek(), 53, "Dec 31 2071 should be iso week 53");
test.equal(moment([2076, 11, 31]).isoWeek(), 53, "Dec 31 2076 should be iso week 53");
test.equal(moment([2082, 11, 31]).isoWeek(), 53, "Dec 31 2082 should be iso week 53");
test.equal(moment([2088, 11, 31]).isoWeek(), 53, "Dec 31 2088 should be iso week 53");
test.equal(moment([2093, 11, 31]).isoWeek(), 53, "Dec 31 2093 should be iso week 53");
test.equal(moment([2099, 11, 31]).isoWeek(), 53, "Dec 31 2099 should be iso week 53");
test.equal(moment([2105, 11, 31]).isoWeek(), 53, "Dec 31 2105 should be iso week 53");
test.equal(moment([2111, 11, 31]).isoWeek(), 53, "Dec 31 2111 should be iso week 53");
test.equal(moment([2116, 11, 31]).isoWeek(), 53, "Dec 31 2116 should be iso week 53");
test.equal(moment([2122, 11, 31]).isoWeek(), 53, "Dec 31 2122 should be iso week 53");
test.equal(moment([2128, 11, 31]).isoWeek(), 53, "Dec 31 2128 should be iso week 53");
test.equal(moment([2133, 11, 31]).isoWeek(), 53, "Dec 31 2133 should be iso week 53");
test.equal(moment([2139, 11, 31]).isoWeek(), 53, "Dec 31 2139 should be iso week 53");
test.equal(moment([2144, 11, 31]).isoWeek(), 53, "Dec 31 2144 should be iso week 53");
test.equal(moment([2150, 11, 31]).isoWeek(), 53, "Dec 31 2150 should be iso week 53");
test.equal(moment([2156, 11, 31]).isoWeek(), 53, "Dec 31 2156 should be iso week 53");
test.equal(moment([2161, 11, 31]).isoWeek(), 53, "Dec 31 2161 should be iso week 53");
test.equal(moment([2167, 11, 31]).isoWeek(), 53, "Dec 31 2167 should be iso week 53");
test.equal(moment([2172, 11, 31]).isoWeek(), 53, "Dec 31 2172 should be iso week 53");
test.equal(moment([2178, 11, 31]).isoWeek(), 53, "Dec 31 2178 should be iso week 53");
test.equal(moment([2184, 11, 31]).isoWeek(), 53, "Dec 31 2184 should be iso week 53");
test.equal(moment([2189, 11, 31]).isoWeek(), 53, "Dec 31 2189 should be iso week 53");
test.equal(moment([2195, 11, 31]).isoWeek(), 53, "Dec 31 2195 should be iso week 53");
test.equal(moment([2201, 11, 31]).isoWeek(), 53, "Dec 31 2201 should be iso week 53");
test.equal(moment([2207, 11, 31]).isoWeek(), 53, "Dec 31 2207 should be iso week 53");
test.equal(moment([2212, 11, 31]).isoWeek(), 53, "Dec 31 2212 should be iso week 53");
test.equal(moment([2218, 11, 31]).isoWeek(), 53, "Dec 31 2218 should be iso week 53");
test.equal(moment([2224, 11, 31]).isoWeek(), 53, "Dec 31 2224 should be iso week 53");
test.equal(moment([2229, 11, 31]).isoWeek(), 53, "Dec 31 2229 should be iso week 53");
test.equal(moment([2235, 11, 31]).isoWeek(), 53, "Dec 31 2235 should be iso week 53");
test.equal(moment([2240, 11, 31]).isoWeek(), 53, "Dec 31 2240 should be iso week 53");
test.equal(moment([2246, 11, 31]).isoWeek(), 53, "Dec 31 2246 should be iso week 53");
test.equal(moment([2252, 11, 31]).isoWeek(), 53, "Dec 31 2252 should be iso week 53");
test.equal(moment([2257, 11, 31]).isoWeek(), 53, "Dec 31 2257 should be iso week 53");
test.equal(moment([2263, 11, 31]).isoWeek(), 53, "Dec 31 2263 should be iso week 53");
test.equal(moment([2268, 11, 31]).isoWeek(), 53, "Dec 31 2268 should be iso week 53");
test.equal(moment([2274, 11, 31]).isoWeek(), 53, "Dec 31 2274 should be iso week 53");
test.equal(moment([2280, 11, 31]).isoWeek(), 53, "Dec 31 2280 should be iso week 53");
test.equal(moment([2285, 11, 31]).isoWeek(), 53, "Dec 31 2285 should be iso week 53");
test.equal(moment([2291, 11, 31]).isoWeek(), 53, "Dec 31 2291 should be iso week 53");
test.equal(moment([2296, 11, 31]).isoWeek(), 53, "Dec 31 2296 should be iso week 53");
test.equal(moment([2303, 11, 31]).isoWeek(), 53, "Dec 31 2303 should be iso week 53");
test.equal(moment([2308, 11, 31]).isoWeek(), 53, "Dec 31 2308 should be iso week 53");
test.equal(moment([2314, 11, 31]).isoWeek(), 53, "Dec 31 2314 should be iso week 53");
test.equal(moment([2320, 11, 31]).isoWeek(), 53, "Dec 31 2320 should be iso week 53");
test.equal(moment([2325, 11, 31]).isoWeek(), 53, "Dec 31 2325 should be iso week 53");
test.equal(moment([2331, 11, 31]).isoWeek(), 53, "Dec 31 2331 should be iso week 53");
test.equal(moment([2336, 11, 31]).isoWeek(), 53, "Dec 31 2336 should be iso week 53");
test.equal(moment([2342, 11, 31]).isoWeek(), 53, "Dec 31 2342 should be iso week 53");
test.equal(moment([2348, 11, 31]).isoWeek(), 53, "Dec 31 2348 should be iso week 53");
test.equal(moment([2353, 11, 31]).isoWeek(), 53, "Dec 31 2353 should be iso week 53");
test.equal(moment([2359, 11, 31]).isoWeek(), 53, "Dec 31 2359 should be iso week 53");
test.equal(moment([2364, 11, 31]).isoWeek(), 53, "Dec 31 2364 should be iso week 53");
test.equal(moment([2370, 11, 31]).isoWeek(), 53, "Dec 31 2370 should be iso week 53");
test.equal(moment([2376, 11, 31]).isoWeek(), 53, "Dec 31 2376 should be iso week 53");
test.equal(moment([2381, 11, 31]).isoWeek(), 53, "Dec 31 2381 should be iso week 53");
test.equal(moment([2387, 11, 31]).isoWeek(), 53, "Dec 31 2387 should be iso week 53");
test.equal(moment([2392, 11, 31]).isoWeek(), 53, "Dec 31 2392 should be iso week 53");
test.equal(moment([2398, 11, 31]).isoWeek(), 53, "Dec 31 2398 should be iso week 53");
test.done();
},
"count years with iso week 53" : function (test) {
test.expect(1);
// Based on http://en.wikipedia.org/wiki/ISO_week_date (as seen on 2014-01-06)
// stating that there are 71 years in a 400-year cycle that have 53 weeks;
// in this case reflecting the 2000 based cycle
var count = 0, i;
for (i = 0; i < 400; i++) {
count += (moment([2000 + i, 11, 31]).isoWeek() === 53) ? 1 : 0;
}
test.equal(count, 71, "Should have 71 years in 400-year cycle with iso week 53");
test.done();
}
};
var moment = require("../../moment");
exports.weeksInYear = {
"isoWeeksInYear": function (test) {
test.equal(moment([2004]).isoWeeksInYear(), 53, "2004 has 53 iso weeks");
test.equal(moment([2005]).isoWeeksInYear(), 52, "2005 has 53 iso weeks");
test.equal(moment([2006]).isoWeeksInYear(), 52, "2006 has 53 iso weeks");
test.equal(moment([2007]).isoWeeksInYear(), 52, "2007 has 52 iso weeks");
test.equal(moment([2008]).isoWeeksInYear(), 52, "2008 has 53 iso weeks");
test.equal(moment([2009]).isoWeeksInYear(), 53, "2009 has 53 iso weeks");
test.equal(moment([2010]).isoWeeksInYear(), 52, "2010 has 52 iso weeks");
test.equal(moment([2011]).isoWeeksInYear(), 52, "2011 has 52 iso weeks");
test.equal(moment([2012]).isoWeeksInYear(), 52, "2012 has 52 iso weeks");
test.equal(moment([2013]).isoWeeksInYear(), 52, "2013 has 52 iso weeks");
test.equal(moment([2014]).isoWeeksInYear(), 52, "2014 has 52 iso weeks");
test.equal(moment([2015]).isoWeeksInYear(), 53, "2015 has 53 iso weeks");
test.done();
},
"weeksInYear doy/dow = 1/4": function (test) {
moment.lang('1/4', {week: {dow: 1, doy: 4}});
test.equal(moment([2004]).weeksInYear(), 53, "2004 has 53 weeks");
test.equal(moment([2005]).weeksInYear(), 52, "2005 has 53 weeks");
test.equal(moment([2006]).weeksInYear(), 52, "2006 has 53 weeks");
test.equal(moment([2007]).weeksInYear(), 52, "2007 has 52 weeks");
test.equal(moment([2008]).weeksInYear(), 52, "2008 has 53 weeks");
test.equal(moment([2009]).weeksInYear(), 53, "2009 has 53 weeks");
test.equal(moment([2010]).weeksInYear(), 52, "2010 has 52 weeks");
test.equal(moment([2011]).weeksInYear(), 52, "2011 has 52 weeks");
test.equal(moment([2012]).weeksInYear(), 52, "2012 has 52 weeks");
test.equal(moment([2013]).weeksInYear(), 52, "2013 has 52 weeks");
test.equal(moment([2014]).weeksInYear(), 52, "2014 has 52 weeks");
test.equal(moment([2015]).weeksInYear(), 53, "2015 has 53 weeks");
test.done();
},
"weeksInYear doy/dow = 6/12": function (test) {
moment.lang('6/12', {week: {dow: 6, doy: 12}});
test.equal(moment([2004]).weeksInYear(), 53, "2004 has 53 weeks");
test.equal(moment([2005]).weeksInYear(), 52, "2005 has 53 weeks");
test.equal(moment([2006]).weeksInYear(), 52, "2006 has 53 weeks");
test.equal(moment([2007]).weeksInYear(), 52, "2007 has 52 weeks");
test.equal(moment([2008]).weeksInYear(), 52, "2008 has 53 weeks");
test.equal(moment([2009]).weeksInYear(), 52, "2009 has 53 weeks");
test.equal(moment([2010]).weeksInYear(), 53, "2010 has 52 weeks");
test.equal(moment([2011]).weeksInYear(), 52, "2011 has 52 weeks");
test.equal(moment([2012]).weeksInYear(), 52, "2012 has 52 weeks");
test.equal(moment([2013]).weeksInYear(), 52, "2013 has 52 weeks");
test.equal(moment([2014]).weeksInYear(), 52, "2014 has 52 weeks");
test.equal(moment([2015]).weeksInYear(), 52, "2015 has 53 weeks");
test.done();
},
"weeksInYear doy/dow = 1/7": function (test) {
moment.lang('1/7', {week: {dow: 1, doy: 7}});
test.equal(moment([2004]).weeksInYear(), 52, "2004 has 53 weeks");
test.equal(moment([2005]).weeksInYear(), 52, "2005 has 53 weeks");
test.equal(moment([2006]).weeksInYear(), 53, "2006 has 53 weeks");
test.equal(moment([2007]).weeksInYear(), 52, "2007 has 52 weeks");
test.equal(moment([2008]).weeksInYear(), 52, "2008 has 53 weeks");
test.equal(moment([2009]).weeksInYear(), 52, "2009 has 53 weeks");
test.equal(moment([2010]).weeksInYear(), 52, "2010 has 52 weeks");
test.equal(moment([2011]).weeksInYear(), 52, "2011 has 52 weeks");
test.equal(moment([2012]).weeksInYear(), 53, "2012 has 52 weeks");
test.equal(moment([2013]).weeksInYear(), 52, "2013 has 52 weeks");
test.equal(moment([2014]).weeksInYear(), 52, "2014 has 52 weeks");
test.equal(moment([2015]).weeksInYear(), 52, "2015 has 53 weeks");
test.done();
},
"weeksInYear doy/dow = 0/6": function (test) {
moment.lang('0/6', {week: {dow: 0, doy: 6}});
test.equal(moment([2004]).weeksInYear(), 52, "2004 has 53 weeks");
test.equal(moment([2005]).weeksInYear(), 53, "2005 has 53 weeks");
test.equal(moment([2006]).weeksInYear(), 52, "2006 has 53 weeks");
test.equal(moment([2007]).weeksInYear(), 52, "2007 has 52 weeks");
test.equal(moment([2008]).weeksInYear(), 52, "2008 has 53 weeks");
test.equal(moment([2009]).weeksInYear(), 52, "2009 has 53 weeks");
test.equal(moment([2010]).weeksInYear(), 52, "2010 has 52 weeks");
test.equal(moment([2011]).weeksInYear(), 53, "2011 has 52 weeks");
test.equal(moment([2012]).weeksInYear(), 52, "2012 has 52 weeks");
test.equal(moment([2013]).weeksInYear(), 52, "2013 has 52 weeks");
test.equal(moment([2014]).weeksInYear(), 52, "2014 has 52 weeks");
test.equal(moment([2015]).weeksInYear(), 52, "2015 has 53 weeks");
test.done();
}
};
var moment = require("../../moment");
exports.zones = {
setUp : function (done) {
moment.lang('en');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
done();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"set zone" : function (test) {
var zone = moment();
zone.zone(0);
test.equal(zone.zone(), 0, "should be able to set the zone to 0");
zone.zone(60);
test.equal(zone.zone(), 60, "should be able to set the zone to 60");
zone.zone(-60);
test.equal(zone.zone(), -60, "should be able to set the zone to -60");
test.done();
},
"set zone shorthand" : function (test) {
var zone = moment();
zone.zone(1);
test.equal(zone.zone(), 60, "setting the zone to 1 should imply hours and convert to 60");
zone.zone(-1);
test.equal(zone.zone(), -60, "setting the zone to -1 should imply hours and convert to -60");
zone.zone(15);
test.equal(zone.zone(), 900, "setting the zone to 15 should imply hours and convert to 900");
zone.zone(-15);
test.equal(zone.zone(), -900, "setting the zone to -15 should imply hours and convert to -900");
zone.zone(16);
test.equal(zone.zone(), 16, "setting the zone to 16 should imply minutes");
zone.zone(-16);
test.equal(zone.zone(), -16, "setting the zone to -16 should imply minutes");
test.done();
},
"set zone with string" : function (test) {
var zone = moment();
zone.zone("+00:00");
test.equal(zone.zone(), 0, "set the zone with a timezone string");
zone.zone("2013-03-07T07:00:00-08:00");
test.equal(zone.zone(), 480, "set the zone with a string that does not begin with the timezone");
zone.zone("2013-03-07T07:00:00+0100");
test.equal(zone.zone(), -60, "set the zone with a string that uses the +0000 syntax");
zone.zone("03-07-2013T07:00:00-08:00");
test.equal(zone.zone(), 480, "set the zone with a string with a non-ISO 8601 date");
test.done();
},
"change hours when changing the zone" : function (test) {
var zone = moment.utc([2000, 0, 1, 6]);
zone.zone(0);
test.equal(zone.hour(), 6, "UTC 6AM should be 6AM at +0000");
zone.zone(60);
test.equal(zone.hour(), 5, "UTC 6AM should be 5AM at -0100");
zone.zone(-60);
test.equal(zone.hour(), 7, "UTC 6AM should be 7AM at +0100");
test.done();
},
"change minutes when changing the zone" : function (test) {
var zone = moment.utc([2000, 0, 1, 6, 31]);
zone.zone(0);
test.equal(zone.format("HH:mm"), "06:31", "UTC 6:31AM should be 6:31AM at +0000");
zone.zone(30);
test.equal(zone.format("HH:mm"), "06:01", "UTC 6:31AM should be 6:01AM at -0030");
zone.zone(-30);
test.equal(zone.format("HH:mm"), "07:01", "UTC 6:31AM should be 7:01AM at +0030");
zone.zone(1380);
test.equal(zone.format("HH:mm"), "07:31", "UTC 6:31AM should be 7:31AM at +1380");
test.done();
},
"distance from the unix epoch" : function (test) {
var zoneA = moment(),
zoneB = moment(zoneA),
zoneC = moment(zoneA),
zoneD = moment(zoneA),
zoneE = moment(zoneA);
zoneB.utc();
test.equal(+zoneA, +zoneB, "moment should equal moment.utc");
zoneC.zone(-60);
test.equal(+zoneA, +zoneC, "moment should equal moment.zone(-60)");
zoneD.zone(480);
test.equal(+zoneA, +zoneD, "moment should equal moment.zone(480)");
zoneE.zone(1000);
test.equal(+zoneA, +zoneE, "moment should equal moment.zone(1000)");
test.done();
},
"update offset after changing any values" : function (test) {
var oldOffset = moment.updateOffset,
m = moment.utc([2000, 6, 1]);
moment.updateOffset = function (mom, keepTime) {
if (mom.__doChange) {
if (+mom > 962409600000) {
mom.zone(120, keepTime);
} else {
mom.zone(60, keepTime);
}
}
};
test.equal(m.format("ZZ"), "+0000", "should be at +0000");
test.equal(m.format("HH:mm"), "00:00", "should start 12AM at +0000 timezone");
m.__doChange = true;
m.add('h', 1);
test.equal(m.format("ZZ"), "-0200", "should be at -0200");
test.equal(m.format("HH:mm"), "23:00", "1AM at +0000 should be 11PM at -0200 timezone");
m.subtract('h', 1);
test.equal(m.format("ZZ"), "-0100", "should be at -0100");
test.equal(m.format("HH:mm"), "23:00", "12AM at +0000 should be 11PM at -0100 timezone");
moment.updateOffset = oldOffset;
test.done();
},
"getters and setters" : function (test) {
var a = moment([2011, 5, 20]);
test.equal(a.clone().zone(120).year(2012).year(), 2012, "should get and set year correctly");
test.equal(a.clone().zone(120).month(1).month(), 1, "should get and set month correctly");
test.equal(a.clone().zone(120).date(2).date(), 2, "should get and set date correctly");
test.equal(a.clone().zone(120).day(1).day(), 1, "should get and set day correctly");
test.equal(a.clone().zone(120).hour(1).hour(), 1, "should get and set hour correctly");
test.equal(a.clone().zone(120).minute(1).minute(), 1, "should get and set minute correctly");
test.done();
},
"getters" : function (test) {
var a = moment.utc([2012, 0, 1, 0, 0, 0]);
test.equal(a.clone().zone(120).year(), 2011, "should get year correctly");
test.equal(a.clone().zone(120).month(), 11, "should get month correctly");
test.equal(a.clone().zone(120).date(), 31, "should get date correctly");
test.equal(a.clone().zone(120).hour(), 22, "should get hour correctly");
test.equal(a.clone().zone(120).minute(), 0, "should get minute correctly");
test.equal(a.clone().zone(-120).year(), 2012, "should get year correctly");
test.equal(a.clone().zone(-120).month(), 0, "should get month correctly");
test.equal(a.clone().zone(-120).date(), 1, "should get date correctly");
test.equal(a.clone().zone(-120).hour(), 2, "should get hour correctly");
test.equal(a.clone().zone(-120).minute(), 0, "should get minute correctly");
test.equal(a.clone().zone(-90).year(), 2012, "should get year correctly");
test.equal(a.clone().zone(-90).month(), 0, "should get month correctly");
test.equal(a.clone().zone(-90).date(), 1, "should get date correctly");
test.equal(a.clone().zone(-90).hour(), 1, "should get hour correctly");
test.equal(a.clone().zone(-90).minute(), 30, "should get minute correctly");
test.done();
},
"from" : function (test) {
var zoneA = moment(),
zoneB = moment(zoneA).zone(720),
zoneC = moment(zoneA).zone(360),
zoneD = moment(zoneA).zone(-690),
other = moment(zoneA).add('m', 35);
test.equal(zoneA.from(other), zoneB.from(other), "moment#from should be the same in all zones");
test.equal(zoneA.from(other), zoneC.from(other), "moment#from should be the same in all zones");
test.equal(zoneA.from(other), zoneD.from(other), "moment#from should be the same in all zones");
test.done();
},
"diff" : function (test) {
var zoneA = moment(),
zoneB = moment(zoneA).zone(720),
zoneC = moment(zoneA).zone(360),
zoneD = moment(zoneA).zone(-690),
other = moment(zoneA).add('m', 35);
test.equal(zoneA.diff(other), zoneB.diff(other), "moment#diff should be the same in all zones");
test.equal(zoneA.diff(other), zoneC.diff(other), "moment#diff should be the same in all zones");
test.equal(zoneA.diff(other), zoneD.diff(other), "moment#diff should be the same in all zones");
test.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), "moment#diff should be the same in all zones");
test.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), "moment#diff should be the same in all zones");
test.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), "moment#diff should be the same in all zones");
test.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), "moment#diff should be the same in all zones");
test.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), "moment#diff should be the same in all zones");
test.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), "moment#diff should be the same in all zones");
test.done();
},
"unix offset and timestamp" : function (test) {
var zoneA = moment(),
zoneB = moment(zoneA).zone(720),
zoneC = moment(zoneA).zone(360),
zoneD = moment(zoneA).zone(-690);
test.equal(zoneA.unix(), zoneB.unix(), "moment#unix should be the same in all zones");
test.equal(zoneA.unix(), zoneC.unix(), "moment#unix should be the same in all zones");
test.equal(zoneA.unix(), zoneD.unix(), "moment#unix should be the same in all zones");
test.equal(+zoneA, +zoneB, "moment#valueOf should be the same in all zones");
test.equal(+zoneA, +zoneC, "moment#valueOf should be the same in all zones");
test.equal(+zoneA, +zoneD, "moment#valueOf should be the same in all zones");
test.done();
},
"cloning" : function (test) {
test.equal(moment().zone(120).clone().zone(), 120, "explicit cloning should retain the zone");
test.equal(moment().zone(-120).clone().zone(), -120, "explicit cloning should retain the zone");
test.equal(moment(moment().zone(120)).zone(), 120, "implicit cloning should retain the zone");
test.equal(moment(moment().zone(-120)).zone(), -120, "implicit cloning should retain the zone");
test.done();
},
"start of / end of" : function (test) {
var a = moment.utc([2010, 1, 2, 0, 0, 0]).zone(450);
test.equal(a.clone().startOf('day').hour(), 0, "start of day should work on moments with a zone");
test.equal(a.clone().startOf('day').minute(), 0, "start of day should work on moments with a zone");
test.equal(a.clone().startOf('hour').minute(), 0, "start of hour should work on moments with a zone");
test.equal(a.clone().endOf('day').hour(), 23, "end of day should work on moments with a zone");
test.equal(a.clone().endOf('day').minute(), 59, "end of day should work on moments with a zone");
test.equal(a.clone().endOf('hour').minute(), 59, "end of hour should work on moments with a zone");
test.done();
},
"reset zone with moment#utc" : function (test) {
var a = moment.utc([2012]).zone(480);
test.equal(a.clone().hour(), 16, "different zone should have different hour");
test.equal(a.clone().utc().hour(), 0, "calling moment#utc should reset the offset");
test.done();
},
"reset zone with moment#local" : function (test) {
var a = moment([2012]).zone(480);
test.equal(a.clone().local().hour(), 0, "calling moment#local should reset the offset");
test.done();
},
"toDate" : function (test) {
var zoneA = new Date(),
zoneB = moment(zoneA).zone(720).toDate(),
zoneC = moment(zoneA).zone(360).toDate(),
zoneD = moment(zoneA).zone(-690).toDate();
test.equal(+zoneA, +zoneB, "moment#toDate should output a date with the right unix timestamp");
test.equal(+zoneA, +zoneC, "moment#toDate should output a date with the right unix timestamp");
test.equal(+zoneA, +zoneD, "moment#toDate should output a date with the right unix timestamp");
test.done();
},
"same / before / after" : function (test) {
var zoneA = moment().utc(),
zoneB = moment(zoneA).zone(120),
zoneC = moment(zoneA).zone(-120);
test.ok(zoneA.isSame(zoneB), "two moments with different offsets should be the same");
test.ok(zoneA.isSame(zoneC), "two moments with different offsets should be the same");
test.ok(zoneA.isSame(zoneB, 'hour'), "two moments with different offsets should be the same hour");
test.ok(zoneA.isSame(zoneC, 'hour'), "two moments with different offsets should be the same hour");
zoneA.add('hour', 1);
test.ok(zoneA.isAfter(zoneB), "isAfter should work with two moments with different offsets");
test.ok(zoneA.isAfter(zoneC), "isAfter should work with two moments with different offsets");
test.ok(zoneA.isAfter(zoneB, 'hour'), "isAfter:hour should work with two moments with different offsets");
test.ok(zoneA.isAfter(zoneC, 'hour'), "isAfter:hour should work with two moments with different offsets");
zoneA.subtract('hour', 2);
test.ok(zoneA.isBefore(zoneB), "isBefore should work with two moments with different offsets");
test.ok(zoneA.isBefore(zoneC), "isBefore should work with two moments with different offsets");
test.ok(zoneA.isBefore(zoneB, 'hour'), "isBefore:hour should work with two moments with different offsets");
test.ok(zoneA.isBefore(zoneC, 'hour'), "isBefore:hour should work with two moments with different offsets");
test.done();
},
"add / subtract over dst" : function (test) {
var oldOffset = moment.updateOffset,
m = moment.utc([2000, 2, 31, 3]);
moment.updateOffset = function (mom, keepTime) {
if (mom.clone().utc().month() > 2) {
mom.zone(-60, keepTime);
} else {
mom.zone(0, keepTime);
}
};
test.equal(m.hour(), 3, "should start at 00:00");
m.add('hour', 24);
test.equal(m.hour(), 4, "adding 24 hours should disregard dst");
m.subtract('hour', 24);
test.equal(m.hour(), 3, "subtracting 24 hours should disregard dst");
m.add('day', 1);
test.equal(m.hour(), 3, "adding 1 day should have the same hour");
m.subtract('day', 1);
test.equal(m.hour(), 3, "subtracting 1 day should have the same hour");
m.add('month', 1);
test.equal(m.hour(), 3, "adding 1 month should have the same hour");
m.subtract('month', 1);
test.equal(m.hour(), 3, "subtracting 1 month should have the same hour");
moment.updateOffset = oldOffset;
test.done();
},
"isDST" : function (test) {
var oldOffset = moment.updateOffset;
moment.updateOffset = function (mom, keepTime) {
if (mom.month() > 2 && mom.month() < 9) {
mom.zone(-60, keepTime);
} else {
mom.zone(0, keepTime);
}
};
test.ok(!moment().month(0).isDST(), "Jan should not be summer dst");
test.ok(moment().month(6).isDST(), "Jul should be summer dst");
test.ok(!moment().month(11).isDST(), "Dec should not be summer dst");
moment.updateOffset = function (mom) {
if (mom.month() > 2 && mom.month() < 9) {
mom.zone(0);
} else {
mom.zone(-60);
}
};
test.ok(moment().month(0).isDST(), "Jan should be winter dst");
test.ok(!moment().month(6).isDST(), "Jul should not be winter dst");
test.ok(moment().month(11).isDST(), "Dec should be winter dst");
moment.updateOffset = oldOffset;
test.done();
},
"zone names" : function (test) {
test.expect(8);
test.equal(moment().zoneAbbr(), "", "Local zone abbr should be empty");
test.equal(moment().format('z'), "", "Local zone formatted abbr should be empty");
test.equal(moment().zoneName(), "", "Local zone name should be empty");
test.equal(moment().format('zz'), "", "Local zone formatted name should be empty");
test.equal(moment.utc().zoneAbbr(), "UTC", "UTC zone abbr should be UTC");
test.equal(moment.utc().format('z'), "UTC", "UTC zone formatted abbr should be UTC");
test.equal(moment.utc().zoneName(), "Coordinated Universal Time", "UTC zone abbr should be Coordinated Universal Time");
test.equal(moment.utc().format('zz'), "Coordinated Universal Time", "UTC zone formatted abbr should be Coordinated Universal Time");
test.done();
},
"hours alignment with UTC" : function (test) {
test.expect(4);
test.equals(moment().zone(120).hasAlignedHourOffset(), true);
test.equals(moment().zone(-180).hasAlignedHourOffset(), true);
test.equals(moment().zone(90).hasAlignedHourOffset(), false);
test.equals(moment().zone(-90).hasAlignedHourOffset(), false);
test.done();
},
"hours alignment with other zone" : function (test) {
test.expect(16);
var m = moment().zone(120);
test.equals(m.hasAlignedHourOffset(moment().zone(180)), true);
test.equals(m.hasAlignedHourOffset(moment().zone(-180)), true);
test.equals(m.hasAlignedHourOffset(moment().zone(90)), false);
test.equals(m.hasAlignedHourOffset(moment().zone(-90)), false);
m = moment().zone(90);
test.equals(m.hasAlignedHourOffset(moment().zone(180)), false);
test.equals(m.hasAlignedHourOffset(moment().zone(-180)), false);
test.equals(m.hasAlignedHourOffset(moment().zone(30)), true);
test.equals(m.hasAlignedHourOffset(moment().zone(-30)), true);
m = moment().zone(-60);
test.equals(m.hasAlignedHourOffset(moment().zone(180)), true);
test.equals(m.hasAlignedHourOffset(moment().zone(-180)), true);
test.equals(m.hasAlignedHourOffset(moment().zone(90)), false);
test.equals(m.hasAlignedHourOffset(moment().zone(-90)), false);
m = moment().zone(25);
test.equals(m.hasAlignedHourOffset(moment().zone(-35)), true);
test.equals(m.hasAlignedHourOffset(moment().zone(85)), true);
test.equals(m.hasAlignedHourOffset(moment().zone(35)), false);
test.equals(m.hasAlignedHourOffset(moment().zone(-85)), false);
test.done();
},
"parse zone" : function (test) {
test.expect(2);
var m = moment("2013-01-01T00:00:00-13:00").parseZone();
test.equal(m.zone(), 13 * 60);
test.equal(m.hours(), 0);
test.done();
},
"parse zone static" : function (test) {
test.expect(2);
var m = moment.parseZone("2013-01-01T00:00:00-13:00");
test.equal(m.zone(), 13 * 60);
test.equal(m.hours(), 0);
test.done();
},
"parse zone with more arguments" : function (test) {
var m;
test.expect(3);
m = moment.parseZone("2013 01 01 05 -13:00", "YYYY MM DD HH ZZ");
test.equal(m.format(), "2013-01-01T05:00:00-13:00", "accept input and format");
m = moment.parseZone("2013-01-01-13:00", "YYYY MM DD ZZ", true);
test.equal(m.isValid(), false, "accept input, format and strict flag");
m = moment.parseZone("2013-01-01-13:00", ["DD MM YYYY ZZ", "YYYY MM DD ZZ"]);
test.equal(m.format(), "2013-01-01T00:00:00-13:00", "accept input and array of formats");
test.done();
},
"parse zone with a timezone from the format string" : function (test) {
test.expect(1);
var m = moment("11-12-2013 -0400 +1100", "DD-MM-YYYY ZZ #####").parseZone();
test.equal(m.zone(), 4 * 60);
test.done();
},
"parse zone without a timezone included in the format string" : function (test) {
test.expect(1);
var m = moment("11-12-2013 -0400 +1100", "DD-MM-YYYY").parseZone();
test.equal(m.zone(), -11 * 60);
test.done();
},
"timezone format" : function (test) {
test.equal(moment().zone(-60).format('ZZ'), "+0100", "-60 -> +0100");
test.equal(moment().zone(-90).format('ZZ'), "+0130", "-90 -> +0130");
test.equal(moment().zone(-120).format('ZZ'), "+0200", "-120 -> +0200");
test.equal(moment().zone(+60).format('ZZ'), "-0100", "+60 -> -0100");
test.equal(moment().zone(+90).format('ZZ'), "-0130", "+90 -> -0130");
test.equal(moment().zone(+120).format('ZZ'), "-0200", "+120 -> -0200");
test.done();
}
};
// moment.js Moroccan arabic (ar-ma) tests
// author: Abdel Said : https://github.com/abdelsaid
var moment = require("../../moment");
exports["lang:ar-ma"] = {
setUp : function (cb) {
moment.lang('ar-ma');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_ماي:ماي_يونيو:يونيو_يوليوز:يوليوز_غشت:غشت_شتنبر:شتنبر_أكتوبر:أكتوبر_نونبر:نونبر_دجنبر:دجنبر'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(':');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير 14 2010, 3:25:50 pm'],
['ddd, hA', 'احد, 3PM'],
['M Mo MM MMMM MMM', '2 2 02 فبراير فبراير'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 الأحد احد ح'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '14/02/2010'],
['LL', '14 فبراير 2010'],
['LLL', '14 فبراير 2010 15:25'],
['LLLL', 'الأحد 14 فبراير 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 فبراير 2010'],
['lll', '14 فبراير 2010 15:25'],
['llll', 'احد 14 فبراير 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_ماي ماي_يونيو يونيو_يوليوز يوليوز_غشت غشت_شتنبر شتنبر_أكتوبر أكتوبر_نونبر نونبر_دجنبر دجنبر'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'الأحد احد ح_الإتنين اتنين ن_الثلاثاء ثلاثاء ث_الأربعاء اربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ثوان", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "دقيقة", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "دقيقة", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 دقائق", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 دقائق", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ساعة", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ساعة", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ساعات", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ساعات", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ساعات", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "يوم", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "يوم", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 أيام", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "يوم", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 أيام", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 أيام", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "شهر", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "شهر", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "شهر", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 أشهر", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 أشهر", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 أشهر", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "شهر", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 أشهر", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 أشهر", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "سنة", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "سنة", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 سنوات", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "سنة", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 سنوات", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "في ثوان", "prefix");
test.equal(moment(0).from(30000), "منذ ثوان", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "منذ ثوان", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "في ثوان", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "في 5 أيام", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "اليوم على الساعة 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "اليوم على الساعة 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "اليوم على الساعة 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "غدا على الساعة 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "اليوم على الساعة 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "أمس على الساعة 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({d: i});
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Saturday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1");
test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2");
test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2");
test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2");
test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2");
test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(5);
test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2");
test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2");
test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ar-ma'), 'ar-ma', "module should export ar-ma");
}
test.done();
}
};
// moment.js arabic (ar) tests
// author: Abdel Said : https://github.com/abdelsaid
var moment = require("../../moment");
exports["lang:ar"] = {
setUp : function (cb) {
moment.lang('ar');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'يناير/ كانون الثاني:يناير/ كانون الثاني_فبراير/ شباط:فبراير/ شباط_مارس/ آذار:مارس/ آذار_أبريل/ نيسان:أبريل/ نيسان_مايو/ أيار:مايو/ أيار_يونيو/ حزيران:يونيو/ حزيران_يوليو/ تموز:يوليو/ تموز_أغسطس/ آب:أغسطس/ آب_سبتمبر/ أيلول:سبتمبر/ أيلول_أكتوبر/ تشرين الأول:أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني:نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول:ديسمبر/ كانون الأول'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month());
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(':');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير/ شباط 14 2010, 3:25:50 pm'],
['ddd, hA', 'الأحد, 3PM'],
['M Mo MM MMMM MMM', '2 2 02 فبراير/ شباط فبراير/ شباط'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 الأحد الأحد ح'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '14/02/2010'],
['LL', '14 فبراير/ شباط 2010'],
['LLL', '14 فبراير/ شباط 2010 15:25'],
['LLLL', 'الأحد 14 فبراير/ شباط 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 فبراير/ شباط 2010'],
['lll', '14 فبراير/ شباط 2010 15:25'],
['llll', 'الأحد 14 فبراير/ شباط 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'يناير/ كانون الثاني يناير/ كانون الثاني_فبراير/ شباط فبراير/ شباط_مارس/ آذار مارس/ آذار_أبريل/ نيسان أبريل/ نيسان_مايو/ أيار مايو/ أيار_يونيو/ حزيران يونيو/ حزيران_يوليو/ تموز يوليو/ تموز_أغسطس/ آب أغسطس/ آب_سبتمبر/ أيلول سبتمبر/ أيلول_أكتوبر/ تشرين الأول أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول ديسمبر/ كانون الأول'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'الأحد الأحد ح_الإثنين الإثنين ن_الثلاثاء الثلاثاء ث_الأربعاء الأربعاء ر_الخميس الخميس خ_الجمعة الجمعة ج_السبت السبت س'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ثوان", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "دقيقة", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "دقيقة", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 دقائق", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 دقائق", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ساعة", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ساعة", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ساعات", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ساعات", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ساعات", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "يوم", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "يوم", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 أيام", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "يوم", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 أيام", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 أيام", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "شهر", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "شهر", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "شهر", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 أشهر", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 أشهر", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 أشهر", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "شهر", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 أشهر", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 أشهر", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "سنة", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "سنة", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 سنوات", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "سنة", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 سنوات", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "في ثوان", "prefix");
test.equal(moment(0).from(30000), "منذ ثوان", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "منذ ثوان", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "في ثوان", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "في 5 أيام", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "اليوم على الساعة 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "اليوم على الساعة 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "اليوم على الساعة 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "غدا على الساعة 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "اليوم على الساعة 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "أمس على الساعة 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Saturday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1");
test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2");
test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2");
test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(10);
test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2");
test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3");
test.equal(moment("2003 1 6", "gggg w d").format("YYYY-MM-DD"), "2002-12-28", "Week 1 of 2003 should be Dec 28 2002");
test.equal(moment("2003 1 0", "gggg w e").format("YYYY-MM-DD"), "2002-12-28", "Week 1 of 2003 should be Dec 28 2002");
test.equal(moment("2003 1 6", "gggg w d").format("gggg w d"), "2003 1 6", "Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6");
test.equal(moment("2003 1 0", "gggg w e").format("gggg w e"), "2003 1 0", "1st day of week 1 of 2003 parsed should be formatted as 2003 1 0");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2");
test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(5);
test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2");
test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2");
test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ar'), 'ar', "module should export ar");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Bulgarian
*************************************************/
exports["lang:bg"] = {
setUp : function (cb) {
moment.lang('bg');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'януари янревруари фев_март мар_април апрай май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ноеекември дек'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, H:mm:ss', 'неделя, февруари 14-ти 2010, 15:25:50'],
['ddd, hA', 'нед, 3PM'],
['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14-ти 14'],
['d do dddd ddd dd', '0 0-ев неделя нед нд'],
['DDD DDDo DDDD', '45 45-ти 045'],
['w wo ww', '7 7-ми 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45-ти day of the year'],
['L', '14.02.2010'],
['LL', '14 февруари 2010'],
['LLL', '14 февруари 2010 15:25'],
['LLLL', 'неделя, 14 февруари 2010 15:25'],
['l', '14.2.2010'],
['ll', '14 фев 2010'],
['lll', '14 фев 2010 15:25'],
['llll', 'нед, 14 фев 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'януари янревруари фев_март мар_април апрай май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ноеекември дек'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря сретвъртък чет чт_петък пет пт_събота съб сб'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "няколко секунди", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "минута", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "минута", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 минути", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 минути", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "час", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "час", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 часа", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 часа", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 часа", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ден", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ден", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 дни", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ден", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 дни", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 дни", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "месец", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "месец", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "месец", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 месеца", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 месеца", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 месеца", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "месец", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 месеца", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 месеца", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "година", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "година", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 години", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "година", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 години", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "след няколко секунди", "prefix");
test.equal(moment(0).from(30000), "преди няколко секунди", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "преди няколко секунди", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "след няколко секунди", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "след 5 дни", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Днес в 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Днес в 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Днес в 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Утре в 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Днес в 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчера в 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [в] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [в] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [в] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
case 3:
case 6:
return '[В изминалата] dddd [в] LT';
case 1:
case 2:
case 4:
case 5:
return '[В изминалия] dddd [в] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/bg'), 'bg', "module should export bg");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Breton
*************************************************/
exports["lang:br"] = {
setUp : function (cb) {
moment.lang('br');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('br');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = "Genver Gen_C'hwevrer C'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker".split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(17);
moment.lang('br');
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', "Sul, C'hwevrer 14vet 2010, 3:25:50 pm"],
['ddd, h A', 'Sul, 3 PM'],
['M Mo MM MMMM MMM', "2 2vet 02 C'hwevrer C'hwe"],
['YYYY YY', '2010 10'],
['D Do DD', '14 14vet 14'],
['d do dddd ddd dd', '0 0vet Sul Sul Su'],
['DDD DDDo DDDD', '45 45vet 045'],
['w wo ww', '6 6vet 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['DDDo [devezh] [ar] [vloaz]', '45vet devezh ar vloaz'],
['L', '14/02/2010'],
['LL', "14 a viz C'hwevrer 2010"],
['LLL', "14 a viz C'hwevrer 2010 3e25 PM"],
['LLLL', "Sul, 14 a viz C'hwevrer 2010 3e25 PM"]
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
moment.lang('br');
test.equal(moment([2011, 0, 1]).format('DDDo'), '1añ', '1añ');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2vet', '2vet');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3vet', '3vet');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4vet', '4vet');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5vet', '5vet');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6vet', '6vet');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7vet', '7vet');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8vet', '8vet');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9vet', '9vet');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10vet', '10vet');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11vet', '11vet');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12vet', '12vet');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13vet', '13vet');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14vet', '14vet');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15vet', '15vet');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16vet', '16vet');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17vet', '17vet');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18vet', '18vet');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19vet', '19vet');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20vet', '20vet');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21vet', '21vet');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22vet', '22vet');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23vet', '23vet');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24vet', '24vet');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25vet', '25vet');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26vet', '26vet');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27vet', '27vet');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28vet', '28vet');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29vet', '29vet');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30vet', '30vet');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31vet', '31vet');
test.done();
},
"format month" : function (test) {
test.expect(12);
moment.lang('br');
var expected = "Genver Gen_C'hwevrer C'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker".split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
moment.lang('br');
var expected = "Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Merc'her Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa".split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
moment.lang('br');
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "un nebeud segondennoù", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ur vunutenn", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ur vunutenn", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 vunutenn", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 munutenn", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "un eur", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "un eur", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 eur", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 eur", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 eur", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un devezh", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un devezh", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 zevezh", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un devezh", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 devezh", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 devezh", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ur miz", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ur miz", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ur miz", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 viz", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 viz", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 miz", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ur miz", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 miz", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 miz", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ur bloaz", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ur bloaz", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 vloaz", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ur bloaz", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 bloaz", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
moment.lang('br');
test.equal(moment(30000).from(0), "a-benn un nebeud segondennoù", "prefix");
test.equal(moment(0).from(30000), "un nebeud segondennoù 'zo", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
moment.lang('br');
test.equal(moment().fromNow(), "un nebeud segondennoù 'zo", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
moment.lang('br');
test.equal(moment().add({s: 30}).fromNow(), "a-benn un nebeud segondennoù", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "a-benn 5 devezh", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
moment.lang('br');
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Hiziv da 2e00 AM", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Hiziv da 2e25 AM", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Hiziv da 3e00 AM", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Warc'hoazh da 2e00 AM", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hiziv da 1e00 AM", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Dec'h da 2e00 AM", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
moment.lang('br');
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [da] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [da] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [da] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
moment.lang('br');
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [paset da] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [paset da] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [paset da] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
moment.lang('br');
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"special mutations for years": function (test) {
test.expect(12);
moment.lang('br');
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ur bloaz", "mutation 1 year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), "2 vloaz", "mutation 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), "3 bloaz", "mutation 3 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), "4 bloaz", "mutation 4 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 bloaz", "mutation 5 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 9}), true), "9 bloaz", "mutation 9 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 10}), true), "10 vloaz", "mutation 10 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), "21 bloaz", "mutation 21 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 22}), true), "22 vloaz", "mutation 22 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 133}), true), "133 bloaz", "mutation 133 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 148}), true), "148 vloaz", "mutation 148 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 261}), true), "261 bloaz", "mutation 261 years");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/br'), 'br', "module should export br");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Croatian
*************************************************/
exports["lang:bs"] = {
setUp : function (cb) {
moment.lang('bs');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'],
['ddd, hA', 'ned., 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 februar feb.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. nedjelja ned. ne'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '7 7. 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14. 02. 2010'],
['LL', '14. februar 2010'],
['LLL', '14. februar 2010 15:25'],
['LLLL', 'nedjelja, 14. februar 2010 15:25'],
['l', '14. 2. 2010'],
['ll', '14. feb. 2010'],
['lll', '14. feb. 2010 15:25'],
['llll', 'ned., 14. feb. 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "par sekundi", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "jedna minuta", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "jedna minuta", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minute", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuta", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "jedan sat", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "jedan sat", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 sata", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 sati", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 sati", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dan", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dan", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dana", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dan", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dana", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dana", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mjesec", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mjesec", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mjesec", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mjeseca", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mjeseca", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mjeseca", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mjesec", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mjeseci", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mjeseci", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "godinu", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "godinu", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 godine", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "godinu", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 godina", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "za par sekundi", "prefix");
test.equal(moment(0).from(30000), "prije par sekundi", "prefix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "prije par sekundi", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "za par sekundi", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "za 5 dana", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "danas u 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "danas u 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "danas u 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "sutra u 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "danas u 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "jučer u 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
return '[u] [nedjelju] [u] LT';
case 3:
return '[u] [srijedu] [u] LT';
case 6:
return '[u] [subotu] [u] LT';
case 1:
case 2:
case 4:
case 5:
return '[u] dddd [u] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
case 3:
return '[prošlu] dddd [u] LT';
case 6:
return '[prošle] [subote] [u] LT';
case 1:
case 2:
case 4:
case 5:
return '[prošli] dddd [u] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/bs'), 'bs', "module should export bs");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Català
*************************************************/
exports["lang:ca"] = {
setUp : function (cb) {
moment.lang('ca');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = "gener gen._febrer febr._març mar._abril abr._maig mai._juny jun._juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.".split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = "gener gen._febrer febr._març mar._abril abr._maig mai._juny jun._juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.".split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = "diumenge dg. Dg_dilluns dl. Dl_dimarts dt. Dt_dimecres dc. Dc_dijous dj. Dj_divendres dv. Dv_dissabte ds. Ds".split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "uns segons", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minut", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minut", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuts", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuts", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "una hora", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "una hora", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hores", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hores", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hores", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un dia", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un dia", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dies", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un dia", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dies", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dies", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mes", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mes", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mes", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mesos", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mesos", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mesos", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mes", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mesos", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mesos", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un any", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un any", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anys", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un any", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anys", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "en uns segons", "prefix");
test.equal(moment(0).from(30000), "fa uns segons", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "fa uns segons", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "en uns segons", "en uns segons");
test.equal(moment().add({d: 5}).fromNow(), "en 5 dies", "en 5 dies");
test.done();
},
"calendar day" : function (test) {
test.expect(7);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "avui a les 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "avui a les 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "avui a les 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "demà a les 2:00", "tomorrow at the same time");
test.equal(moment(a).add({ d: 1, h : -1 }).calendar(), "demà a la 1:00", "tomorrow minus 1 hour");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "avui a la 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "ahir a les 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ca'), 'ca', "module should export ca");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Czech
*************************************************/
exports["lang:cs"] = {
setUp : function (cb) {
moment.lang('cs');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split("_"), i;
function equalTest(input, mmm, monthIndex) {
test.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss', 'neděle, únor 14. 2010, 3:25:50'],
['ddd, h', 'ne, 3'],
['M Mo MM MMMM MMM', '2 2. 02 únor úno'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. neděle ne ne'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['DDDo [den v roce]', '45. den v roce'],
['L', '14. 02. 2010'],
['LL', '14. únor 2010'],
['LLL', '14. únor 2010 15.25'],
['LLLL', 'neděle 14. únor 2010 15.25'],
['l', '14. 2. 2010'],
['ll', '14. úno 2010'],
['lll', '14. úno 2010 15.25'],
['llll', 'ne 14. úno 2010 15.25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'neděle ne ne_pondělí po po_úterý út út_středa st st_čtvrtek čt čt_pátek pá pá_sobota so so'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "pár sekund", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuta", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuta", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuty", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minut", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "hodina", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "hodina", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hodiny", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hodin", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hodin", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "den", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "den", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dny", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "den", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dní", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dní", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "měsíc", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "měsíc", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "měsíc", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 měsíce", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 měsíce", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 měsíce", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "měsíc", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 měsíců", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 měsíců", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "rok", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "rok", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 roky", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "rok", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 let", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "za pár sekund", "prefix");
test.equal(moment(0).from(30000), "před pár sekundami", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "před pár sekundami", "now from now should display as in the past");
test.done();
},
"fromNow (future)" : function (test) {
test.expect(16);
test.equal(moment().add({s: 30}).fromNow(), "za pár sekund", "in a few seconds");
test.equal(moment().add({m: 1}).fromNow(), "za minutu", "in a minute");
test.equal(moment().add({m: 3}).fromNow(), "za 3 minuty", "in 3 minutes");
test.equal(moment().add({m: 10}).fromNow(), "za 10 minut", "in 10 minutes");
test.equal(moment().add({h: 1}).fromNow(), "za hodinu", "in an hour");
test.equal(moment().add({h: 3}).fromNow(), "za 3 hodiny", "in 3 hours");
test.equal(moment().add({h: 10}).fromNow(), "za 10 hodin", "in 10 hours");
test.equal(moment().add({d: 1}).fromNow(), "za den", "in a day");
test.equal(moment().add({d: 3}).fromNow(), "za 3 dny", "in 3 days");
test.equal(moment().add({d: 10}).fromNow(), "za 10 dní", "in 10 days");
test.equal(moment().add({M: 1}).fromNow(), "za měsíc", "in a month");
test.equal(moment().add({M: 3}).fromNow(), "za 3 měsíce", "in 3 months");
test.equal(moment().add({M: 10}).fromNow(), "za 10 měsíců", "in 10 months");
test.equal(moment().add({y: 1}).fromNow(), "za rok", "in a year");
test.equal(moment().add({y: 3}).fromNow(), "za 3 roky", "in 3 years");
test.equal(moment().add({y: 10}).fromNow(), "za 10 let", "in 10 years");
test.done();
},
"fromNow (past)" : function (test) {
test.expect(16);
test.equal(moment().subtract({s: 30}).fromNow(), "před pár sekundami", "a few seconds ago");
test.equal(moment().subtract({m: 1}).fromNow(), "před minutou", "a minute ago");
test.equal(moment().subtract({m: 3}).fromNow(), "před 3 minutami", "3 minutes ago");
test.equal(moment().subtract({m: 10}).fromNow(), "před 10 minutami", "10 minutes ago");
test.equal(moment().subtract({h: 1}).fromNow(), "před hodinou", "an hour ago");
test.equal(moment().subtract({h: 3}).fromNow(), "před 3 hodinami", "3 hours ago");
test.equal(moment().subtract({h: 10}).fromNow(), "před 10 hodinami", "10 hours ago");
test.equal(moment().subtract({d: 1}).fromNow(), "před dnem", "a day ago");
test.equal(moment().subtract({d: 3}).fromNow(), "před 3 dny", "3 days ago");
test.equal(moment().subtract({d: 10}).fromNow(), "před 10 dny", "10 days ago");
test.equal(moment().subtract({M: 1}).fromNow(), "před měsícem", "a month ago");
test.equal(moment().subtract({M: 3}).fromNow(), "před 3 měsíci", "3 months ago");
test.equal(moment().subtract({M: 10}).fromNow(), "před 10 měsíci", "10 months ago");
test.equal(moment().subtract({y: 1}).fromNow(), "před rokem", "a year ago");
test.equal(moment().subtract({y: 3}).fromNow(), "před 3 lety", "3 years ago");
test.equal(moment().subtract({y: 10}).fromNow(), "před 10 lety", "10 years ago");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "dnes v 2.00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "dnes v 2.25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "dnes v 3.00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "zítra v 2.00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "dnes v 1.00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "včera v 2.00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m, nextDay;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
nextDay = '';
switch (m.day()) {
case 0:
nextDay = 'v neděli';
break;
case 1:
nextDay = 'v pondělí';
break;
case 2:
nextDay = 'v úterý';
break;
case 3:
nextDay = 've středu';
break;
case 4:
nextDay = 've čtvrtek';
break;
case 5:
nextDay = 'v pátek';
break;
case 6:
nextDay = 'v sobotu';
break;
}
test.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m, lastDay;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
lastDay = '';
switch (m.day()) {
case 0:
lastDay = 'minulou neděli';
break;
case 1:
lastDay = 'minulé pondělí';
break;
case 2:
lastDay = 'minulé úterý';
break;
case 3:
lastDay = 'minulou středu';
break;
case 4:
lastDay = 'minulý čtvrtek';
break;
case 5:
lastDay = 'minulý pátek';
break;
case 6:
lastDay = 'minulou sobotu';
break;
}
test.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"humanize duration" : function (test) {
test.expect(4);
test.equal(moment.duration(1, "minutes").humanize(), "minuta", "a minute (future)");
test.equal(moment.duration(1, "minutes").humanize(true), "za minutu", "in a minute");
test.equal(moment.duration(-1, "minutes").humanize(), "minuta", "a minute (past)");
test.equal(moment.duration(-1, "minutes").humanize(true), "před minutou", "a minute ago");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/cs'), 'cs', "module should export cs");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Chuvash
*************************************************/
exports["lang:cv"] = {
setUp : function (cb) {
moment.lang('cv');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'кăрлач кăрарăс нар_пуш пуш_ака акаай май_çĕртме çĕр_утă утă_çурла çур_авăн ав_юпа юпа_чӳк чӳк_раштав раш'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'вырсарникун, нарăс 14-мĕш 2010, 3:25:50 pm'],
['ddd, hA', 'выр, 3PM'],
['M Mo MM MMMM MMM', '2 2-мĕш 02 нарăс нар'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14-мĕш 14'],
['d do dddd ddd dd', '0 0-мĕш вырсарникун выр вр'],
['DDD DDDo DDDD', '45 45-мĕш 045'],
['w wo ww', '7 7-мĕш 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['Çулăн DDDo кунĕ', 'Çулăн 45-мĕш кунĕ'],
['L', '14-02-2010'],
['LL', '2010 çулхи нарăс уйăхĕн 14-мĕшĕ'],
['LLL', '2010 çулхи нарăс уйăхĕн 14-мĕшĕ, 15:25'],
['LLLL', 'вырсарникун, 2010 çулхи нарăс уйăхĕн 14-мĕшĕ, 15:25'],
['l', '14-2-2010'],
['ll', '2010 çулхи нар уйăхĕн 14-мĕшĕ'],
['lll', '2010 çулхи нар уйăхĕн 14-мĕшĕ, 15:25'],
['llll', 'выр, 2010 çулхи нар уйăхĕн 14-мĕшĕ, 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1-мĕш', '1-мĕш');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2-мĕш', '2-мĕш');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3-мĕш', '3-мĕш');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4-мĕш', '4-мĕш');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5-мĕш', '5-мĕш');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6-мĕш', '6-мĕш');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7-мĕш', '7-мĕш');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8-мĕш', '8-мĕш');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9-мĕш', '9-мĕш');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10-мĕш', '10-мĕш');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11-мĕш', '11-мĕш');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12-мĕш', '12-мĕш');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13-мĕш', '13-мĕш');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14-мĕш', '14-мĕш');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15-мĕш', '15-мĕш');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16-мĕш', '16-мĕш');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17-мĕш', '17-мĕш');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18-мĕш', '18-мĕш');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19-мĕш', '19-мĕш');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20-мĕш', '20-мĕш');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21-мĕш', '21-мĕш');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22-мĕш', '22-мĕш');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23-мĕш', '23-мĕш');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24-мĕш', '24-мĕш');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25-мĕш', '25-мĕш');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26-мĕш', '26-мĕш');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27-мĕш', '27-мĕш');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28-мĕш', '28-мĕш');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29-мĕш', '29-мĕш');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30-мĕш', '30-мĕш');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31-мĕш', '31-мĕш');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'кăрлач кăрарăс нар_пуш пуш_ака акаай май_çĕртме çĕр_утă утă_çурла çур_авăн ав_юпа юпа_чӳк чӳк_раштав раш'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'вырсарникун выр врунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кĕçнерникун кĕç кç_эрнекун эрн эр_шăматкун шăм шм'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "пĕр-ик çеккунт", "44 sekunder = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "пĕр минут", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "пĕр минут", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 минут", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 минут", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "пĕр сехет", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "пĕр сехет", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 сехет", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 сехет", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 сехет", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "пĕр кун", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "пĕр кун", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 кун", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "пĕр кун", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 кун", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 кун", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "пĕр уйăх", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "пĕр уйăх", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "пĕр уйăх", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 уйăх", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 уйăх", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 уйăх", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "пĕр уйăх", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 уйăх", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 уйăх", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "пĕр çул", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "пĕр çул", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 çул", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "пĕр çул", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 çул", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "пĕр-ик çеккунтран", "prefix");
test.equal(moment(0).from(30000), "пĕр-ик çеккунт каялла", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "пĕр-ик çеккунт каялла", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(4);
test.equal(moment().add({s: 30}).fromNow(), "пĕр-ик çеккунтран", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "5 кунран", "in 5 days");
test.equal(moment().add({h: 2}).fromNow(), "2 сехетрен", "in 2 hours, the right suffix!");
test.equal(moment().add({y: 3}).fromNow(), "3 çултан", "in 3 years, the right suffix!");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Паян 02:00 сехетре", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Паян 02:25 сехетре", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Паян 03:00 сехетре", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Ыран 02:00 сехетре", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Паян 01:00 сехетре", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ĕнер 02:00 сехетре", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-мĕш', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-мĕш', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-мĕш', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-мĕш', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-мĕш', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/cv'), 'cv', "module should export cv");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Welsh
*************************************************/
exports["lang:cy"] = {
setUp : function (cb) {
moment.lang('cy');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split("_"),
i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Dydd Sul, Chwefror 14eg 2010, 3:25:50 pm'],
['ddd, hA', 'Sul, 3PM'],
['M Mo MM MMMM MMM', '2 2il 02 Chwefror Chwe'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14eg 14'],
['d do dddd ddd dd', '0 0 Dydd Sul Sul Su'],
['DDD DDDo DDDD', '45 45ain 045'],
['w wo ww', '6 6ed 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45ain day of the year'],
['L', '14/02/2010'],
['LL', '14 Chwefror 2010'],
['LLL', '14 Chwefror 2010 15:25'],
['LLLL', 'Dydd Sul, 14 Chwefror 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 Chwe 2010'],
['lll', '14 Chwe 2010 15:25'],
['llll', 'Sul, 14 Chwe 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1af', '1af');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2il', '2il');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3ydd', '3ydd');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4ydd', '4ydd');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5ed', '5ed');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6ed', '6ed');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7ed', '7ed');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8fed', '8fed');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9fed', '9fed');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10fed', '10fed');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11eg', '11eg');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12fed', '12fed');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13eg', '13eg');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14eg', '14eg');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15fed', '15fed');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16eg', '16eg');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17eg', '17eg');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18fed', '18fed');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19eg', '19eg');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20fed', '20fed');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21ain', '21ain');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22ain', '22ain');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23ain', '23ain');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24ain', '24ain');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25ain', '25ain');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26ain', '26ain');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27ain', '27ain');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28ain', '28ain');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29ain', '29ain');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30ain', '30ain');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31ain', '31ain');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Dydd Sul Sul Su_Dydd Llun Llun Ll_Dydd Mawrth Maw Ma_Dydd Mercher Mer Me_Dydd Iau Iau Ia_Dydd Gwener Gwe Gw_Dydd Sadwrn Sad Sa'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ychydig eiliadau", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "munud", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "munud", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 munud", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 munud", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "awr", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "awr", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 awr", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 awr", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 awr", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "diwrnod", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "diwrnod", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 diwrnod", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "diwrnod", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 diwrnod", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 diwrnod", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mis", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mis", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mis", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mis", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mis", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mis", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mis", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mis", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mis", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "blwyddyn", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "blwyddyn", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 flynedd", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "blwyddyn", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 flynedd", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "mewn ychydig eiliadau", "prefix");
test.equal(moment(0).from(30000), "ychydig eiliadau yn àl", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "mewn ychydig eiliadau", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "mewn 5 diwrnod", "in 5 days");
test.done();
},
"same day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Heddiw am 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Heddiw am 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Heddiw am 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Yfory am 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Heddiw am 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ddoe am 02:00", "yesterday at the same time");
test.done();
},
"same next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [am] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [am] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [am] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"same last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"same all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ain', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1af', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1af', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2il', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2il', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/cy'), 'cy', "module should export cy");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Danish
*************************************************/
exports["lang:da"] = {
setUp : function (cb) {
moment.lang('da');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd [den] Do MMMM YYYY, h:mm:ss a', 'søndag den 14. februar 2010, 3:25:50 pm'],
['ddd hA', 'søn 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 februar feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. søndag søn sø'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[den] DDDo [dag på året]', 'den 45. dag på året'],
['L', '14/02/2010'],
['LL', '14 februar 2010'],
['LLL', '14 februar 2010 15:25'],
['LLLL', 'søndag 14. februar, 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 feb 2010'],
['lll', '14 feb 2010 15:25'],
['llll', 'søn 14. feb, 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'søndag søn sø_mandag man ma_tirsdag tir ti_onsdag ons on_torsdag tor to_fredag fre fr_lørdag lør lø'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "få sekunder", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "et minut", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "et minut", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutter", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutter", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "en time", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "en time", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 timer", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 timer", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 timer", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "en dag", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "en dag", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dage", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "en dag", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dage", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dage", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "en måned", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "en måned", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "en måned", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 måneder", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 måneder", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 måneder", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "en måned", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 måneder", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 måneder", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "et år", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "et år", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 år", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "et år", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 år", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "om få sekunder", "prefix");
test.equal(moment(0).from(30000), "få sekunder siden", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "få sekunder siden", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "om få sekunder", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "om 5 dage", "in 5 days");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/da'), 'da', "module should export da");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
German
*************************************************/
exports["lang:de"] = {
setUp : function (cb) {
moment.lang('de');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'],
['ddd, hA', 'So., 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. Sonntag So. So'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14.02.2010'],
['LL', '14. Februar 2010'],
['LLL', '14. Februar 2010 15:25 Uhr'],
['LLLL', 'Sonntag, 14. Februar 2010 15:25 Uhr'],
['l', '14.2.2010'],
['ll', '14. Febr. 2010'],
['lll', '14. Febr. 2010 15:25 Uhr'],
['llll', 'So., 14. Febr. 2010 15:25 Uhr']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ein paar Sekunden", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "eine Minute", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "eine Minute", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 Minuten", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 Minuten", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "eine Stunde", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "eine Stunde", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 Stunden", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 Stunden", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 Stunden", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ein Tag", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ein Tag", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 Tage", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ein Tag", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 Tage", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 Tage", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ein Monat", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ein Monat", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ein Monat", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 Monate", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 Monate", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 Monate", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ein Monat", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 Monate", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 Monate", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ein Jahr", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ein Jahr", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 Jahre", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ein Jahr", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 Jahre", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "in ein paar Sekunden", "prefix");
test.equal(moment(0).from(30000), "vor ein paar Sekunden", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "in ein paar Sekunden", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "in 5 Tagen", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Heute um 02:00 Uhr", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Heute um 02:25 Uhr", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Heute um 03:00 Uhr", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Morgen um 02:00 Uhr", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Heute um 01:00 Uhr", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Gestern um 02:00 Uhr", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [um] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [um] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [um] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[letzten] dddd [um] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[letzten] dddd [um] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[letzten] dddd [um] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/de'), 'de', "module should export de");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Modern Greek
*************************************************/
exports["lang:el"] = {
setUp : function (cb) {
moment.lang('el');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var i,
tests = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split("_");
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(24);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Κυριακή, Φεβρουάριος 14η 2010, 3:25:50 μμ'],
['dddd, D MMMM YYYY, h:mm:ss a', 'Κυριακή, 14 Φεβρουαρίου 2010, 3:25:50 μμ'],
['ddd, hA', 'Κυρ, 3ΜΜ'],
['dddd, MMMM YYYY', 'Κυριακή, Φεβρουάριος 2010'],
['M Mo MM MMMM MMM', '2 2η 02 Φεβρουάριος Φεβ'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14η 14'],
['d do dddd ddd dd', '0 0η Κυριακή Κυρ Κυ'],
['DDD DDDo DDDD', '45 45η 045'],
['w wo ww', '6 6η 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'μμ ΜΜ'],
['[the] DDDo [day of the year]', 'the 45η day of the year'],
['L', '14/02/2010'],
['LL', '14 Φεβρουαρίου 2010'],
['LLL', '14 Φεβρουαρίου 2010 3:25 ΜΜ'],
['LLLL', 'Κυριακή, 14 Φεβρουαρίου 2010 3:25 ΜΜ'],
['l', '14/2/2010'],
['ll', '14 Φεβ 2010'],
['lll', '14 Φεβ 2010 3:25 ΜΜ'],
['llll', 'Κυρ, 14 Φεβ 2010 3:25 ΜΜ']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1η', '1η');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2η', '2η');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3η', '3η');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4η', '4η');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5η', '5η');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6η', '6η');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7η', '7η');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8η', '8η');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9η', '9η');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10η', '10η');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11η', '11η');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12η', '12η');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13η', '13η');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14η', '14η');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15η', '15η');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16η', '16η');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17η', '17η');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18η', '18η');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19η', '19η');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20η', '20η');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21η', '21η');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22η', '22η');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23η', '23η');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24η', '24η');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25η', '25η');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26η', '26η');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27η', '27η');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28η', '28η');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29η', '29η');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30η', '30η');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31η', '31η');
test.done();
},
"format month" : function (test) {
test.expect(12);
var i,
expected = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var i,
expected = 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "δευτερόλεπτα", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ένα λεπτό", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ένα λεπτό", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 λεπτά", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 λεπτά", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "μία ώρα", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "μία ώρα", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ώρες", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ώρες", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ώρες", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "μία μέρα", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "μία μέρα", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 μέρες", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "μία μέρα", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 μέρες", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 μέρες", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ένας μήνας", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ένας μήνας", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ένας μήνας", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 μήνες", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 μήνες", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 μήνες", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ένας μήνας", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 μήνες", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 μήνες", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ένας χρόνος", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ένας χρόνος", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 χρόνια", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ένας χρόνος", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 χρόνια", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "σε δευτερόλεπτα", "prefix");
test.equal(moment(0).from(30000), "δευτερόλεπτα πριν", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "δευτερόλεπτα πριν", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "σε δευτερόλεπτα", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "σε 5 μέρες", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Σήμερα στις 2:00 ΠΜ", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Σήμερα στις 2:25 ΠΜ", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Σήμερα στις 3:00 ΠΜ", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Αύριο στις 2:00 ΠΜ", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Σήμερα στη 1:00 ΠΜ", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Χθες στις 2:00 ΠΜ", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [στις] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [στις] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[την προηγούμενη] dddd [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[την προηγούμενη] dddd [στις] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[την προηγούμενη] dddd [στις] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 52, "Dec 31 2006 should be week 52");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 30]).week(), 52, "Dec 30 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 52, "Dec 29 2002 should be week 52");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 52, "Dec 28 2008 should be week 52");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(7);
test.equal(moment([2009, 11, 27]).week(), 52, "Dec 27 2009 should be week 52");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 2]).week(), 53, "Jan 2 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 9]).week(), 1, "Jan 9 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 26]).week(), 51, "Dec 26 2010 should be week 51");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 8]).week(), 1, "Jan 8 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52η', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1η', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1η', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2η', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2η', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/el'), 'el', "module should export el");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Australian English
*************************************************/
exports["lang:en-au"] = {
setUp : function (cb) {
moment.lang('en-au');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
['ddd, hA', 'Sun, 3PM'],
['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14th 14'],
['d do dddd ddd dd', '0 0th Sunday Sun Su'],
['DDD DDDo DDDD', '45 45th 045'],
['w wo ww', '6 6th 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45th day of the year'],
['L', '14/02/2010'],
['LL', '14 February 2010'],
['LLL', '14 February 2010 3:25 PM'],
['LLLL', 'Sunday, 14 February 2010 3:25 PM'],
['l', '14/2/2010'],
['ll', '14 Feb 2010'],
['lll', '14 Feb 2010 3:25 PM'],
['llll', 'Sun, 14 Feb 2010 3:25 PM']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "a few seconds", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "a minute", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "a minute", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "an hour", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "an hour", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hours", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hours", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hours", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "a day", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "a day", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 days", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "a day", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 days", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 days", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "a month", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "a month", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "a month", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 months", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 months", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 months", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "a month", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 months", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 months", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "a year", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "a year", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 years", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "a year", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 years", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "in a few seconds", "prefix");
test.equal(moment(0).from(30000), "a few seconds ago", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "in a few seconds", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "in 5 days", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Today at 2:00 AM", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 2:25 AM", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 3:00 AM", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 2:00 AM", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 1:00 AM", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 2:00 AM", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/en-au'), 'en-au', "module should export en-au");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
English (Canadian)
*************************************************/
exports["lang:en-ca"] = {
setUp : function (cb) {
moment.lang('en-ca');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var i,
tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_");
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
['ddd, hA', 'Sun, 3PM'],
['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14th 14'],
['d do dddd ddd dd', '0 0th Sunday Sun Su'],
['DDD DDDo DDDD', '45 45th 045'],
['w wo ww', '8 8th 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45th day of the year'],
['L', '2010-02-14'],
['LL', '14 February, 2010'],
['LLL', '14 February, 2010 3:25 PM'],
['LLLL', 'Sunday, 14 February, 2010 3:25 PM'],
['l', '2010-2-14'],
['ll', '14 Feb, 2010'],
['lll', '14 Feb, 2010 3:25 PM'],
['llll', 'Sun, 14 Feb, 2010 3:25 PM']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
test.done();
},
"format month" : function (test) {
test.expect(12);
var i,
expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var i,
expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "a few seconds", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "a minute", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "a minute", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "an hour", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "an hour", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hours", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hours", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hours", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "a day", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "a day", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 days", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "a day", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 days", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 days", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "a month", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "a month", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "a month", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 months", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 months", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 months", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "a month", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 months", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 months", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "a year", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "a year", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 years", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "a year", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 years", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "in a few seconds", "prefix");
test.equal(moment(0).from(30000), "a few seconds ago", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "in a few seconds", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "in 5 days", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Today at 2:00 AM", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 2:25 AM", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 3:00 AM", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 2:00 AM", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 1:00 AM", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 2:00 AM", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/en-ca'), 'en-ca', "module should export en-ca");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
British English
*************************************************/
exports["lang:en-gb"] = {
setUp : function (cb) {
moment.lang('en-gb');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
['ddd, hA', 'Sun, 3PM'],
['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14th 14'],
['d do dddd ddd dd', '0 0th Sunday Sun Su'],
['DDD DDDo DDDD', '45 45th 045'],
['w wo ww', '6 6th 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45th day of the year'],
['L', '14/02/2010'],
['LL', '14 February 2010'],
['LLL', '14 February 2010 15:25'],
['LLLL', 'Sunday, 14 February 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 Feb 2010'],
['lll', '14 Feb 2010 15:25'],
['llll', 'Sun, 14 Feb 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "a few seconds", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "a minute", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "a minute", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "an hour", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "an hour", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hours", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hours", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hours", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "a day", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "a day", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 days", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "a day", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 days", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 days", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "a month", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "a month", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "a month", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 months", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 months", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 months", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "a month", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 months", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 months", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "a year", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "a year", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 years", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "a year", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 years", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "in a few seconds", "prefix");
test.equal(moment(0).from(30000), "a few seconds ago", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "in a few seconds", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "in 5 days", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Today at 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/en-gb'), 'en-gb', "module should export en-gb");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
English
*************************************************/
exports["lang:en"] = {
setUp : function (cb) {
moment.lang('en');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var i,
tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_");
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
['ddd, hA', 'Sun, 3PM'],
['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14th 14'],
['d do dddd ddd dd', '0 0th Sunday Sun Su'],
['DDD DDDo DDDD', '45 45th 045'],
['w wo ww', '8 8th 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45th day of the year'],
['L', '02/14/2010'],
['LL', 'February 14 2010'],
['LLL', 'February 14 2010 3:25 PM'],
['LLLL', 'Sunday, February 14 2010 3:25 PM'],
['l', '2/14/2010'],
['ll', 'Feb 14 2010'],
['lll', 'Feb 14 2010 3:25 PM'],
['llll', 'Sun, Feb 14 2010 3:25 PM']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
test.done();
},
"format month" : function (test) {
test.expect(12);
var i,
expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var i,
expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "a few seconds", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "a minute", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "a minute", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "an hour", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "an hour", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hours", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hours", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hours", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "a day", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "a day", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 days", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "a day", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 days", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 days", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "a month", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "a month", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "a month", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 months", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 months", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 months", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "a month", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 months", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 months", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "a year", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "a year", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 years", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "a year", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 years", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "in a few seconds", "prefix");
test.equal(moment(0).from(30000), "a few seconds ago", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "in a few seconds", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "in 5 days", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Today at 2:00 AM", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 2:25 AM", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 3:00 AM", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 2:00 AM", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 1:00 AM", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 2:00 AM", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', "Jan 15 2012 should be week 3");
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Esperanto
*************************************************/
exports["lang:eo"] = {
setUp : function (cb) {
moment.lang('eo');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.'],
['ddd, hA', 'Dim, 3P.T.M.'],
['M Mo MM MMMM MMM', '2 2a 02 februaro feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14a 14'],
['d do dddd ddd dd', '0 0a Dimanĉo Dim Di'],
['DDD DDDo DDDD', '45 45a 045'],
['w wo ww', '7 7a 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'p.t.m. P.T.M.'],
['[la] DDDo [tago] [de] [la] [jaro]', 'la 45a tago de la jaro'],
['L', '2010-02-14'],
['LL', '14-an de februaro, 2010'],
['LLL', '14-an de februaro, 2010 15:25'],
['LLLL', 'Dimanĉo, la 14-an de februaro, 2010 15:25'],
['l', '2010-2-14'],
['ll', '14-an de feb, 2010'],
['lll', '14-an de feb, 2010 15:25'],
['llll', 'Dim, la 14-an de feb, 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3a', '3a');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4a', '4a');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5a', '5a');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6a', '6a');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7a', '7a');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8a', '8a');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9a', '9a');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10a', '10a');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11a', '11a');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12a', '12a');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13a', '13a');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14a', '14a');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15a', '15a');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16a', '16a');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17a', '17a');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18a', '18a');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19a', '19a');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20a', '20a');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23a', '23a');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24a', '24a');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25a', '25a');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26a', '26a');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27a', '27a');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28a', '28a');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29a', '29a');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30a', '30a');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Dimanĉo Dim Di_Lundo Lun Lu_Mardo Mard Ma_Merkredo Merk Me_Ĵaŭdo Ĵaŭ Ĵa_Vendredo Ven Ve_Sabato Sab Sa'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "sekundoj", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuto", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuto", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutoj", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutoj", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "horo", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "horo", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horoj", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horoj", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horoj", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "tago", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "tago", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 tagoj", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "tago", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 tagoj", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 tagoj", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "monato", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "monato", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "monato", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 monatoj", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 monatoj", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 monatoj", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "monato", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 monatoj", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 monatoj", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "jaro", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "jaro", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 jaroj", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "jaro", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 jaroj", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "je sekundoj", "je prefix");
test.equal(moment(0).from(30000), "antaŭ sekundoj", "antaŭ prefix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "antaŭ sekundoj", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "je sekundoj", "je sekundoj");
test.equal(moment().add({d: 5}).fromNow(), "je 5 tagoj", "je 5 tagoj");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Hodiaŭ je 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Hodiaŭ je 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Hodiaŭ je 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Morgaŭ je 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hodiaŭ je 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hieraŭ je 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [je] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [je] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [je] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1a', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1a', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2a', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2a', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3a', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/eo'), 'eo', "module should export eo");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Spanish
*************************************************/
exports["lang:es"] = {
setUp : function (cb) {
moment.lang('es');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(23);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'domingo, febrero 14º 2010, 3:25:50 pm'],
['ddd, hA', 'dom., 3PM'],
['M Mo MM MMMM MMM', '2 2º 02 febrero feb.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14º 14'],
['d do dddd ddd dd', '0 0º domingo dom. Do'],
['DDD DDDo DDDD', '45 45º 045'],
['w wo ww', '6 6º 06'],
['YYYY-MMM-DD', '2010-feb-14'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45º day of the year'],
['L', '14/02/2010'],
['LL', '14 de febrero del 2010'],
['LLL', '14 de febrero del 2010 15:25'],
['LLLL', 'domingo, 14 de febrero del 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 de feb. del 2010'],
['lll', '14 de feb. del 2010 15:25'],
['llll', 'dom., 14 de feb. del 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'domingo dom. Do_lunes lun. Lu_martes mar. Ma_miércoles mié. Mi_jueves jue. Ju_viernes vie. Vi_sábado sáb. Sá'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "unos segundos", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minuto", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minuto", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutos", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutos", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "una hora", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "una hora", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horas", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horas", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horas", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un día", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un día", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 días", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un día", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 días", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 días", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mes", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mes", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mes", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meses", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meses", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meses", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mes", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meses", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meses", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un año", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un año", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 años", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un año", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 años", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "en unos segundos", "prefix");
test.equal(moment(0).from(30000), "hace unos segundos", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "hace unos segundos", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "en unos segundos", "en unos segundos");
test.equal(moment().add({d: 5}).fromNow(), "en 5 días", "en 5 días");
test.done();
},
"calendar day" : function (test) {
test.expect(7);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "hoy a las 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "hoy a las 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "hoy a las 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "mañana a las 2:00", "tomorrow at the same time");
test.equal(moment(a).add({ d: 1, h : -1 }).calendar(), "mañana a la 1:00", "tomorrow minus 1 hour");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "hoy a la 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "ayer a las 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/es'), 'es', "module should export es");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Estonian
**************************************************/
exports["lang:et"] = {
setUp : function (cb) {
moment.lang('et');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' peaks olema kuu ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, H:mm:ss', 'pühapäev, 14. veebruar 2010, 15:25:50'],
['ddd, h', 'P, 3'],
['M Mo MM MMMM MMM', '2 2. 02 veebruar veebr'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. pühapäev P P'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[aasta] DDDo [päev]', 'aasta 45. päev'],
['L', '14.02.2010'],
['LL', '14. veebruar 2010'],
['LLL', '14. veebruar 2010 15:25'],
['LLLL', 'pühapäev, 14. veebruar 2010 15:25'],
['l', '14.2.2010'],
['ll', '14. veebr 2010'],
['lll', '14. veebr 2010 15:25'],
['llll', 'P, 14. veebr 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'pühapäev P P_esmaspäev E E_teisipäev T T_kolmapäev K K_neljapäev N N_reede R R_laupäev L L'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "paar sekundit", "44 seconds = paar sekundit");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "üks minut", "45 seconds = üks minut");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "üks minut", "89 seconds = üks minut");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutit", "90 seconds = 2 minutit");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutit", "44 minutes = 44 minutit");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "üks tund", "45 minutes = tund aega");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "üks tund", "89 minutes = üks tund");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 tundi", "90 minutes = 2 tundi");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 tundi", "5 hours = 5 tundi");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 tundi", "21 hours = 21 tundi");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "üks päev", "22 hours = üks päev");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "üks päev", "35 hours = üks päev");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 päeva", "36 hours = 2 päeva");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "üks päev", "1 day = üks päev");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 päeva", "5 days = 5 päeva");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 päeva", "25 days = 25 päeva");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "üks kuu", "26 days = üks kuu");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "üks kuu", "30 days = üks kuu");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "üks kuu", "45 days = üks kuu");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 kuud", "46 days = 2 kuud");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 kuud", "75 days = 2 kuud");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 kuud", "76 days = 3 kuud");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "üks kuu", "1 month = üks kuu");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 kuud", "5 months = 5 kuud");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 kuud", "344 days = 11 kuud");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "üks aasta", "345 days = üks aasta");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "üks aasta", "547 days = üks aasta");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 aastat", "548 days = 2 aastat");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "üks aasta", "1 year = üks aasta");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 aastat", "5 years = 5 aastat");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "mõne sekundi pärast", "prefix");
test.equal(moment(0).from(30000), "mõni sekund tagasi", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "mõni sekund tagasi", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(18);
test.equal(moment().add({s: 30}).fromNow(), "mõne sekundi pärast", "in a few seconds");
test.equal(moment().subtract({s: 30}).fromNow(), "mõni sekund tagasi", "a few seconds ago");
test.equal(moment().add({m: 1}).fromNow(), "ühe minuti pärast", "in a minute");
test.equal(moment().subtract({m: 1}).fromNow(), "üks minut tagasi", "a minute ago");
test.equal(moment().add({m: 5}).fromNow(), "5 minuti pärast", "in 5 minutes");
test.equal(moment().subtract({m: 5}).fromNow(), "5 minutit tagasi", "5 minutes ago");
test.equal(moment().add({d: 1}).fromNow(), "ühe päeva pärast", "in one day");
test.equal(moment().subtract({d: 1}).fromNow(), "üks päev tagasi", "one day ago");
test.equal(moment().add({d: 5}).fromNow(), "5 päeva pärast", "in 5 days");
test.equal(moment().subtract({d: 5}).fromNow(), "5 päeva tagasi", "5 days ago");
test.equal(moment().add({M: 1}).fromNow(), "kuu aja pärast", "in a month");
test.equal(moment().subtract({M: 1}).fromNow(), "kuu aega tagasi", "a month ago");
test.equal(moment().add({M: 5}).fromNow(), "5 kuu pärast", "in 5 months");
test.equal(moment().subtract({M: 5}).fromNow(), "5 kuud tagasi", "5 months ago");
test.equal(moment().add({y: 1}).fromNow(), "ühe aasta pärast", "in a year");
test.equal(moment().subtract({y: 1}).fromNow(), "aasta tagasi", "a year ago");
test.equal(moment().add({y: 5}).fromNow(), "5 aasta pärast", "in 5 years");
test.equal(moment().subtract({y: 5}).fromNow(), "5 aastat tagasi", "5 years ago");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Täna, 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Täna, 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Täna, 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Homme, 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Täna, 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Eile, 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[Järgmine] dddd LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Järgmine] dddd LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Järgmine] dddd LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Eelmine] dddd LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Eelmine] dddd LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Eelmine] dddd LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 nädal tagasi");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "1 nädala pärast");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 nädalat tagasi");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "2 nädala pärast");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/et'), 'et', "module should export et");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Euskara
*************************************************/
exports["lang:eu"] = {
setUp : function (cb) {
moment.lang('eu');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'igandea, otsaila 14. 2010, 3:25:50 pm'],
['ddd, hA', 'ig., 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 otsaila ots.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. igandea ig. ig'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '7 7. 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '2010-02-14'],
['LL', '2010ko otsailaren 14a'],
['LLL', '2010ko otsailaren 14a 15:25'],
['LLLL', 'igandea, 2010ko otsailaren 14a 15:25'],
['l', '2010-2-14'],
['ll', '2010ko ots. 14a'],
['lll', '2010ko ots. 14a 15:25'],
['llll', 'ig., 2010ko ots. 14a 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'igandea ig. ig_astelehena al. al_asteartea ar. ar_asteazkena az. az_osteguna og. og_ostirala ol. ol_larunbata lr. lr'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "segundo batzuk", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minutu bat", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minutu bat", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutu", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutu", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ordu bat", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ordu bat", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ordu", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ordu", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ordu", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "egun bat", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "egun bat", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 egun", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "egun bat", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 egun", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 egun", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "hilabete bat", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "hilabete bat", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "hilabete bat", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 hilabete", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 hilabete", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 hilabete", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "hilabete bat", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 hilabete", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 hilabete", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "urte bat", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "urte bat", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 urte", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "urte bat", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 urte", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "segundo batzuk barru", "prefix");
test.equal(moment(0).from(30000), "duela segundo batzuk", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "duela segundo batzuk", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "segundo batzuk barru", "in seconds");
test.equal(moment().add({d: 5}).fromNow(), "5 egun barru", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "gaur 02:00etan", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "gaur 02:25etan", "now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "gaur 03:00etan", "now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "bihar 02:00etan", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "gaur 01:00etan", "now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "atzo 02:00etan", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd LT[etan]'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd LT[etan]'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd LT[etan]'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/eu'), 'eu', "module should export eu");
}
test.done();
}
};
// moment.js Persian (fa) tests
// author: Ebrahim Byagowi : https://github.com/ebraminio
var moment = require("../../moment");
exports["lang:fa"] = {
setUp : function (cb) {
moment.lang('fa');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(24);
var tests = 'ژانویه_فوریهارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month());
}
for (i = 0; i < 12; i++) {
equalTest(tests[i], 'MMM', i);
equalTest(tests[i], 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'یک\u200cشنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر'],
['ddd, hA', 'یک\u200cشنبه، ۳بعد از ظهر'],
['M Mo MM MMMM MMM', '۲ ۲م ۰۲ فوریه فوریه'],
['YYYY YY', '۲۰۱۰ ۱۰'],
['D Do DD', '۱۴ ۱۴م ۱۴'],
['d do dddd ddd dd', '۰ ۰م یک\u200cشنبه یک\u200cشنبه ی'],
['DDD DDDo DDDD', '۴۵ ۴۵م ۰۴۵'],
['w wo ww', '۸ ۸م ۰۸'],
['h hh', '۳ ۰۳'],
['H HH', '۱۵ ۱۵'],
['m mm', '۲۵ ۲۵'],
['s ss', '۵۰ ۵۰'],
['a A', 'بعد از ظهر بعد از ظهر'],
['DDDo [روز سال]', '۴۵م روز سال'],
['L', '۱۴/۰۲/۲۰۱۰'],
['LL', '۱۴ فوریه ۲۰۱۰'],
['LLL', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'],
['LLLL', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'],
['l', '۱۴/۲/۲۰۱۰'],
['ll', '۱۴ فوریه ۲۰۱۰'],
['lll', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'],
['llll', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '۱م', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '۲م', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '۳م', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '۴م', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '۵م', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '۶م', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '۷م', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '۸م', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '۹م', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '۱۰م', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '۱۱م', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '۱۲م', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '۱۳م', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '۱۴م', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '۱۵م', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '۱۶م', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '۱۷م', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '۱۸م', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '۱۹م', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '۲۰م', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '۲۱م', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '۲۲م', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '۲۳م', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '۲۴م', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '۲۵م', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '۲۶م', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '۲۷م', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '۲۸م', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '۲۹م', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '۳۰م', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '۳۱م', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'ژانویه ژانویه_فوریه فوریهارس مارس_آوریل آوریل_مه مه_ژوئن ژوئن_ژوئیه ژوئیه_اوت اوت_سپتامبر سپتامبر_اکتبر اکتبر_نوامبر نوامبر_دسامبر دسامبر'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'یک\u200cشنبه یک\u200cشنبه ی_دوشنبه دوشنبه د_سه\u200cشنبه سه\u200cشنبه س_چهارشنبه چهارشنبه چ_پنج\u200cشنبه پنج\u200cشنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "چندین ثانیه", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "یک دقیقه", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "یک دقیقه", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "۲ دقیقه", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "۴۴ دقیقه", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "یک ساعت", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "یک ساعت", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "۲ ساعت", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "۵ ساعت", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "۲۱ ساعت", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "یک روز", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "یک روز", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "۲ روز", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "یک روز", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "۵ روز", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "۲۵ روز", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "یک ماه", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "یک ماه", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "یک ماه", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "۲ ماه", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "۲ ماه", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "۳ ماه", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "یک ماه", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "۵ ماه", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "۱۱ ماه", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "یک سال", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "یک سال", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "۲ سال", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "یک سال", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "۵ سال", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "در چندین ثانیه", "prefix");
test.equal(moment(0).from(30000), "چندین ثانیه پیش", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "چندین ثانیه پیش", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "در چندین ثانیه", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "در ۵ روز", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "امروز ساعت ۰۲:۰۰", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "امروز ساعت ۰۲:۲۵", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "امروز ساعت ۰۳:۰۰", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "فردا ساعت ۰۲:۰۰", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "امروز ساعت ۰۱:۰۰", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "دیروز ساعت ۰۲:۰۰", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [ساعت] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [ساعت] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [ساعت] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Saturday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1");
test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2");
test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2");
test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2");
test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2");
test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(5);
test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2");
test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2");
test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).format('w ww wo'), '۱ ۰۱ ۱م', "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).format('w ww wo'), '۱ ۰۱ ۱م', "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '۲ ۰۲ ۲م', "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).format('w ww wo'), '۲ ۰۲ ۲م', "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '۳ ۰۳ ۳م', "Jan 14 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/fa'), 'fa', "module should export fa");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Finnish
*************************************************/
exports["lang:fi"] = {
setUp : function (cb) {
moment.lang('fi');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm'],
['ddd, hA', 'su, 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 helmikuu helmi'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. sunnuntai su su'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[vuoden] DDDo [päivä]', 'vuoden 45. päivä'],
['L', '14.02.2010'],
['LL', '14. helmikuuta 2010'],
['LLL', '14. helmikuuta 2010, klo 15.25'],
['LLLL', 'sunnuntai, 14. helmikuuta 2010, klo 15.25'],
['l', '14.2.2010'],
['ll', '14. helmi 2010'],
['lll', '14. helmi 2010, klo 15.25'],
['llll', 'su, 14. helmi 2010, klo 15.25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1st');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2nd');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3rd');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4th');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5th');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6th');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7th');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8th');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9th');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10th');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11th');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12th');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13th');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14th');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15th');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16th');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17th');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18th');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19th');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20th');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21st');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22nd');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23rd');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24th');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25th');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26th');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27th');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28th');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29th');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30th');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31st');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'sunnuntai su su_maanantai ma ma_tiistai ti ti_keskiviikko ke ke_torstai to to_perjantai pe pe_lauantai la la'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "muutama sekunti", "44 seconds = few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuutti", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuutti", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "kaksi minuuttia", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuuttia", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "tunti", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "tunti", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "kaksi tuntia", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "viisi tuntia", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 tuntia", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "päivä", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "päivä", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "kaksi päivää", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "päivä", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "viisi päivää", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 päivää", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "kuukausi", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "kuukausi", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "kuukausi", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "kaksi kuukautta", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "kaksi kuukautta", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "kolme kuukautta", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "kuukausi", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "viisi kuukautta", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 kuukautta", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "vuosi", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "vuosi", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "kaksi vuotta", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "vuosi", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "viisi vuotta", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "muutaman sekunnin päästä", "prefix");
test.equal(moment(0).from(30000), "muutama sekunti sitten", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "muutama sekunti sitten", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "muutaman sekunnin päästä", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "viiden päivän päästä", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "tänään klo 02.00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "tänään klo 02.25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "tänään klo 03.00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "huomenna klo 02.00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "tänään klo 01.00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "eilen klo 02.00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [klo] LT'), "today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [klo] LT'), "today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [klo] LT'), "today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), "today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), "today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), "today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "yksi viikko sitten");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "yhden viikon päästä");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "kaksi viikkoa sitten");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "kaden viikon päästä");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/fi'), 'fi', "module should export fi");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Danish
*************************************************/
exports["lang:fo"] = {
setUp : function (cb) {
moment.lang('fo');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd [tann] Do MMMM YYYY, h:mm:ss a', 'sunnudagur tann 14. februar 2010, 3:25:50 pm'],
['ddd hA', 'sun 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 februar feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. sunnudagur sun su'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[tann] DDDo [dagin á árinum]', 'tann 45. dagin á árinum'],
['L', '14/02/2010'],
['LL', '14 februar 2010'],
['LLL', '14 februar 2010 15:25'],
['LLLL', 'sunnudagur 14. februar, 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 feb 2010'],
['lll', '14 feb 2010 15:25'],
['llll', 'sun 14. feb, 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'sunnudagur sun su_mánadagur mán má_týsdagur týs tý_mikudagur mik mi_hósdagur hós hó_fríggjadagur frí fr_leygardagur ley le'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "fá sekund", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ein minutt", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ein minutt", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuttir", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuttir", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ein tími", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ein tími", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 tímar", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 tímar", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 tímar", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ein dagur", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ein dagur", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagar", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ein dagur", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagar", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagar", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ein mánaði", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ein mánaði", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ein mánaði", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mánaðir", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mánaðir", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mánaðir", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ein mánaði", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mánaðir", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mánaðir", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "eitt ár", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "eitt ár", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ár", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "eitt ár", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ár", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "um fá sekund", "prefix");
test.equal(moment(0).from(30000), "fá sekund síðani", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "fá sekund síðani", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "um fá sekund", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "um 5 dagar", "in 5 days");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/fo'), 'fo', "module should export fo");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
French (Canadian)
*************************************************/
exports["lang:fr-ca"] = {
setUp : function (cb) {
moment.lang('fr-ca');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var i,
tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_");
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14 2010, 3:25:50 pm'],
['ddd, hA', 'dim., 3PM'],
['M Mo MM MMMM MMM', '2 2 02 février févr.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 dimanche dim. Di'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '2010-02-14'],
['LL', '14 février 2010'],
['LLL', '14 février 2010 15:25'],
['LLLL', 'dimanche 14 février 2010 15:25'],
['l', '2010-2-14'],
['ll', '14 févr. 2010'],
['lll', '14 févr. 2010 15:25'],
['llll', 'dim. 14 févr. 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var i,
expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var i,
expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "quelques secondes", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "une minute", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "une minute", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "une heure", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "une heure", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 heures", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 heures", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 heures", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un jour", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un jour", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 jours", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un jour", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 jours", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 jours", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mois", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mois", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mois", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mois", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mois", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mois", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mois", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mois", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mois", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un an", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un an", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ans", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un an", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ans", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "dans quelques secondes", "prefix");
test.equal(moment(0).from(30000), "il y a quelques secondes", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "dans quelques secondes", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "dans 5 jours", "in 5 days");
test.done();
},
"same day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Aujourd'hui à 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Aujourd'hui à 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Aujourd'hui à 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Demain à 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Aujourd'hui à 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hier à 02:00", "yesterday at the same time");
test.done();
},
"same next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"same last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"same all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1er', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1er', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/fr-ca'), 'fr-ca', "module should export fr-ca");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
French
*************************************************/
exports["lang:fr"] = {
setUp : function (cb) {
moment.lang('fr');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"),
i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14 2010, 3:25:50 pm'],
['ddd, hA', 'dim., 3PM'],
['M Mo MM MMMM MMM', '2 2 02 février févr.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 dimanche dim. Di'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '6 6 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '14/02/2010'],
['LL', '14 février 2010'],
['LLL', '14 février 2010 15:25'],
['LLLL', 'dimanche 14 février 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 févr. 2010'],
['lll', '14 févr. 2010 15:25'],
['llll', 'dim. 14 févr. 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "quelques secondes", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "une minute", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "une minute", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "une heure", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "une heure", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 heures", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 heures", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 heures", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un jour", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un jour", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 jours", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un jour", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 jours", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 jours", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mois", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mois", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mois", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mois", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mois", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mois", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mois", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mois", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mois", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un an", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un an", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ans", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un an", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ans", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "dans quelques secondes", "prefix");
test.equal(moment(0).from(30000), "il y a quelques secondes", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "dans quelques secondes", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "dans 5 jours", "in 5 days");
test.done();
},
"same day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Aujourd'hui à 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Aujourd'hui à 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Aujourd'hui à 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Demain à 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Aujourd'hui à 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hier à 02:00", "yesterday at the same time");
test.done();
},
"same next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"same last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"same all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1er', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1er', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/fr'), 'fr', "module should export fr");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Galego
*************************************************/
exports["lang:gl"] = {
setUp : function (cb) {
moment.lang('gl');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = "Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.".split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = "Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.".split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = "Domingo Dom. Do_Luns Lun. Lu_Martes Mar. Ma_Mércores Mér. Mé_Xoves Xov. Xo_Venres Ven. Ve_Sábado Sáb. Sá".split("_"),
i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "uns segundos", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minuto", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minuto", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutos", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutos", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "unha hora", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "unha hora", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horas", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horas", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horas", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un día", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un día", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 días", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un día", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 días", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 días", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mes", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mes", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mes", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meses", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meses", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meses", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mes", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meses", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meses", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un ano", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un ano", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anos", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un ano", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anos", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "nuns segundos", "prefix");
test.equal(moment(0).from(30000), "hai uns segundos", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "hai uns segundos", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "nuns segundos", "en unos segundos");
test.equal(moment().add({d: 5}).fromNow(), "en 5 días", "en 5 días");
test.done();
},
"calendar day" : function (test) {
test.expect(7);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "hoxe ás 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "hoxe ás 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "hoxe ás 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "mañá ás 2:00", "tomorrow at the same time");
test.equal(moment(a).add({ d: 1, h : -1 }).calendar(), "mañá á 1:00", "tomorrow minus 1 hour");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "hoxe á 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "onte á 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"regression tests" : function (test) {
test.expect(1);
var lastWeek = moment().subtract({ d: 4 }).hours(1);
test.equal(lastWeek.calendar(), lastWeek.format('[o] dddd [pasado a] LT'), "1 o'clock bug");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1º', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2º', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3º', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/gl'), 'gl', "module should export gl");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Hebrew
**************************************************/
exports["lang:he"] = {
setUp : function (cb) {
moment.lang('he');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יוליוגוסט אוג׳_ספטמבר ספט׳וקטובר אוק׳ובמבר נוב׳_דצמבר דצמ׳'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'ראשון, פברואר 14 2010, 3:25:50 pm'],
['ddd, hA', 'א׳, 3PM'],
['M Mo MM MMMM MMM', '2 2 02 פברואר פבר׳'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 ראשון א׳ א'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '14/02/2010'],
['LL', '14 בפברואר 2010'],
['LLL', '14 בפברואר 2010 15:25'],
['LLLL', 'ראשון, 14 בפברואר 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 פבר׳ 2010'],
['lll', '14 פבר׳ 2010 15:25'],
['llll', 'א׳, 14 פבר׳ 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יוליוגוסט אוג׳_ספטמבר ספט׳וקטובר אוק׳ובמבר נוב׳_דצמבר דצמ׳'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split("|"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "מספר שניות", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "דקה", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "דקה", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 דקות", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 דקות", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "שעה", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "שעה", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "שעתיים", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 שעות", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 שעות", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "יום", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "יום", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "יומיים", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "יום", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ימים", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ימים", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "חודש", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "חודש", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "חודש", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "חודשיים", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "חודשיים", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 חודשים", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "חודש", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 חודשים", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 חודשים", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "שנה", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "שנה", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "שנתיים", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "שנה", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 שנים", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "בעוד מספר שניות", "prefix");
test.equal(moment(0).from(30000), "לפני מספר שניות", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "לפני מספר שניות", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "בעוד מספר שניות", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "בעוד 5 ימים", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "היום ב־02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "היום ב־02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "היום ב־03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "מחר ב־02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "היום ב־01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "אתמול ב־02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [בשעה] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [בשעה] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [בשעה] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/he'), 'he', "module should export he");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Hindi
*************************************************/
exports["lang:hi"] = {
setUp : function (cb) {
moment.lang('hi');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(21);
var a = [
['dddd, Do MMMM YYYY, a h:mm:ss बजे', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५:५० बजे'],
['ddd, a h बजे', 'रवि, दोपहर ३ बजे'],
['M Mo MM MMMM MMM', '२ २ ०२ फ़रवरी फ़र.'],
['YYYY YY', '२०१० १०'],
['D Do DD', '१४ १४ १४'],
['d do dddd ddd dd', ' रविवार रवि र'],
['DDD DDDo DDDD', '४५ ४५ ०४५'],
['w wo ww', '८ ८ ०८'],
['h hh', '३ ०३'],
['H HH', '१५ १५'],
['m mm', '२५ २५'],
['s ss', '५० ५०'],
['a A', 'दोपहर दोपहर'],
['L', '१४/०२/२०१०'],
['LL', '१४ फ़रवरी २०१०'],
['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'],
['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'],
['l', '१४/२/२०१०'],
['ll', '१४ फ़र. २०१०'],
['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'],
['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१');
test.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२');
test.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३');
test.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४');
test.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५');
test.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६');
test.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७');
test.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८');
test.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९');
test.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०');
test.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११');
test.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२');
test.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३');
test.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४');
test.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५');
test.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६');
test.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७');
test.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८');
test.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९');
test.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०');
test.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१');
test.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२');
test.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३');
test.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४');
test.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५');
test.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६');
test.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७');
test.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८');
test.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९');
test.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०');
test.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "कुछ ही क्षण", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "एक मिनट", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "एक मिनट", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "२ मिनट", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "४४ मिनट", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "एक घंटा", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "एक घंटा", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "२ घंटे", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "५ घंटे", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "२१ घंटे", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "एक दिन", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "एक दिन", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "२ दिन", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "एक दिन", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "५ दिन", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "२५ दिन", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "एक महीने", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "एक महीने", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "एक महीने", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "२ महीने", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "२ महीने", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "३ महीने", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "एक महीने", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "५ महीने", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "११ महीने", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "एक वर्ष", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "एक वर्ष", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "२ वर्ष", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "एक वर्ष", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "५ वर्ष", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "कुछ ही क्षण में", "prefix");
test.equal(moment(0).from(30000), "कुछ ही क्षण पहले", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "कुछ ही क्षण पहले", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "कुछ ही क्षण में", "कुछ ही क्षण में");
test.equal(moment().add({d: 5}).fromNow(), "५ दिन में", "५ दिन में");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "आज रात २: बजे", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "आज रात २:२५ बजे", "Now plus 25 min");
test.equal(moment(a).add({ h: 3 }).calendar(), "आज सुबह ५: बजे", "Now plus 3 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "कल रात २: बजे", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "आज रात १: बजे", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "कल रात २: बजे", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"meridiem" : function (test) {
test.expect(12);
test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "रात", "before dawn");
test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "सुबह", "morning");
test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "दोपहर", "during day");
test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "शाम", "evening");
test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "शाम", "late evening");
test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "रात", "night");
test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "रात", "before dawn");
test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "सुबह", "morning");
test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "दोपहर", " during day");
test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "शाम", "evening");
test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "शाम", "late evening");
test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "रात", "night");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/hi'), 'hi', "module should export hi");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Croatian
*************************************************/
exports["lang:hr"] = {
setUp : function (cb) {
moment.lang('hr');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'sječanj sje._veljača vel._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. veljača 2010, 3:25:50 pm'],
['ddd, hA', 'ned., 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 veljača vel.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. nedjelja ned. ne'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '7 7. 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14. 02. 2010'],
['LL', '14. veljača 2010'],
['LLL', '14. veljača 2010 15:25'],
['LLLL', 'nedjelja, 14. veljača 2010 15:25'],
['l', '14. 2. 2010'],
['ll', '14. vel. 2010'],
['lll', '14. vel. 2010 15:25'],
['llll', 'ned., 14. vel. 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'sječanj sje._veljača vel._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "par sekundi", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "jedna minuta", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "jedna minuta", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minute", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuta", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "jedan sat", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "jedan sat", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 sata", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 sati", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 sati", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dan", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dan", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dana", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dan", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dana", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dana", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mjesec", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mjesec", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mjesec", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mjeseca", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mjeseca", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mjeseca", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mjesec", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mjeseci", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mjeseci", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "godinu", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "godinu", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 godine", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "godinu", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 godina", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "za par sekundi", "prefix");
test.equal(moment(0).from(30000), "prije par sekundi", "prefix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "prije par sekundi", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "za par sekundi", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "za 5 dana", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "danas u 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "danas u 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "danas u 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "sutra u 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "danas u 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "jučer u 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
return '[u] [nedjelju] [u] LT';
case 3:
return '[u] [srijedu] [u] LT';
case 6:
return '[u] [subotu] [u] LT';
case 1:
case 2:
case 4:
case 5:
return '[u] dddd [u] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
case 3:
return '[prošlu] dddd [u] LT';
case 6:
return '[prošle] [subote] [u] LT';
case 1:
case 2:
case 4:
case 5:
return '[prošli] dddd [u] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/hr'), 'hr', "module should export hr");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Hungarian
*************************************************/
exports["lang:hu"] = {
setUp : function (cb) {
moment.lang('hu');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split("_"),
i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(20);
var a = [
['dddd, MMMM Do YYYY, HH:mm:ss', 'vasárnap, február 14. 2010, 15:25:50'],
['ddd, HH', 'vas, 15'],
['M Mo MM MMMM MMM', '2 2. 02 február feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. vasárnap vas v'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '7 7. 07'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['[az év] DDDo [napja]', 'az év 45. napja'],
['L', '2010.02.14.'],
['LL', '2010. február 14.'],
['LLL', '2010. február 14., 15:25'],
['LLLL', '2010. február 14., vasárnap 15:25'],
['l', '2010.2.14.'],
['ll', '2010. feb 14.'],
['lll', '2010. feb 14., 15:25'],
['llll', '2010. feb 14., vas 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"meridiem" : function (test) {
test.expect(8);
test.equal(moment([2011, 2, 23, 0, 0]).format('a'), "de", "am");
test.equal(moment([2011, 2, 23, 11, 59]).format('a'), "de", "am");
test.equal(moment([2011, 2, 23, 12, 0]).format('a'), "du", "pm");
test.equal(moment([2011, 2, 23, 23, 59]).format('a'), "du", "pm");
test.equal(moment([2011, 2, 23, 0, 0]).format('A'), "DE", "AM");
test.equal(moment([2011, 2, 23, 11, 59]).format('A'), "DE", "AM");
test.equal(moment([2011, 2, 23, 12, 0]).format('A'), "DU", "PM");
test.equal(moment([2011, 2, 23, 23, 59]).format('A'), "DU", "PM");
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split("_"),
i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'vasárnap vas_hétfő hét_kedd kedd_szerda sze_csütörtök csüt_péntek pén_szombat szo'.split("_"),
i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "néhány másodperc", "44 másodperc = néhány másodperc");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "egy perc", "45 másodperc = egy perc");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "egy perc", "89 másodperc = egy perc");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 perc", "90 másodperc = 2 perc");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 perc", "44 perc = 44 perc");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "egy óra", "45 perc = egy óra");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "egy óra", "89 perc = egy óra");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 óra", "90 perc = 2 óra");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 óra", "5 óra = 5 óra");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 óra", "21 óra = 21 óra");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "egy nap", "22 óra = egy nap");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "egy nap", "35 óra = egy nap");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 nap", "36 óra = 2 nap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "egy nap", "1 nap = egy nap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 nap", "5 nap = 5 nap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 nap", "25 nap = 25 nap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "egy hónap", "26 nap = egy hónap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "egy hónap", "30 nap = egy hónap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "egy hónap", "45 nap = egy hónap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 hónap", "46 nap = 2 hónap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 hónap", "75 nap = 2 hónap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 hónap", "76 nap = 3 hónap");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "egy hónap", "1 hónap = egy hónap");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 hónap", "5 hónap = 5 hónap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 hónap", "344 nap = 11 hónap");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "egy év", "345 nap = egy év");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "egy év", "547 nap = egy év");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 év", "548 nap = 2 év");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "egy év", "1 év = egy év");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 év", "5 év = 5 év");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "néhány másodperc múlva", "prefix");
test.equal(moment(0).from(30000), "néhány másodperce", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "néhány másodperce", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "néhány másodperc múlva", "néhány másodperc múlva");
test.equal(moment().add({d: 5}).fromNow(), "5 nap múlva", "5 nap múlva");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "ma 2:00-kor", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "ma 2:25-kor", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "ma 3:00-kor", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "holnap 2:00-kor", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "ma 1:00-kor", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "tegnap 2:00-kor", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_');
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), "today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), "today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), "today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_');
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), "today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), "today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), "today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "egy héte");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "egy hét múlva");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 hete");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "2 hét múlva");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/hu'), 'hu', "module should export hu");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Armenian
*************************************************/
exports["lang:hy-am"] = {
setUp : function (cb) {
moment.lang('hy-am');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"parse exceptional case" : function (test) {
test.equal(moment('11 մայիսի 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989');
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, HH:mm:ss', 'կիրակի, 14 փետրվարի 2010, 15:25:50'],
['ddd, h A', 'կրկ, 3 ցերեկվա'],
['M Mo MM MMMM MMM', '2 2 02 փետրվար փտր'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 կիրակի կրկ կրկ'],
['DDD DDDo DDDD', '45 45-րդ 045'],
['w wo ww', '7 7-րդ 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'ցերեկվա ցերեկվա'],
['[տարվա] DDDo [օրը]', 'տարվա 45-րդ օրը'],
['L', '14.02.2010'],
['LL', '14 փետրվարի 2010 թ.'],
['LLL', '14 փետրվարի 2010 թ., 15:25'],
['LLLL', 'կիրակի, 14 փետրվարի 2010 թ., 15:25'],
['l', '14.2.2010'],
['ll', '14 փտր 2010 թ.'],
['lll', '14 փտր 2010 թ., 15:25'],
['llll', 'կրկ, 14 փտր 2010 թ., 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format meridiem" : function (test) {
test.expect(8);
test.equal(moment([2012, 11, 28, 0, 0]).format("A"), "գիշերվա", "night");
test.equal(moment([2012, 11, 28, 3, 59]).format("A"), "գիշերվա", "night");
test.equal(moment([2012, 11, 28, 4, 0]).format("A"), "առավոտվա", "morning");
test.equal(moment([2012, 11, 28, 11, 59]).format("A"), "առավոտվա", "morning");
test.equal(moment([2012, 11, 28, 12, 0]).format("A"), "ցերեկվա", "afternoon");
test.equal(moment([2012, 11, 28, 16, 59]).format("A"), "ցերեկվա", "afternoon");
test.equal(moment([2012, 11, 28, 17, 0]).format("A"), "երեկոյան", "evening");
test.equal(moment([2012, 11, 28, 23, 59]).format("A"), "երեկոյան", "evening");
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ին', '1-ին');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2-րդ', '2-րդ');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3-րդ', '3-րդ');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4-րդ', '4-րդ');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5-րդ', '5-րդ');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6-րդ', '6-րդ');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7-րդ', '7-րդ');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8-րդ', '8-րդ');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9-րդ', '9-րդ');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10-րդ', '10-րդ');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11-րդ', '11-րդ');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12-րդ', '12-րդ');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13-րդ', '13-րդ');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14-րդ', '14-րդ');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15-րդ', '15-րդ');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16-րդ', '16-րդ');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17-րդ', '17-րդ');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18-րդ', '18-րդ');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19-րդ', '19-րդ');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20-րդ', '20-րդ');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21-րդ', '21-րդ');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22-րդ', '22-րդ');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23-րդ', '23-րդ');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24-րդ', '24-րդ');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25-րդ', '25-րդ');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26-րդ', '26-րդ');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27-րդ', '27-րդ');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28-րդ', '28-րդ');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29-րդ', '29-րդ');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30-րդ', '30-րդ');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31-րդ', '31-րդ');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format month case" : function (test) {
test.expect(24);
var months = {
'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'),
'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_')
}, i;
for (i = 0; i < 12; i++) {
test.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
test.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]);
}
test.done();
},
"format month short case" : function (test) {
test.expect(24);
var monthsShort = {
'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_')
}, i;
for (i = 0; i < 12; i++) {
test.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);
test.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]);
}
test.done();
},
"format month case with escaped symbols" : function (test) {
test.expect(48);
var months = {
'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'),
'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_')
}, i;
for (i = 0; i < 12; i++) {
test.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
test.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMMM[</b>]'), '<i>1</i> <b>' + months.accusative[i] + '</b>', '1 <b>' + months.accusative[i] + '</b>');
test.equal(moment([2013, i, 1]).format('D[-ին օրը] MMMM'), '1-ին օրը ' + months.accusative[i], '1-ին օրը ' + months.accusative[i]);
test.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]);
}
test.done();
},
"format month short case with escaped symbols" : function (test) {
test.expect(48);
var monthsShort = {
'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_')
}, i;
for (i = 0; i < 12; i++) {
test.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);
test.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMM[</b>]'), '<i>1</i> <b>' + monthsShort.accusative[i] + '</b>', '1 <b>' + monthsShort.accusative[i] + '</b>');
test.equal(moment([2013, i, 1]).format('D[-ին օրը] MMM'), '1-ին օրը ' + monthsShort.accusative[i], '1-ին օրը ' + monthsShort.accusative[i]);
test.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'կիրակի կրկ կրկ_երկուշաբթի երկ երկ_երեքշաբթի երք երքորեքշաբթի չրք չրք_հինգշաբթի հնգ հնգ_ուրբաթ ուրբ ուրբ_շաբաթ շբթ շբթ'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(32);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "մի քանի վայրկյան", "44 seconds = seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "րոպե", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "րոպե", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 րոպե", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 րոպե", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ժամ", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ժամ", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ժամ", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ժամ", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ժամ", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "օր", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "օր", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 օր", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "օր", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 օր", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), "11 օր", "11 days = 11 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), "21 օր", "21 days = 21 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 օր", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ամիս", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ամիս", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ամիս", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 ամիս", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 ամիս", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 ամիս", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ամիս", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 ամիս", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 ամիս", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "տարի", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "տարի", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 տարի", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "տարի", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 տարի", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "մի քանի վայրկյան հետո", "prefix");
test.equal(moment(0).from(30000), "մի քանի վայրկյան առաջ", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "մի քանի վայրկյան հետո", "in seconds");
test.equal(moment().add({d: 5}).fromNow(), "5 օր հետո", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "այսօր 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "այսօր 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "այսօր 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "վաղը 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "այսօր 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "երեկ 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
return 'dddd [օրը ժամը] LT';
}
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
return '[անցած] dddd [օրը ժամը] LT';
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ին', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ին', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-րդ', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-րդ', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-րդ', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/hy-am'), 'hy-am', "module should export hy");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Indonesian
*************************************************/
exports["lang:id"] = {
setUp : function (cb) {
moment.lang('id');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sore'],
['ddd, hA', 'Min, 3sore'],
['M Mo MM MMMM MMM', '2 2 02 Februari Feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 Minggu Min Mg'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '7 7 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'sore sore'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '14/02/2010'],
['LL', '14 Februari 2010'],
['LLL', '14 Februari 2010 pukul 15.25'],
['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'],
['l', '14/2/2010'],
['ll', '14 Feb 2010'],
['lll', '14 Feb 2010 pukul 15.25'],
['llll', 'Min, 14 Feb 2010 pukul 15.25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Minggu Min Mg_Senin Sen Sn_Selasa Sel Sl_Rabu Rab Rb_Kamis Kam Km_Jumat Jum Jm_Sabtu Sab Sb'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "beberapa detik", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "semenit", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "semenit", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 menit", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 menit", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "sejam", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "sejam", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 jam", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 jam", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 jam", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "sehari", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "sehari", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 hari", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "sehari", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 hari", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 hari", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "sebulan", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "sebulan", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "sebulan", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 bulan", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 bulan", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 bulan", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "sebulan", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 bulan", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 bulan", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "setahun", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "setahun", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 tahun", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "setahun", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 tahun", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "dalam beberapa detik", "prefix");
test.equal(moment(0).from(30000), "beberapa detik yang lalu", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "beberapa detik yang lalu", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "dalam beberapa detik", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "dalam 5 hari", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Hari ini pukul 02.00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Hari ini pukul 02.25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Hari ini pukul 03.00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Besok pukul 02.00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hari ini pukul 01.00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Kemarin pukul 02.00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/id'), 'id', "module should export id");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Icelandic
*************************************************/
exports["lang:is"] = {
setUp : function (cb) {
moment.lang('is');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'sunnudagur, 14. febrúar 2010, 3:25:50 pm'],
['ddd, hA', 'sun, 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 febrúar feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. sunnudagur sun Su'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14/02/2010'],
['LL', '14. febrúar 2010'],
['LLL', '14. febrúar 2010 kl. 15:25'],
['LLLL', 'sunnudagur, 14. febrúar 2010 kl. 15:25'],
['l', '14/2/2010'],
['ll', '14. feb 2010'],
['lll', '14. feb 2010 kl. 15:25'],
['llll', 'sun, 14. feb 2010 kl. 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'sunnudagur sun Su_mánudagur mán Má_þriðjudagur þri Þr_miðvikudagur mið Mi_fimmtudagur fim Fi_föstudagur fös Fö_laugardagur lau La'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(34);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "nokkrar sekúndur", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "mínúta", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "mínúta", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 mínútur", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 mínútur", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 21}), true), "21 mínúta", "21 minutes = 21 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "klukkustund", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "klukkustund", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 klukkustundir", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 klukkustundir", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 klukkustund", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dagur", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dagur", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagar", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dagur", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagar", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagar", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), "11 dagar", "11 days = 11 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), "21 dagur", "21 days = 21 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mánuður", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mánuður", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mánuður", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mánuðir", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mánuðir", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mánuðir", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mánuður", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mánuðir", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mánuðir", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ár", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ár", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ár", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ár", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ár", "5 years = 5 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), "21 ár", "21 years = 21 years");
test.done();
},
"suffix" : function (test) {
test.expect(3);
test.equal(moment(30000).from(0), "eftir nokkrar sekúndur", "prefix");
test.equal(moment(0).from(30000), "fyrir nokkrum sekúndum síðan", "suffix");
test.equal(moment().subtract({m: 1}).fromNow(), "fyrir mínútu síðan", "a minute ago");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "fyrir nokkrum sekúndum síðan", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(3);
test.equal(moment().add({s: 30}).fromNow(), "eftir nokkrar sekúndur", "in a few seconds");
test.equal(moment().add({m: 1}).fromNow(), "eftir mínútu", "in a minute");
test.equal(moment().add({d: 5}).fromNow(), "eftir 5 daga", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "í dag kl. 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "í dag kl. 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "í dag kl. 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "á morgun kl. 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "í dag kl. 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "í gær kl. 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/is'), 'is', "module should export is");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Italian
*************************************************/
exports["lang:it"] = {
setUp : function (cb) {
moment.lang('it');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'Gennaio Gen_Febbraio Feb_Marzo Mar_Aprile Apr_Maggio Mag_Giugno Giu_Luglio Lug_Agosto Ago_Settembre Set_Ottobre Ott_Novembre Nov_Dicembre Dic'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Domenica, Febbraio 14º 2010, 3:25:50 pm'],
['ddd, hA', 'Dom, 3PM'],
['M Mo MM MMMM MMM', '2 2º 02 Febbraio Feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14º 14'],
['d do dddd ddd dd', '0 0º Domenica Dom D'],
['DDD DDDo DDDD', '45 45º 045'],
['w wo ww', '6 6º 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45º day of the year'],
['L', '14/02/2010'],
['LL', '14 Febbraio 2010'],
['LLL', '14 Febbraio 2010 15:25'],
['LLLL', 'Domenica, 14 Febbraio 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 Feb 2010'],
['lll', '14 Feb 2010 15:25'],
['llll', 'Dom, 14 Feb 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'Gennaio Gen_Febbraio Feb_Marzo Mar_Aprile Apr_Maggio Mag_Giugno Giu_Luglio Lug_Agosto Ago_Settembre Set_Ottobre Ott_Novembre Nov_Dicembre Dic'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Domenica Dom D_Lunedì Lun L_Martedì Mar Ma_Mercoledì Mer Me_Giovedì Gio G_Venerdì Ven V_Sabato Sab S'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "alcuni secondi", "44 seconds = seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minuto", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minuto", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuti", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuti", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "un'ora", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "un'ora", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ore", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ore", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ore", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un giorno", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un giorno", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 giorni", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un giorno", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 giorni", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 giorni", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mese", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mese", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mese", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mesi", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mesi", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mesi", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mese", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mesi", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mesi", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un anno", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un anno", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anni", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un anno", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anni", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "in alcuni secondi", "prefix");
test.equal(moment(0).from(30000), "alcuni secondi fa", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "in alcuni secondi", "in seconds");
test.equal(moment().add({d: 5}).fromNow(), "tra 5 giorni", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Oggi alle 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Oggi alle 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Oggi alle 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Domani alle 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Oggi alle 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ieri alle 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [alle] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [alle] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [alle] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[lo scorso] dddd [alle] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[lo scorso] dddd [alle] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[lo scorso] dddd [alle] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/it'), 'it', "module should export it");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Japanese
*************************************************/
exports["lang:ja"] = {
setUp : function (cb) {
moment.lang('ja');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, a h:mm:ss', '日曜日, 2月 14 2010, 午後 3:25:50'],
['ddd, Ah', '日, 午後3'],
['M Mo MM MMMM MMM', '2 2 02 2月 2月'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 日曜日 日 日'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', '午後 午後'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '2010/02/14'],
['LL', '2010年2月14日'],
['LLL', '2010年2月14日午後3時25分'],
['LLLL', '2010年2月14日午後3時25分 日曜日'],
['l', '2010/2/14'],
['ll', '2010年2月14日'],
['lll', '2010年2月14日午後3時25分'],
['llll', '2010年2月14日午後3時25分 日']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = '日曜日 日 日_月曜日 月 月_火曜日 火 火_水曜日 水 水_木曜日 木 木_金曜日 金 金_土曜日 土 土'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "数秒", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "1分", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "1分", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2分", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44分", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "1時間", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "1時間", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2時間", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5時間", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21時間", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "1日", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "1日", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2日", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "1日", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5日", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25日", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "1ヶ月", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "1ヶ月", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "1ヶ月", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2ヶ月", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2ヶ月", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3ヶ月", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "1ヶ月", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5ヶ月", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11ヶ月", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "1年", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "1年", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2年", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "1年", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5年", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "数秒後", "prefix");
test.equal(moment(0).from(30000), "数秒前", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "数秒前", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "数秒後", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "5日後", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "今日 午前2時0分", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "今日 午前2時25分", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "今日 午前3時0分", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "明日 午前2時0分", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "今日 午前1時0分", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨日 午前2時0分", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ja'), 'ja', "module should export ja");
}
test.done();
}
};
// moment.js language configuration
// language : Georgian (ka)
// author : Irakli Janiashvili : https://github.com/irakli-janiashvili
var moment = require("../../moment");
exports["lang:ka"] = {
setUp : function (cb) {
moment.lang('ka');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('ka');
cb();
},
"parse" : function (test) {
test.expect(96);
var i,
tests = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split("_");
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' უნდა იყოს თვე ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'კვირა, თებერვალი მე-14 2010, 3:25:50 pm'],
['ddd, hA', 'კვი, 3PM'],
['M Mo MM MMMM MMM', '2 მე-2 02 თებერვალი თებ'],
['YYYY YY', '2010 10'],
['D Do DD', '14 მე-14 14'],
['d do dddd ddd dd', '0 0 კვირა კვი კვ'],
['DDD DDDo DDDD', '45 45-ე 045'],
['w wo ww', '7 მე-7 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['წლის DDDo დღე', 'წლის 45-ე დღე'],
['L', '14/02/2010'],
['LL', '14 თებერვალი 2010'],
['LLL', '14 თებერვალი 2010 3:25 PM'],
['LLLL', 'კვირა, 14 თებერვალი 2010 3:25 PM'],
['l', '14/2/2010'],
['ll', '14 თებ 2010'],
['lll', '14 თებ 2010 3:25 PM'],
['llll', 'კვი, 14 თებ 2010 3:25 PM']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(35);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ლი', '1-ლი');
test.equal(moment([2011, 0, 2]).format('DDDo'), 'მე-2', 'მე-2');
test.equal(moment([2011, 0, 3]).format('DDDo'), 'მე-3', 'მე-3');
test.equal(moment([2011, 0, 4]).format('DDDo'), 'მე-4', 'მე-4');
test.equal(moment([2011, 0, 5]).format('DDDo'), 'მე-5', 'მე-5');
test.equal(moment([2011, 0, 6]).format('DDDo'), 'მე-6', 'მე-6');
test.equal(moment([2011, 0, 7]).format('DDDo'), 'მე-7', 'მე-7');
test.equal(moment([2011, 0, 8]).format('DDDo'), 'მე-8', 'მე-8');
test.equal(moment([2011, 0, 9]).format('DDDo'), 'მე-9', 'მე-9');
test.equal(moment([2011, 0, 10]).format('DDDo'), 'მე-10', 'მე-10');
test.equal(moment([2011, 0, 11]).format('DDDo'), 'მე-11', 'მე-11');
test.equal(moment([2011, 0, 12]).format('DDDo'), 'მე-12', 'მე-12');
test.equal(moment([2011, 0, 13]).format('DDDo'), 'მე-13', 'მე-13');
test.equal(moment([2011, 0, 14]).format('DDDo'), 'მე-14', 'მე-14');
test.equal(moment([2011, 0, 15]).format('DDDo'), 'მე-15', 'მე-15');
test.equal(moment([2011, 0, 16]).format('DDDo'), 'მე-16', 'მე-16');
test.equal(moment([2011, 0, 17]).format('DDDo'), 'მე-17', 'მე-17');
test.equal(moment([2011, 0, 18]).format('DDDo'), 'მე-18', 'მე-18');
test.equal(moment([2011, 0, 19]).format('DDDo'), 'მე-19', 'მე-19');
test.equal(moment([2011, 0, 20]).format('DDDo'), 'მე-20', 'მე-20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21-ე', '21-ე');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22-ე', '22-ე');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23-ე', '23-ე');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24-ე', '24-ე');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25-ე', '25-ე');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26-ე', '26-ე');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27-ე', '27-ე');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28-ე', '28-ე');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29-ე', '29-ე');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30-ე', '30-ე');
test.equal(moment("2011 40", "YYYY DDD").format('DDDo'), 'მე-40', 'მე-40');
test.equal(moment("2011 50", "YYYY DDD").format('DDDo'), '50-ე', '50-ე');
test.equal(moment("2011 60", "YYYY DDD").format('DDDo'), 'მე-60', 'მე-60');
test.equal(moment("2011 100", "YYYY DDD").format('DDDo'), 'მე-100', 'მე-100');
test.equal(moment("2011 101", "YYYY DDD").format('DDDo'), '101-ე', '101-ე');
test.done();
},
"format month" : function (test) {
test.expect(12);
var i,
expected = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var i,
expected = 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "რამდენიმე წამი", "44 წამი = რამდენიმე წამი");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "წუთი", "45 წამი = წუთი");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "წუთი", "89 წამი = წუთი");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 წუთი", "90 წამი = 2 წუთი");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 წუთი", "44 წამი = 44 წუთი");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "საათი", "45 წამი = საათი");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "საათი", "89 წამი = საათი");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 საათი", "90 წამი = 2 საათი");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 საათი", "5 საათი = 5 საათი");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 საათი", "21 საათი = 21 საათი");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "დღე", "22 საათი = დღე");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "დღე", "35 საათი = დღე");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 დღე", "36 საათი = 2 დღე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "დღე", "1 დღე = დღე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 დღე", "5 დღე = 5 დღე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 დღე", "25 დღე = 25 დღე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "თვე", "26 დღე = თვე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "თვე", "30 დღე = თვე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "თვე", "45 დღე = თვე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 თვე", "46 დღე = 2 თვე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 თვე", "75 დღე = 2 თვე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 თვე", "76 დღე = 3 თვე");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "თვე", "1 თვე = თვე");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 თვე", "5 თვე = 5 თვე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 თვე", "344 დღე = 11 თვე");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "წელი", "345 დღე = წელი");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "წელი", "547 დღე = წელი");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 წელი", "548 დღე = 2 წელი");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "წელი", "1 წელი = წელი");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 წელი", "5 წელი = 5 წელი");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "რამდენიმე წამში", "ში სუფიქსი");
test.equal(moment(0).from(30000), "რამდენიმე წამის წინ", "წინ სუფიქსი");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "რამდენიმე წამის წინ", "უნდა აჩვენოს როგორც წარსული");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "რამდენიმე წამში", "რამდენიმე წამში");
test.equal(moment().add({d: 5}).fromNow(), "5 დღეში", "5 დღეში");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "დღეს 2:00 AM-ზე", "დღეს ამავე დროს");
test.equal(moment(a).add({ m: 25 }).calendar(), "დღეს 2:25 AM-ზე", "ახლანდელ დროს დამატებული 25 წუთი");
test.equal(moment(a).add({ h: 1 }).calendar(), "დღეს 3:00 AM-ზე", "ახლანდელ დროს დამატებული 1 საათი");
test.equal(moment(a).add({ d: 1 }).calendar(), "ხვალ 2:00 AM-ზე", "ხვალ ამავე დროს");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "დღეს 1:00 AM-ზე", "ახლანდელ დროს გამოკლებული 1 საათი");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "გუშინ 2:00 AM-ზე", "გუშინ ამავე დროს");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), "დღეს + " + i + " დღე ახლანდელ დროს");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), "დღეს + " + i + " დღე დღის დასაწყისში");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), "დღეს + " + i + " დღე დღის დასასრულს");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), "დღეს - " + i + " დღე ახლანდელ დროს");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), "დღეს - " + i + " დღე დღის დასაწყისში");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), "დღეს - " + i + " დღე დღის დასასრულს");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 კვირის წინ");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "1 კვირაში");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 კვირის წინ");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "2 კვირაში");
test.done();
},
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "დეკ 26 2011 უნდა იყოს კვირა 1");
test.equal(moment([2012, 0, 1]).week(), 1, "იან 1 2012 უნდა იყოს კვირა 1");
test.equal(moment([2012, 0, 2]).week(), 2, "იან 2 2012 უნდა იყოს კვირა 2");
test.equal(moment([2012, 0, 8]).week(), 2, "იან 8 2012 უნდა იყოს კვირა 2");
test.equal(moment([2012, 0, 9]).week(), 3, "იან 9 2012 უნდა იყოს კვირა 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "იან 1 2007 უნდა იყოს კვირა 1");
test.equal(moment([2007, 0, 7]).week(), 1, "იან 7 2007 უნდა იყოს კვირა 1");
test.equal(moment([2007, 0, 8]).week(), 2, "იან 8 2007 უნდა იყოს კვირა 2");
test.equal(moment([2007, 0, 14]).week(), 2, "იან 14 2007 უნდა იყოს კვირა 2");
test.equal(moment([2007, 0, 15]).week(), 3, "იან 15 2007 უნდა იყოს კვირა 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "დეკ 31 2007 უნდა იყოს კვირა 1");
test.equal(moment([2008, 0, 1]).week(), 1, "იან 1 2008 უნდა იყოს კვირა 1");
test.equal(moment([2008, 0, 6]).week(), 1, "იან 6 2008 უნდა იყოს კვირა 1");
test.equal(moment([2008, 0, 7]).week(), 2, "იან 7 2008 უნდა იყოს კვირა 2");
test.equal(moment([2008, 0, 13]).week(), 2, "იან 13 2008 უნდა იყოს კვირა 2");
test.equal(moment([2008, 0, 14]).week(), 3, "იან 14 2008 უნდა იყოს კვირა 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "დეკ 30 2002 უნდა იყოს კვირა 1");
test.equal(moment([2003, 0, 1]).week(), 1, "იან 1 2003 უნდა იყოს კვირა 1");
test.equal(moment([2003, 0, 5]).week(), 1, "იან 5 2003 უნდა იყოს კვირა 1");
test.equal(moment([2003, 0, 6]).week(), 2, "იან 6 2003 უნდა იყოს კვირა 2");
test.equal(moment([2003, 0, 12]).week(), 2, "იან 12 2003 უნდა იყოს კვირა 2");
test.equal(moment([2003, 0, 13]).week(), 3, "იან 13 2003 უნდა იყოს კვირა 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "დეკ 29 2008 უნდა იყოს კვირა 1");
test.equal(moment([2009, 0, 1]).week(), 1, "იან 1 2009 უნდა იყოს კვირა 1");
test.equal(moment([2009, 0, 4]).week(), 1, "იან 4 2009 უნდა იყოს კვირა 1");
test.equal(moment([2009, 0, 5]).week(), 2, "იან 5 2009 უნდა იყოს კვირა 2");
test.equal(moment([2009, 0, 11]).week(), 2, "იან 11 2009 უნდა იყოს კვირა 2");
test.equal(moment([2009, 0, 12]).week(), 3, "იან 12 2009 უნდა იყოს კვირა 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "დეკ 28 2009 უნდა იყოს კვირა 1");
test.equal(moment([2010, 0, 1]).week(), 1, "იან 1 2010 უნდა იყოს კვირა 1");
test.equal(moment([2010, 0, 3]).week(), 1, "იან 3 2010 უნდა იყოს კვირა 1");
test.equal(moment([2010, 0, 4]).week(), 2, "იან 4 2010 უნდა იყოს კვირა 2");
test.equal(moment([2010, 0, 10]).week(), 2, "იან 10 2010 უნდა იყოს კვირა 2");
test.equal(moment([2010, 0, 11]).week(), 3, "იან 11 2010 უნდა იყოს კვირა 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "დეკ 27 2010 უნდა იყოს კვირა 1");
test.equal(moment([2011, 0, 1]).week(), 1, "იან 1 2011 უნდა იყოს კვირა 1");
test.equal(moment([2011, 0, 2]).week(), 1, "იან 2 2011 უნდა იყოს კვირა 1");
test.equal(moment([2011, 0, 3]).week(), 2, "იან 3 2011 უნდა იყოს კვირა 2");
test.equal(moment([2011, 0, 9]).week(), 2, "იან 9 2011 უნდა იყოს კვირა 2");
test.equal(moment([2011, 0, 10]).week(), 3, "იან 10 2011 უნდა იყოს კვირა 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ლი', "დეკ 26 2011 უნდა იყოს კვირა 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ლი', "იან 1 2012 უნდა იყოს კვირა 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 მე-2', "იან 2 2012 უნდა იყოს კვირა 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 მე-2', "იან 8 2012 უნდა იყოს კვირა 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 მე-3', "იან 9 2012 უნდა იყოს კვირა 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ka'), 'ka', "module should export ka");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Khmer
*************************************************/
exports["lang:km"] = {
setUp: function (cb) {
moment.lang('km');
cb();
},
tearDown: function (cb) {
moment.lang('km');
cb();
},
"parse": function (test) {
test.expect(96);
var tests = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មិនា មិនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split("_"),
i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format": function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'អាទិត្យ, កុម្ភៈ 14 2010, 3:25:50 pm'],
['ddd, hA', 'អាទិត្យ, 3PM'],
['M Mo MM MMMM MMM', '2 2 02 កុម្ភៈ កុម្ភៈ'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 អាទិត្យ អាទិត្យ អាទិត្យ'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '6 6 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '14/02/2010'],
['LL', '14 កុម្ភៈ 2010'],
['LLL', '14 កុម្ភៈ 2010 15:25'],
['LLLL', 'អាទិត្យ, 14 កុម្ភៈ 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 កុម្ភៈ 2010'],
['lll', '14 កុម្ភៈ 2010 15:25'],
['llll', 'អាទិត្យ, 14 កុម្ភៈ 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal": function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1st');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2nd');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3rd');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4th');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5th');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6th');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7th');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8th');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9th');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10th');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11th');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12th');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13th');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14th');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15th');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16th');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17th');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18th');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19th');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20th');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21st');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22nd');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23rd');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24th');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25th');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26th');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27th');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28th');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29th');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30th');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31st');
test.done();
},
"format month": function (test) {
test.expect(12);
var expected = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មិនា មិនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split("_"),
i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week": function (test) {
test.expect(7);
var expected = 'អាទិត្យ អាទិត្យ អាទិត្យ_ច័ន្ទ ច័ន្ទ ច័ន្ទ_អង្គារ អង្គារ អង្គារ_ពុធ ពុធ ពុធ_ព្រហស្បតិ៍ ព្រហស្បតិ៍ ព្រហស្បតិ៍_សុក្រ សុក្រ សុក្រ_សៅរ៍ សៅរ៍ សៅរ៍'.split("_"),
i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from": function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({
s: 44
}), true), "ប៉ុន្មានវិនាទី", "44 seconds = ប៉ុន្មានវិនាទី");
test.equal(start.from(moment([2007, 1, 28]).add({
s: 45
}), true), "មួយនាទី", "45 seconds = មួយនាទី");
test.equal(start.from(moment([2007, 1, 28]).add({
s: 89
}), true), "មួយនាទី", "89 seconds = មួយនាទី");
test.equal(start.from(moment([2007, 1, 28]).add({
s: 90
}), true), "2 នាទី", "90 seconds = 2 នាទី");
test.equal(start.from(moment([2007, 1, 28]).add({
m: 44
}), true), "44 នាទី", "44 minutes = 44 នាទី");
test.equal(start.from(moment([2007, 1, 28]).add({
m: 45
}), true), "មួយម៉ោង", "45 minutes = មួយម៉ោង");
test.equal(start.from(moment([2007, 1, 28]).add({
m: 89
}), true), "មួយម៉ោង", "89 minutes = មួយម៉ោង");
test.equal(start.from(moment([2007, 1, 28]).add({
m: 90
}), true), "2 ម៉ោង", "90 minutes = 2 ម៉ោង");
test.equal(start.from(moment([2007, 1, 28]).add({
h: 5
}), true), "5 ម៉ោង", "5 hours = 5 ម៉ោង");
test.equal(start.from(moment([2007, 1, 28]).add({
h: 21
}), true), "21 ម៉ោង", "21 hours = 21 ម៉ោង");
test.equal(start.from(moment([2007, 1, 28]).add({
h: 22
}), true), "មួយថ្ងៃ", "22 hours = មួយថ្ងៃ");
test.equal(start.from(moment([2007, 1, 28]).add({
h: 35
}), true), "មួយថ្ងៃ", "35 hours = មួយថ្ងៃ");
test.equal(start.from(moment([2007, 1, 28]).add({
h: 36
}), true), "2 ថ្ងៃ", "36 hours = 2 ថ្ងៃ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 1
}), true), "មួយថ្ងៃ", "1 day = មួយថ្ងៃ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 5
}), true), "5 ថ្ងៃ", "5 days = 5 ថ្ងៃ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 25
}), true), "25 ថ្ងៃ", "25 days = 25 ថ្ងៃ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 26
}), true), "មួយខែ", "26 days = មួយខែ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 30
}), true), "មួយខែ", "30 days = មួយខែ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 45
}), true), "មួយខែ", "45 days = មួយខែ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 46
}), true), "2 ខែ", "46 days = 2 ខែ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 74
}), true), "2 ខែ", "75 days = 2 ខែ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 76
}), true), "3 ខែ", "76 days = 3 ខែ");
test.equal(start.from(moment([2007, 1, 28]).add({
M: 1
}), true), "មួយខែ", "1 month = មួយខែ");
test.equal(start.from(moment([2007, 1, 28]).add({
M: 5
}), true), "5 ខែ", "5 months = 5 ខែ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 344
}), true), "11 ខែ", "344 days = 11 ខែ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 345
}), true), "មួយឆ្នាំ", "345 days = មួយឆ្នាំ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 547
}), true), "មួយឆ្នាំ", "547 days = មួយឆ្នាំ");
test.equal(start.from(moment([2007, 1, 28]).add({
d: 548
}), true), "2 ឆ្នាំ", "548 days = 2 ឆ្នាំ");
test.equal(start.from(moment([2007, 1, 28]).add({
y: 1
}), true), "មួយឆ្នាំ", "1 year = មួយឆ្នាំ");
test.equal(start.from(moment([2007, 1, 28]).add({
y: 5
}), true), "5 ឆ្នាំ", "5 years = 5 ឆ្នាំ");
test.done();
},
"suffix": function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "ប៉ុន្មានវិនាទីទៀត", "prefix");
test.equal(moment(0).from(30000), "ប៉ុន្មានវិនាទីមុន", "suffix");
test.done();
},
"now from now": function (test) {
test.expect(1);
test.equal(moment().fromNow(), "ប៉ុន្មានវិនាទីមុន", "now from now should display as in the past");
test.done();
},
"fromNow": function (test) {
test.expect(2);
test.equal(moment().add({
s: 30
}).fromNow(), "ប៉ុន្មានវិនាទីទៀត", "in a few seconds");
test.equal(moment().add({
d: 5
}).fromNow(), "5 ថ្ងៃទៀត", "in 5 days");
test.done();
},
"calendar day": function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "ថ្ងៃនៈ ម៉ោង 02:00", "today at the same time");
test.equal(moment(a).add({
m: 25
}).calendar(), "ថ្ងៃនៈ ម៉ោង 02:25", "Now plus 25 min");
test.equal(moment(a).add({
h: 1
}).calendar(), "ថ្ងៃនៈ ម៉ោង 03:00", "Now plus 1 hour");
test.equal(moment(a).add({
d: 1
}).calendar(), "ស្អែក ម៉ោង 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({
h: 1
}).calendar(), "ថ្ងៃនៈ ម៉ោង 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({
d: 1
}).calendar(), "ម្សិលមិញ ម៉ោង 02:00", "yesterday at the same time");
test.done();
},
"calendar next week": function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({
d: i
});
test.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week": function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({
d: i
});
test.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else": function (test) {
test.expect(4);
var weeksAgo = moment().subtract({
w: 1
}),
weeksFromNow = moment().add({
w: 1
});
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({
w: 2
});
weeksFromNow = moment().add({
w: 2
});
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday": function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday": function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday": function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday": function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday": function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday": function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday": function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted": function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language": function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/km'), 'km', "module should export km");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Korean
*************************************************/
exports["lang:kr"] = {
setUp : function (cb) {
moment.lang('ko');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"parse meridiem" : function (test) {
var elements = [{
expression : "1981년 9월 8일 오후 2시 30분",
inputFormat : "YYYY[년] M[월] D[일] A h[시] m[분]",
outputFormat : "A",
expected : "오후"
}, {
expression : "1981년 9월 8일 오전 2시 30분",
inputFormat : "YYYY[년] M[월] D[일] A h[시] m[분]",
outputFormat : "A h시",
expected : "오전 2시"
}, {
expression : "14시 30분",
inputFormat : "H[시] m[분]",
outputFormat : "A",
expected : "오후"
}, {
expression : "오후 4시",
inputFormat : "A h[시]",
outputFormat : "H",
expected : "16"
}], i, l, it, actual;
test.expect(elements.length);
for (i = 0, l = elements.length; i < l; ++i) {
it = elements[i];
actual = moment(it.expression, it.inputFormat).format(it.outputFormat);
test.equal(
actual,
it.expected,
"'" + it.outputFormat + "' of '" + it.expression + "' must be '" + it.expected + "' but was '" + actual + "'."
);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['YYYY년 MMMM Do dddd a h:mm:ss', '2010년 2월 14일 일요일 오후 3:25:50'],
['ddd A h', '일 오후 3'],
['M Mo MM MMMM MMM', '2 2일 02 2월 2월'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14일 14'],
['d do dddd ddd dd', '0 0일 일요일 일 일'],
['DDD DDDo DDDD', '45 45일 045'],
['w wo ww', '8 8일 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', '오후 오후'],
['일년 중 DDDo째 되는 날', '일년 중 45일째 되는 날'],
['L', '2010.02.14'],
['LL', '2010년 2월 14일'],
['LLL', '2010년 2월 14일 오후 3시 25분'],
['LLLL', '2010년 2월 14일 일요일 오후 3시 25분'],
['l', '2010.2.14'],
['ll', '2010년 2월 14일'],
['lll', '2010년 2월 14일 오후 3시 25분'],
['llll', '2010년 2월 14일 일 오후 3시 25분']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1일', '1일');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2일', '2일');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3일', '3일');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4일', '4일');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5일', '5일');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6일', '6일');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7일', '7일');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8일', '8일');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9일', '9일');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10일', '10일');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11일', '11일');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12일', '12일');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13일', '13일');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14일', '14일');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15일', '15일');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16일', '16일');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17일', '17일');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18일', '18일');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19일', '19일');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20일', '20일');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21일', '21일');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22일', '22일');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23일', '23일');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24일', '24일');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25일', '25일');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26일', '26일');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27일', '27일');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28일', '28일');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29일', '29일');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30일', '30일');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31일', '31일');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "몇초", "44초 = 몇초");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "일분", "45초 = 일분");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "일분", "89초 = 일분");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2분", "90초 = 2분");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44분", "44분 = 44분");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "한시간", "45분 = 한시간");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "한시간", "89분 = 한시간");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2시간", "90분 = 2시간");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5시간", "5시간 = 5시간");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21시간", "21시간 = 21시간");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "하루", "22시간 = 하루");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "하루", "35시간 = 하루");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2일", "36시간 = 2일");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "하루", "하루 = 하루");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5일", "5일 = 5일");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25일", "25일 = 25일");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "한달", "26일 = 한달");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "한달", "30일 = 한달");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "한달", "45일 = 한달");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2달", "46일 = 2달");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2달", "75일 = 2달");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3달", "76일 = 3달");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "한달", "1달 = 한달");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5달", "5달 = 5달");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11달", "344일 = 11달");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "일년", "345일 = 일년");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "일년", "547일 = 일년");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2년", "548일 = 2년");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "일년", "일년 = 일년");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5년", "5년 = 5년");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "몇초 후", "prefix");
test.equal(moment(0).from(30000), "몇초 전", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "몇초 전", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "몇초 후", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "5일 후", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "오늘 오전 2시 00분", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "오늘 오전 2시 25분", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "오늘 오전 3시 00분", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "내일 오전 2시 00분", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "오늘 오전 1시 00분", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "어제 오전 2시 00분", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1일', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1일', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2일', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2일', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3일', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ko'), 'ko', "module should export ko");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Luxembourgish
*************************************************/
exports["lang:lb"] = {
setUp: function (cb) {
moment.lang('lb');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown: function (cb) {
moment.lang('lb');
cb();
},
"parse": function (test) {
test.expect(96);
var tests = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format": function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, HH:mm:ss', 'Sonndeg, 14. Februar 2010, 15:25:50'],
['ddd, HH:mm', 'So., 15:25'],
['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. Sonndeg So. So'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14.02.2010'],
['LL', '14. Februar 2010'],
['LLL', '14. Februar 2010 15:25 Auer'],
['LLLL', 'Sonndeg, 14. Februar 2010 15:25 Auer'],
['l', '14.2.2010'],
['ll', '14. Febr. 2010'],
['lll', '14. Febr. 2010 15:25 Auer'],
['llll', 'So., 14. Febr. 2010 15:25 Auer']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format month": function (test) {
test.expect(12);
var expected = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week": function (test) {
test.expect(7);
var expected = 'Sonndeg So. So_Méindeg Mé. Mé_Dënschdeg Dë. Dë_Mëttwoch Më. Më_Donneschdeg Do. Do_Freideg Fr. Fr_Samschdeg Sa. Sa'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from": function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "e puer Sekonnen", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "eng Minutt", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "eng Minutt", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 Minutten", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 Minutten", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "eng Stonn", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "eng Stonn", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 Stonnen", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 Stonnen", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 Stonnen", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "een Dag", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "een Dag", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 Deeg", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "een Dag", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 Deeg", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 Deeg", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ee Mount", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ee Mount", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ee Mount", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 Méint", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 Méint", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 Méint", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ee Mount", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 Méint", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 Méint", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ee Joer", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ee Joer", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 Joer", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ee Joer", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 Joer", "5 years = 5 years");
test.done();
},
"suffix": function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "an e puer Sekonnen", "prefix");
test.equal(moment(0).from(30000), "virun e puer Sekonnen", "suffix");
test.done();
},
"fromNow": function (test) {
test.expect(13);
test.equal(moment().add({s: 30}).fromNow(), "an e puer Sekonnen", "in a few seconds");
test.equal(moment().add({d: 1}).fromNow(), "an engem Dag", "in one day");
test.equal(moment().add({d: 2}).fromNow(), "an 2 Deeg", "in 2 days");
test.equal(moment().add({d: 3}).fromNow(), "an 3 Deeg", "in 3 days");
test.equal(moment().add({d: 4}).fromNow(), "a 4 Deeg", "in 4 days");
test.equal(moment().add({d: 5}).fromNow(), "a 5 Deeg", "in 5 days");
test.equal(moment().add({d: 6}).fromNow(), "a 6 Deeg", "in 6 days");
test.equal(moment().add({d: 7}).fromNow(), "a 7 Deeg", "in 7 days");
test.equal(moment().add({d: 8}).fromNow(), "an 8 Deeg", "in 8 days");
test.equal(moment().add({d: 9}).fromNow(), "an 9 Deeg", "in 9 days");
test.equal(moment().add({d: 10}).fromNow(), "an 10 Deeg", "in 10 days");
test.equal(moment().add({y: 100}).fromNow(), "an 100 Joer", "in 100 years");
test.equal(moment().add({y: 400}).fromNow(), "a 400 Joer", "in 400 years");
test.done();
},
"calendar last week": function (test) {
test.expect(15);
var i, m, weekday, datestring;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
// Different date string for "Dënschdeg" (Tuesday) and "Donneschdeg" (Thursday)
weekday = parseInt(m.format('d'), 10);
datestring = (weekday === 2 || weekday === 4 ? '[Leschten] dddd [um] LT' : '[Leschte] dddd [um] LT');
test.equal(m.calendar(), m.format(datestring), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(datestring), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(datestring), "Today + " + i + " days end of day");
}
test.done();
},
"returns the name of the language": function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/lb'), 'lb', "module should export lb");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Lithuanian
*************************************************/
exports["lang:lt"] = {
setUp : function (cb) {
moment.lang('lt');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'sausio sau_vasario vas_kovo kov_balandžio bal_gegužės geg_biržėlio bir_liepos lie_rugpjūčio rgp_rugsėjo rgs_spalio spa_lapkričio lap_gruodžio grd'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'sekmadienis, 14-oji vasario 2010, 3:25:50 pm'],
['ddd, hA', 'Sek, 3PM'],
['M Mo MM MMMM MMM', '2 2-oji 02 vasario vas'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14-oji 14'],
['d do dddd ddd dd', '0 0-oji sekmadienis Sek S'],
['DDD DDDo DDDD', '45 45-oji 045'],
['w wo ww', '6 6-oji 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['DDDo [metų diena]', '45-oji metų diena'],
['L', '2010-02-14'],
['LL', '2010 m. vasario 14 d.'],
['LLL', '2010 m. vasario 14 d., 15:25 val.'],
['LLLL', '2010 m. vasario 14 d., sekmadienis, 15:25 val.'],
['l', '2010-02-14'],
['ll', '2010 m. vasario 14 d.'],
['lll', '2010 m. vasario 14 d., 15:25 val.'],
['llll', '2010 m. vasario 14 d., Sek, 15:25 val.']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1-oji', '1-oji');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2-oji', '2-oji');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3-oji', '3-oji');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4-oji', '4-oji');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5-oji', '5-oji');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6-oji', '6-oji');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7-oji', '7-oji');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8-oji', '8-oji');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9-oji', '9-oji');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10-oji', '10-oji');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11-oji', '11-oji');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12-oji', '12-oji');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13-oji', '13-oji');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14-oji', '14-oji');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15-oji', '15-oji');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16-oji', '16-oji');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17-oji', '17-oji');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18-oji', '18-oji');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19-oji', '19-oji');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20-oji', '20-oji');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21-oji', '21-oji');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22-oji', '22-oji');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23-oji', '23-oji');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24-oji', '24-oji');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25-oji', '25-oji');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26-oji', '26-oji');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27-oji', '27-oji');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28-oji', '28-oji');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29-oji', '29-oji');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30-oji', '30-oji');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31-oji', '31-oji');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'sausio sau_vasario vas_kovo kov_balandžio bal_gegužės geg_biržėlio bir_liepos lie_rugpjūčio rgp_rugsėjo rgs_spalio spa_lapkričio lap_gruodžio grd'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(37);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "kelios sekundės", "44 seconds = seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minutė", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minutė", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutės", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 10}), true), "10 minučių", "10 minutes = 10 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 11}), true), "11 minučių", "11 minutes = 11 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 19}), true), "19 minučių", "19 minutes = 19 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 20}), true), "20 minučių", "20 minutes = 20 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutės", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "valanda", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "valanda", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 valandos", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 valandos", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 10}), true), "10 valandų", "10 hours = 10 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 valandos", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "diena", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "diena", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dienos", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "diena", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dienos", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 10}), true), "10 dienų", "10 days = 10 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dienos", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mėnuo", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mėnuo", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mėnuo", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mėnesiai", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mėnesiai", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mėnesiai", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mėnuo", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mėnesiai", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 10}), true), "10 mėnesių", "10 months = 10 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mėnesių", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "metai", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "metai", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 metai", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "metai", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 metai", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "po kelių sekundžių", "prefix");
test.equal(moment(0).from(30000), "prieš kelias sekundes", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "prieš kelias sekundes", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "po kelių sekundžių", "in seconds");
test.equal(moment().add({d: 5}).fromNow(), "po 5 dienų", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Šiandien 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Šiandien 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Šiandien 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Rytoj 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Šiandien 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Vakar 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52-oji', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1-oji', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1-oji', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2-oji', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2-oji', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/lt'), 'lt', "module should export lt");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Latvian
*************************************************/
exports["lang:lv"] = {
setUp : function (cb) {
moment.lang('lv');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'svētdiena, 14. februāris 2010, 3:25:50 pm'],
['ddd, hA', 'Sv, 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 februāris feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. svētdiena Sv Sv'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14.02.2010'],
['LL', '2010. gada 14. februāris'],
['LLL', '2010. gada 14. februāris, 15:25'],
['LLLL', '2010. gada 14. februāris, svētdiena, 15:25'],
['l', '14.2.2010'],
['ll', '2010. gada 14. feb'],
['lll', '2010. gada 14. feb, 15:25'],
['llll', '2010. gada 14. feb, Sv, 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'svētdiena Sv Sv_pirmdiena P P_otrdiena O O_trešdiena T T_ceturtdiena C C_piektdiena Pk Pk_sestdiena S S'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "dažas sekundes", "44 seconds = seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minūti", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minūti", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minūtes", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minūtes", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "stundu", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "stundu", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 stundas", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 stundas", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 stunda", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dienu", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dienu", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dienas", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dienu", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dienas", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dienas", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mēnesi", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mēnesi", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mēnesi", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mēneši", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mēneši", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mēneši", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mēnesi", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mēneši", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mēneši", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "gadu", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "gadu", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 gadi", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "gadu", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 gadi", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "dažas sekundes vēlāk", "prefix");
test.equal(moment(0).from(30000), "dažas sekundes agrāk", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "dažas sekundes agrāk", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "dažas sekundes vēlāk", "in seconds");
test.equal(moment().add({d: 5}).fromNow(), "5 dienas vēlāk", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Šodien pulksten 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Šodien pulksten 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Šodien pulksten 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Rīt pulksten 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Šodien pulksten 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Vakar pulksten 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [pulksten] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [pulksten] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [pulksten] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/lv'), 'lv', "module should export lv");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Macedonian
*************************************************/
exports["lang:mk"] = {
"setUp" : function (cb) {
moment.lang('mk');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
"tearDown" : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'јануари јан_февруари фев_март мар_април апрај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ноеекември дек'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, H:mm:ss', 'недела, февруари 14-ти 2010, 15:25:50'],
['ddd, hA', 'нед, 3PM'],
['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14-ти 14'],
['d do dddd ddd dd', '0 0-ев недела нед нe'],
['DDD DDDo DDDD', '45 45-ти 045'],
['w wo ww', '7 7-ми 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45-ти day of the year'],
['L', '14.02.2010'],
['LL', '14 февруари 2010'],
['LLL', '14 февруари 2010 15:25'],
['LLLL', 'недела, 14 февруари 2010 15:25'],
['l', '14.2.2010'],
['ll', '14 фев 2010'],
['lll', '14 фев 2010 15:25'],
['llll', 'нед, 14 фев 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'јануари јан_февруари фев_март мар_април апрај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ноеекември дек'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'недела нед нe_понеделник пон пo_вторник вто вт_среда сре сретврток чет че_петок пет пе_сабота саб сa'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "неколку секунди", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "минута", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "минута", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 минути", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 минути", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "час", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "час", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 часа", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 часа", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 часа", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ден", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ден", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 дена", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ден", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 дена", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 дена", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "месец", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "месец", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "месец", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 месеци", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 месеци", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 месеци", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "месец", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 месеци", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 месеци", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "година", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "година", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 години", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "година", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 години", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "после неколку секунди", "prefix");
test.equal(moment(0).from(30000), "пред неколку секунди", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "пред неколку секунди", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "после неколку секунди", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "после 5 дена", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Денес во 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Денес во 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Денес во 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Утре во 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Денес во 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчера во 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [во] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [во] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [во] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
case 3:
case 6:
return '[Во изминатата] dddd [во] LT';
case 1:
case 2:
case 4:
case 5:
return '[Во изминатиот] dddd [во] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/mk'), 'mk', "module should export mk");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Malayalam
*************************************************/
exports["lang:ml"] = {
setUp : function (cb) {
moment.lang('ml');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവബർ നവം._ഡിസബർ ഡിസം.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(21);
var a = [
['dddd, Do MMMM YYYY, a h:mm:ss -നു', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു'],
['ddd, a h -നു', 'ഞായർ, ഉച്ച കഴിഞ്ഞ് 3 -നു'],
['M Mo MM MMMM MMM', '2 2 02 ഫെബ്രുവരി ഫെബ്രു.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 ഞായറാഴ്ച ഞായർ ഞാ'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'ഉച്ച കഴിഞ്ഞ് ഉച്ച കഴിഞ്ഞ്'],
['L', '14/02/2010'],
['LL', '14 ഫെബ്രുവരി 2010'],
['LLL', '14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'],
['LLLL', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'],
['l', '14/2/2010'],
['ll', '14 ഫെബ്രു. 2010'],
['lll', '14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'],
['llll', 'ഞായർ, 14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവബർ നവം._ഡിസബർ ഡിസം.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'ഞായറാഴ്ച ഞായർ ഞാ_തിങ്കളാഴ്ച തിങ്കൾ തി_ചൊവ്വാഴ്ച ചൊവ്വ ചൊ_ബുധനാഴ്ച ബുധൻ ബു_വ്യാഴാഴ്ച വ്യാഴം വ്യാ_വെള്ളിയാഴ്ച വെള്ളി വെ_ശനിയാഴ്ച ശനി ശ'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "അൽപ നിമിഷങ്ങൾ", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ഒരു മിനിറ്റ്", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ഒരു മിനിറ്റ്", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 മിനിറ്റ്", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 മിനിറ്റ്", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ഒരു മണിക്കൂർ", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ഒരു മണിക്കൂർ", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 മണിക്കൂർ", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 മണിക്കൂർ", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 മണിക്കൂർ", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ഒരു ദിവസം", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ഒരു ദിവസം", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 ദിവസം", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ഒരു ദിവസം", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ദിവസം", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ദിവസം", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ഒരു മാസം", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ഒരു മാസം", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ഒരു മാസം", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 മാസം", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 മാസം", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 മാസം", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ഒരു മാസം", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 മാസം", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 മാസം", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ഒരു വർഷം", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ഒരു വർഷം", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 വർഷം", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ഒരു വർഷം", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 വർഷം", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്", "prefix");
test.equal(moment(0).from(30000), "അൽപ നിമിഷങ്ങൾ മുൻപ്", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "അൽപ നിമിഷങ്ങൾ മുൻപ്", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്", "അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്");
test.equal(moment().add({d: 5}).fromNow(), "5 ദിവസം കഴിഞ്ഞ്", "5 ദിവസം കഴിഞ്ഞ്");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "ഇന്ന് രാത്രി 2:00 -നു", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "ഇന്ന് രാത്രി 2:25 -നു", "Now plus 25 min");
test.equal(moment(a).add({ h: 3 }).calendar(), "ഇന്ന് രാവിലെ 5:00 -നു", "Now plus 3 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "നാളെ രാത്രി 2:00 -നു", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "ഇന്ന് രാത്രി 1:00 -നു", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "ഇന്നലെ രാത്രി 2:00 -നു", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"meridiem" : function (test) {
test.expect(12);
test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "രാത്രി", "before dawn");
test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "രാവിലെ", "morning");
test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "ഉച്ച കഴിഞ്ഞ്", "during day");
test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "വൈകുന്നേരം", "evening");
test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "വൈകുന്നേരം", "late evening");
test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "രാത്രി", "night");
test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "രാത്രി", "before dawn");
test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "രാവിലെ", "morning");
test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "ഉച്ച കഴിഞ്ഞ്", " during day");
test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "വൈകുന്നേരം", "evening");
test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "വൈകുന്നേരം", "late evening");
test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "രാത്രി", "night");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ml'), 'ml', "module should export ml");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Marathi
*************************************************/
exports["lang:mr"] = {
setUp : function (cb) {
moment.lang('mr');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(21);
var a = [
['dddd, Do MMMM YYYY, a h:mm:ss वाजता', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५:५० वाजता'],
['ddd, a h वाजता', 'रवि, दुपारी ३ वाजता'],
['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवारी फेब्रु.'],
['YYYY YY', '२०१० १०'],
['D Do DD', '१४ १४ १४'],
['d do dddd ddd dd', ' रविवार रवि र'],
['DDD DDDo DDDD', '४५ ४५ ०४५'],
['w wo ww', '८ ८ ०८'],
['h hh', '३ ०३'],
['H HH', '१५ १५'],
['m mm', '२५ २५'],
['s ss', '५० ५०'],
['a A', 'दुपारी दुपारी'],
['L', '१४/०२/२०१०'],
['LL', '१४ फेब्रुवारी २०१०'],
['LLL', '१४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'],
['LLLL', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'],
['l', '१४/२/२०१०'],
['ll', '१४ फेब्रु. २०१०'],
['lll', '१४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'],
['llll', 'रवि, १४ फेब्रु. २०१०, दुपारी ३:२५ वाजता']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१');
test.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२');
test.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३');
test.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४');
test.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५');
test.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६');
test.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७');
test.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८');
test.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९');
test.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०');
test.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११');
test.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२');
test.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३');
test.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४');
test.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५');
test.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६');
test.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७');
test.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८');
test.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९');
test.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०');
test.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१');
test.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२');
test.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३');
test.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४');
test.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५');
test.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६');
test.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७');
test.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८');
test.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९');
test.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०');
test.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'रविवार रवि र_सोमवार सोम सो_मंगळवार मंगळ मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "सेकंद", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "एक मिनिट", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "एक मिनिट", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "२ मिनिटे", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({ m: 44 }), true), "४४ मिनिटे", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "एक तास", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "एक तास", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "२ तास", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "५ तास", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "२१ तास", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "एक दिवस", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "एक दिवस", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "२ दिवस", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "एक दिवस", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "५ दिवस", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "२५ दिवस", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({ d: 26 }), true), "एक महिना", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({ d: 30 }), true), "एक महिना", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({ d: 45 }), true), "एक महिना", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({ d: 46 }), true), "२ महिने", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({ d: 74 }), true), "२ महिने", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({ d: 76 }), true), "३ महिने", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({ M: 1 }), true), "एक महिना", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({ M: 5 }), true), "५ महिने", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({ d: 344 }), true), "११ महिने", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "एक वर्ष", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "एक वर्ष", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "२ वर्षे", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "एक वर्ष", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({ y: 5 }), true), "५ वर्षे", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "सेकंद नंतर", "prefix");
test.equal(moment(0).from(30000), "सेकंद पूर्वी", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "सेकंद पूर्वी", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({ s: 30 }).fromNow(), "सेकंद नंतर", "सेकंद नंतर");
test.equal(moment().add({ d: 5 }).fromNow(), "५ दिवस नंतर", "५ दिवस नंतर");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "आज रात्री २: वाजता", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "आज रात्री २:२५ वाजता", "Now plus 25 min");
test.equal(moment(a).add({ h: 3 }).calendar(), "आज सकाळी ५: वाजता", "Now plus 3 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "उद्या रात्री २: वाजता", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "आज रात्री १: वाजता", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "काल रात्री २: वाजता", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"meridiem" : function (test) {
test.expect(12);
test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "रात्री", "before dawn");
test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "सकाळी", "morning");
test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "दुपारी", "during day");
test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "सायंकाळी", "evening");
test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "सायंकाळी", "late evening");
test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "रात्री", "night");
test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "रात्री", "before dawn");
test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "सकाळी", "morning");
test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "दुपारी", " during day");
test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "सायंकाळी", "evening");
test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "सायंकाळी", "late evening");
test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "रात्री", "night");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/mr'), 'mr', "module should export mr");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Bahasa Melayu
*************************************************/
exports["lang:ms-my"] = {
setUp : function (cb) {
moment.lang('ms-my');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var i,
tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split("_");
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'],
['ddd, hA', 'Ahd, 3petang'],
['M Mo MM MMMM MMM', '2 2 02 Februari Feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 Ahad Ahd Ah'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '7 7 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'petang petang'],
['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'],
['L', '14/02/2010'],
['LL', '14 Februari 2010'],
['LLL', '14 Februari 2010 pukul 15.25'],
['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'],
['l', '14/2/2010'],
['ll', '14 Feb 2010'],
['lll', '14 Feb 2010 pukul 15.25'],
['llll', 'Ahd, 14 Feb 2010 pukul 15.25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var i,
expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var i,
expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "beberapa saat", "44 saat = beberapa saat");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "seminit", "45 saat = seminit");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "seminit", "89 saat = seminit");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minit", "90 saat = 2 minit");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minit", "44 minit = 44 minit");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "sejam", "45 minit = sejam");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "sejam", "89 minit = sejam");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 jam", "90 minit = 2 jam");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 jam", "5 jam = 5 jam");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 jam", "21 jam = 21 jam");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "sehari", "22 jam = sehari");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "sehari", "35 jam = sehari");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 hari", "36 jam = 2 hari");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "sehari", "1 hari = sehari");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 hari", "5 hari = 5 hari");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 hari", "25 hari = 25 hari");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "sebulan", "26 hari = sebulan");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "sebulan", "30 hari = sebulan");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "sebulan", "45 hari = sebulan");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 bulan", "46 hari = 2 bulan");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 bulan", "75 hari = 2 bulan");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 bulan", "76 hari = 3 bulan");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "sebulan", "1 bulan = sebulan");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 bulan", "5 bulan = 5 bulan");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 bulan", "344 hari = 11 bulan");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "setahun", "345 hari = setahun");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "setahun", "547 hari = setahun");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 tahun", "548 hari = 2 tahun");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "setahun", "1 tahun = setahun");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 tahun", "5 tahun = 5 tahun");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "dalam beberapa saat", "prefix");
test.equal(moment(0).from(30000), "beberapa saat yang lepas", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "beberapa saat yang lepas", "waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "dalam beberapa saat", "dalam beberapa saat");
test.equal(moment().add({d: 5}).fromNow(), "dalam 5 hari", "dalam 5 hari");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Hari ini pukul 02.00", "hari ini pada waktu yang sama");
test.equal(moment(a).add({ m: 25 }).calendar(), "Hari ini pukul 02.25", "Sekarang tambah 25 minit");
test.equal(moment(a).add({ h: 1 }).calendar(), "Hari ini pukul 03.00", "Sekarang tambah 1 jam");
test.equal(moment(a).add({ d: 1 }).calendar(), "Esok pukul 02.00", "esok pada waktu yang sama");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hari ini pukul 01.00", "Sekarang tolak 1 jam");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Kelmarin pukul 02.00", "kelmarin pada waktu yang sama");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Hari ini + " + i + " hari waktu sekarang");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Hari ini + " + i + " hari permulaan hari");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Hari ini + " + i + " hari tamat hari");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), "Hari ini - " + i + " hari waktu sekarang");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), "Hari ini - " + i + " hari permulaan hari");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), "Hari ini - " + i + " hari tamat hari");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 minggu lepas");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "dalam 1 minggu");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 minggu lepas");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "dalam 2 minggu");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 sepatutnya minggu 1");
test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 sepatutnya minggu 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 sepatutnya minggu 2");
test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 sepatutnya minggu 3");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 sepatutnya minggu 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 53, "Dec 31 2006 sepatutnya minggu 53");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 sepatutnya minggu 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 sepatutnya minggu 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 sepatutnya minggu 1");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 sepatutnya minggu 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 sepatutnya minggu 2");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 30]).week(), 52, "Dec 30 2007 sepatutnya minggu 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 sepatutnya minggu 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 sepatutnya minggu 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 sepatutnya minggu 1");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 sepatutnya minggu 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 sepatutnya minggu 2");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 52, "Dec 29 2002 sepatutnya minggu 52");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 sepatutnya minggu 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 sepatutnya minggu 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 sepatutnya minggu 1");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 sepatutnya minggu 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 sepatutnya minggu 2");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 52, "Dec 28 2008 sepatutnya minggu 52");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 sepatutnya minggu 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 sepatutnya minggu 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 sepatutnya minggu 1");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 sepatutnya minggu 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 sepatutnya minggu 2");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 52, "Dec 27 2009 sepatutnya minggu 52");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 sepatutnya minggu 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 sepatutnya minggu 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 sepatutnya minggu 1");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 sepatutnya minggu 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 sepatutnya minggu 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 52, "Dec 26 2010 sepatutnya minggu 52");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 sepatutnya minggu 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 sepatutnya minggu 1");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 sepatutnya minggu 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 sepatutnya minggu 2");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 sepatutnya minggu 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 sepatutnya minggu 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 sepatutnya minggu 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 sepatutnya minggu 3");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 sepatutnya minggu 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ms-my'), 'ms-my', "module should export ms-my");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Norwegian bokmål
*************************************************/
exports["lang:nb"] = {
setUp : function (cb) {
moment.lang('nb');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januar jan_februar feb_mars mars_april april_mai mai_juni juni_juli juli_august aug_september sep_oktober okt_november nov_desember des'.split("_"),
i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'søndag, februar 14. 2010, 3:25:50 pm'],
['ddd, hA', 'sø., 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 februar feb.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. søndag sø. sø'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[den] DDDo [dagen i året]', 'den 45. dagen i året'],
['L', '14.02.2010'],
['LL', '14. februar 2010'],
['LLL', '14. februar 2010 kl. 15.25'],
['LLLL', 'søndag 14. februar 2010 kl. 15.25'],
['l', '14.2.2010'],
['ll', '14. feb. 2010'],
['lll', '14. feb. 2010 kl. 15.25'],
['llll', 'sø. 14. feb. 2010 kl. 15.25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januar jan._februar feb._mars mars_april april_mai mai_juni juni_juli juli_august aug._september sep._oktober okt._november nov._desember des.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'søndag sø. sø_mandag ma. ma_tirsdag ti. ti_onsdag on. on_torsdag to. to_fredag fr. fr_lørdag lø. lø'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "noen sekunder", "44 sekunder = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ett minutt", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ett minutt", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutter", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutter", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "en time", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "en time", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 timer", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 timer", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 timer", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "en dag", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "en dag", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dager", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "en dag", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dager", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dager", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "en måned", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "en måned", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "en måned", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 måneder", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 måneder", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 måneder", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "en måned", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 måneder", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 måneder", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ett år", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ett år", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 år", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ett år", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 år", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "om noen sekunder", "prefix");
test.equal(moment(0).from(30000), "for noen sekunder siden", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "for noen sekunder siden", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "om noen sekunder", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "om 5 dager", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "i dag kl. 2.00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "i dag kl. 2.25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "i dag kl. 3.00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "i morgen kl. 2.00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "i dag kl. 1.00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "i går kl. 2.00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/nb'), 'nb', "module should export nb");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Nepali
*************************************************/
exports["lang:ne"] = {
setUp : function (cb) {
moment.lang('ne');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(21);
var a = [
['dddd, Do MMMM YYYY, aको h:mm:ss बजे', 'आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५:५० बजे'],
['ddd, aको h बजे', 'आइत., बेलुकाको ३ बजे'],
['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवरी फेब्रु.'],
['YYYY YY', '२०१० १०'],
['D Do DD', '१४ १४ १४'],
['d do dddd ddd dd', ' आइतबार आइत. आइ.'],
['DDD DDDo DDDD', '४५ ४५ ०४५'],
['w wo ww', '७ ७ ०७'],
['h hh', '३ ०३'],
['H HH', '१५ १५'],
['m mm', '२५ २५'],
['s ss', '५० ५०'],
['a A', 'बेलुका बेलुका'],
['L', '१४/०२/२०१०'],
['LL', '१४ फेब्रुवरी २०१०'],
['LLL', '१४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'],
['LLLL', 'आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'],
['l', '१४/२/२०१०'],
['ll', '१४ फेब्रु. २०१०'],
['lll', '१४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे'],
['llll', 'आइत., १४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१');
test.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२');
test.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३');
test.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४');
test.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५');
test.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६');
test.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७');
test.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८');
test.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९');
test.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०');
test.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११');
test.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२');
test.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३');
test.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४');
test.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५');
test.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६');
test.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७');
test.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८');
test.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९');
test.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०');
test.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१');
test.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२');
test.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३');
test.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४');
test.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५');
test.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६');
test.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७');
test.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८');
test.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९');
test.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०');
test.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'आइतबार आइत. आइ._सोमबार सोम. सो._मङ्गलबार मङ्गल. मङ्_बुधबार बुध. बु._बिहिबार बिहि. बि._शुक्रबार शुक्र. शु._शनिबार शनि. श.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "केही समय", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "एक मिनेट", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "एक मिनेट", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "२ मिनेट", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "४४ मिनेट", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "एक घण्टा", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "एक घण्टा", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "२ घण्टा", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "५ घण्टा", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "२१ घण्टा", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "एक दिन", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "एक दिन", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "२ दिन", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "एक दिन", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "५ दिन", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "२५ दिन", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "एक महिना", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "एक महिना", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "एक महिना", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "२ महिना", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "२ महिना", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "३ महिना", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "एक महिना", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "५ महिना", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "११ महिना", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "एक बर्ष", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "एक बर्ष", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "२ बर्ष", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "एक बर्ष", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "५ बर्ष", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "केही समयमा", "prefix");
test.equal(moment(0).from(30000), "केही समय अगाडी", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "केही समय अगाडी", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "केही समयमा", "केही समयमा");
test.equal(moment().add({d: 5}).fromNow(), "५ दिनमा", "५ दिनमा");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "आज रातीको २: बजे", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "आज रातीको २:२५ बजे", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "आज बिहानको ३: बजे", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "भोली रातीको २: बजे", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "आज रातीको १: बजे", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "हिजो रातीको २: बजे", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"meridiem" : function (test) {
test.expect(12);
test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "राती", "before dawn");
test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "बिहान", "morning");
test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "दिउँसो", "during day");
test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "बेलुका", "evening");
test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "साँझ", "late evening");
test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "राती", "night");
test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "राती", "before dawn");
test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "बिहान", "morning");
test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "दिउँसो", "during day");
test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "बेलुका", "evening");
test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "साँझ", "late evening");
test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "राती", "night");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '१ ०१ १', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '२ ०२ २', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '३ ०३ ३', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ne'), 'ne', "module should export ne");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Dutch
*************************************************/
exports["lang:nl"] = {
setUp : function (cb) {
moment.lang('nl');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, HH:mm:ss', 'zondag, februari 14de 2010, 15:25:50'],
['ddd, HH', 'zo., 15'],
['M Mo MM MMMM MMM', '2 2de 02 februari feb.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14de 14'],
['d do dddd ddd dd', '0 0de zondag zo. Zo'],
['DDD DDDo DDDD', '45 45ste 045'],
['w wo ww', '6 6de 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45ste day of the year'],
['L', '14-02-2010'],
['LL', '14 februari 2010'],
['LLL', '14 februari 2010 15:25'],
['LLLL', 'zondag 14 februari 2010 15:25'],
['l', '14-2-2010'],
['ll', '14 feb. 2010'],
['lll', '14 feb. 2010 15:25'],
['llll', 'zo. 14 feb. 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'zondag zo. Zo_maandag ma. Ma_dinsdag di. Di_woensdag wo. Wo_donderdag do. Do_vrijdag vr. Vr_zaterdag za. Za'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "een paar seconden", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "één minuut", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "één minuut", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuten", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuten", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "één uur", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "één uur", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 uur", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 uur", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 uur", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "één dag", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "één dag", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagen", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "één dag", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagen", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagen", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "één maand", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "één maand", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "één maand", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 maanden", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 maanden", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 maanden", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "één maand", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 maanden", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 maanden", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "één jaar", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "één jaar", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 jaar", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "één jaar", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 jaar", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "over een paar seconden", "prefix");
test.equal(moment(0).from(30000), "een paar seconden geleden", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "een paar seconden geleden", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "over een paar seconden", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "over 5 dagen", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "vandaag om 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "vandaag om 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "vandaag om 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "morgen om 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "vandaag om 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "gisteren om 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [om] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [om] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [om] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"month abbreviation" : function (test) {
test.expect(2);
test.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot');
test.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot');
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/nl'), 'nl', "module should export nl");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Norwegian nynorsk
*************************************************/
exports["lang:nn"] = {
setUp : function (cb) {
moment.lang('nn');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'sundag, februar 14. 2010, 3:25:50 pm'],
['ddd, hA', 'sun, 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 februar feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. sundag sun su'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14.02.2010'],
['LL', '14 februar 2010'],
['LLL', '14 februar 2010 15:25'],
['LLLL', 'sundag 14 februar 2010 15:25'],
['l', '14.2.2010'],
['ll', '14 feb 2010'],
['lll', '14 feb 2010 15:25'],
['llll', 'sun 14 feb 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'sundag sun su_måndag mån må_tysdag tys ty_onsdag ons on_torsdag tor to_fredag fre fr_laurdag lau lø'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "nokre sekund", "44 sekunder = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "eit minutt", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "eit minutt", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutt", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutt", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ein time", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ein time", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 timar", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 timar", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 timar", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ein dag", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ein dag", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagar", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ein dag", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagar", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagar", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ein månad", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ein månad", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ein månad", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 månader", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 månader", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 månader", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ein månad", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 månader", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 månader", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "eit år", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "eit år", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 år", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "eit år", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 år", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "om nokre sekund", "prefix");
test.equal(moment(0).from(30000), "for nokre sekund sidan", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "for nokre sekund sidan", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "om nokre sekund", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "om 5 dagar", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "I dag klokka 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "I dag klokka 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "I dag klokka 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "I morgon klokka 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "I dag klokka 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "I går klokka 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [klokka] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [klokka] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [klokka] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/nn'), 'nn', "module should export nn");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Polish
*************************************************/
exports["lang:pl"] = {
setUp : function (cb) {
moment.lang('pl');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'niedziela, luty 14. 2010, 3:25:50 pm'],
['ddd, hA', 'nie, 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 luty lut'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. niedziela nie N'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14.02.2010'],
['LL', '14 lutego 2010'],
['LLL', '14 lutego 2010 15:25'],
['LLLL', 'niedziela, 14 lutego 2010 15:25'],
['l', '14.2.2010'],
['ll', '14 lut 2010'],
['lll', '14 lut 2010 15:25'],
['llll', 'nie, 14 lut 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'niedziela nie N_poniedziałek pon Pn_wtorek wt Wt_środa śr Śr_czwartek czw Cz_piątek pt Pt_sobota sb So'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(34);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "kilka sekund", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuta", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuta", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuty", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuty", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "godzina", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "godzina", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 godziny", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 godzin", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 godzin", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "1 dzień", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "1 dzień", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dni", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "1 dzień", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dni", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dni", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "miesiąc", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "miesiąc", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "miesiąc", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 miesiące", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 miesiące", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 miesiące", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "miesiąc", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 miesięcy", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 miesięcy", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "rok", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "rok", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 lata", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "rok", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 lat", "5 years = 5 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 112}), true), "112 lat", "112 years = 112 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 122}), true), "122 lata", "122 years = 122 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 213}), true), "213 lat", "213 years = 213 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 223}), true), "223 lata", "223 years = 223 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "za kilka sekund", "prefix");
test.equal(moment(0).from(30000), "kilka sekund temu", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "kilka sekund temu", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(3);
test.equal(moment().add({s: 30}).fromNow(), "za kilka sekund", "in a few seconds");
test.equal(moment().add({h: 1}).fromNow(), "za godzinę", "in an hour");
test.equal(moment().add({d: 5}).fromNow(), "za 5 dni", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Dziś o 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Dziś o 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Dziś o 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Jutro o 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Dziś o 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Wczoraj o 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[W] dddd [o] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[W] dddd [o] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[W] dddd [o] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
return '[W zeszłą niedzielę o] LT';
case 3:
return '[W zeszłą środę o] LT';
case 6:
return '[W zeszłą sobotę o] LT';
default:
return '[W zeszły] dddd [o] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/pl'), 'pl', "module should export pl");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Portuguese - Brazilian
*************************************************/
exports["lang:pt-br"] = {
setUp : function (cb) {
moment.lang('pt-br');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'domingo, fevereiro 14º 2010, 3:25:50 pm'],
['ddd, hA', 'dom, 3PM'],
['M Mo MM MMMM MMM', '2 2º 02 fevereiro fev'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14º 14'],
['d do dddd ddd', '0 0º domingo dom'],
['DDD DDDo DDDD', '45 45º 045'],
['w wo ww', '8 8º 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45º day of the year'],
['L', '14/02/2010'],
['LL', '14 de fevereiro de 2010'],
['LLL', '14 de fevereiro de 2010 às 15:25'],
['LLLL', 'domingo, 14 de fevereiro de 2010 às 15:25'],
['l', '14/2/2010'],
['ll', '14 de fev de 2010'],
['lll', '14 de fev de 2010 às 15:25'],
['llll', 'dom, 14 de fev de 2010 às 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'domingo dom_segunda-feira seg_terça-feira ter_quarta-feira qua_quinta-feira qui_sexta-feira sex_sábado sáb'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "segundos", "44 seconds = seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "um minuto", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "um minuto", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutos", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutos", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "uma hora", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "uma hora", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horas", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horas", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horas", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "um dia", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "um dia", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dias", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "um dia", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dias", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dias", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "um mês", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "um mês", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "um mês", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meses", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meses", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meses", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "um mês", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meses", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meses", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "um ano", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "um ano", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anos", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "um ano", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anos", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "em segundos", "prefix");
test.equal(moment(0).from(30000), "segundos atrás", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "em segundos", "in seconds");
test.equal(moment().add({d: 5}).fromNow(), "em 5 dias", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Hoje às 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Hoje às 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Hoje às 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Amanhã às 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hoje às 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ontem às 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1º', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2º', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3º', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/pt-br'), 'pt-br', "module should export pt-br");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Portuguese
*************************************************/
exports["lang:pt"] = {
setUp : function (cb) {
moment.lang('pt');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'domingo, fevereiro 14º 2010, 3:25:50 pm'],
['ddd, hA', 'dom, 3PM'],
['M Mo MM MMMM MMM', '2 2º 02 fevereiro fev'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14º 14'],
['d do dddd ddd dd', '0 0º domingo dom dom'],
['DDD DDDo DDDD', '45 45º 045'],
['w wo ww', '6 6º 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45º day of the year'],
['L', '14/02/2010'],
['LL', '14 de fevereiro de 2010'],
['LLL', '14 de fevereiro de 2010 15:25'],
['LLLL', 'domingo, 14 de fevereiro de 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 de fev de 2010'],
['lll', '14 de fev de 2010 15:25'],
['llll', 'dom, 14 de fev de 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'domingo dom dom_segunda-feira seg 2ª_terça-feira ter 3ª_quarta-feira qua 4ª_quinta-feira qui 5ª_sexta-feira sex 6ª_sábado sáb sáb'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "segundos", "44 seconds = seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "um minuto", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "um minuto", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutos", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutos", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "uma hora", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "uma hora", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horas", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horas", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horas", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "um dia", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "um dia", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dias", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "um dia", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dias", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dias", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "um mês", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "um mês", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "um mês", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meses", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meses", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meses", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "um mês", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meses", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meses", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "um ano", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "um ano", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anos", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "um ano", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anos", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "em segundos", "prefix");
test.equal(moment(0).from(30000), "segundos atrás", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "em segundos", "in seconds");
test.equal(moment().add({d: 5}).fromNow(), "em 5 dias", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Hoje às 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Hoje às 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Hoje às 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Amanhã às 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hoje às 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ontem às 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/pt'), 'pt', "module should export pt");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Romanian
*************************************************/
exports["lang:ro"] = {
setUp : function (cb) {
moment.lang('ro');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss A', 'duminică, februarie 14 2010, 3:25:50 PM'],
['ddd, hA', 'Dum, 3PM'],
['M Mo MM MMMM MMM', '2 2 02 februarie febr.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 duminică Dum Du'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '7 7 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[a] DDDo[a zi a anului]', 'a 45a zi a anului'],
['L', '14.02.2010'],
['LL', '14 februarie 2010'],
['LLL', '14 februarie 2010 15:25'],
['LLLL', 'duminică, 14 februarie 2010 15:25'],
['l', '14.2.2010'],
['ll', '14 febr. 2010'],
['lll', '14 febr. 2010 15:25'],
['llll', 'Dum, 14 febr. 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'duminică Dum Du_luni Lun Lu_marți Mar Ma_miercuri Mie Mi_joi Joi Jo_vineri Vin Vi_sâmbătă Sâm Sâ'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(38);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "câteva secunde", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minut", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minut", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minute", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 de minute", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "o oră", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "o oră", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ore", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ore", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 de ore", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "o zi", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "o zi", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 zile", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "o zi", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 zile", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 de zile", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "o lună", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "o lună", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "o lună", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 luni", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 luni", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 luni", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "o lună", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 luni", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 luni", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un an", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un an", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ani", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un an", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ani", "5 years = 5 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 19}), true), "19 ani", "19 years = 19 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 20}), true), "20 de ani", "20 years = 20 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 100}), true), "100 de ani", "100 years = 100 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 101}), true), "101 ani", "101 years = 101 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 119}), true), "119 ani", "119 years = 119 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 120}), true), "120 de ani", "120 years = 120 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 219}), true), "219 ani", "219 years = 219 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 220}), true), "220 de ani", "220 years = 220 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "peste câteva secunde", "prefix");
test.equal(moment(0).from(30000), "câteva secunde în urmă", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "câteva secunde în urmă", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "peste câteva secunde", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "peste 5 zile", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "azi la 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "azi la 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "azi la 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "mâine la 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "azi la 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "ieri la 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [la] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [la] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [la] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ro'), 'ro', "module should export ro");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Russian
*************************************************/
exports["lang:ru"] = {
setUp : function (cb) {
moment.lang('ru');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'январь янв_февраль фев_март мар_апрель апрай май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"parse exceptional case" : function (test) {
test.equal(moment('11 мая 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989');
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, HH:mm:ss', 'воскресенье, 14-го февраля 2010, 15:25:50'],
['ddd, h A', 'вс, 3 дня'],
['M Mo MM MMMM MMM', '2 2-й 02 февраль фев'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14-го 14'],
['d do dddd ddd dd', '0 0-й воскресенье вс вс'],
['DDD DDDo DDDD', '45 45-й 045'],
['w wo ww', '7 7-я 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'дня дня'],
['DDDo [день года]', '45-й день года'],
['L', '14.02.2010'],
['LL', '14 февраля 2010 г.'],
['LLL', '14 февраля 2010 г., 15:25'],
['LLLL', 'воскресенье, 14 февраля 2010 г., 15:25'],
['l', '14.2.2010'],
['ll', '14 фев 2010 г.'],
['lll', '14 фев 2010 г., 15:25'],
['llll', 'вс, 14 фев 2010 г., 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format meridiem" : function (test) {
test.expect(8);
test.equal(moment([2012, 11, 28, 0, 0]).format("A"), "ночи", "night");
test.equal(moment([2012, 11, 28, 3, 59]).format("A"), "ночи", "night");
test.equal(moment([2012, 11, 28, 4, 0]).format("A"), "утра", "morning");
test.equal(moment([2012, 11, 28, 11, 59]).format("A"), "утра", "morning");
test.equal(moment([2012, 11, 28, 12, 0]).format("A"), "дня", "afternoon");
test.equal(moment([2012, 11, 28, 16, 59]).format("A"), "дня", "afternoon");
test.equal(moment([2012, 11, 28, 17, 0]).format("A"), "вечера", "evening");
test.equal(moment([2012, 11, 28, 23, 59]).format("A"), "вечера", "evening");
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'январь янв_февраль фев_март мар_апрель апрай май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format month case" : function (test) {
test.expect(24);
var months = {
'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
}, i;
for (i = 0; i < 12; i++) {
test.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
test.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]);
}
test.done();
},
"format month short case" : function (test) {
test.expect(24);
var monthsShort = {
'nominative': 'янв_фев_мар_апрай_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
'accusative': 'янв_фев_мар_апрая_июня_июля_авг_сен_окт_ноя_дек'.split('_')
}, i;
for (i = 0; i < 12; i++) {
test.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);
test.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]);
}
test.done();
},
"format month case with escaped symbols" : function (test) {
test.expect(48);
var months = {
'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
}, i;
for (i = 0; i < 12; i++) {
test.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
test.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMMM[</b>]'), '<i>1</i> <b>' + months.accusative[i] + '</b>', '1 <b>' + months.accusative[i] + '</b>');
test.equal(moment([2013, i, 1]).format('D[-й день] MMMM'), '1-й день ' + months.accusative[i], '1-й день ' + months.accusative[i]);
test.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]);
}
test.done();
},
"format month short case with escaped symbols" : function (test) {
test.expect(48);
var monthsShort = {
'nominative': 'янв_фев_мар_апрай_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
'accusative': 'янв_фев_мар_апрая_июня_июля_авг_сен_окт_ноя_дек'.split('_')
}, i;
for (i = 0; i < 12; i++) {
test.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);
test.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMM[</b>]'), '<i>1</i> <b>' + monthsShort.accusative[i] + '</b>', '1 <b>' + monthsShort.accusative[i] + '</b>');
test.equal(moment([2013, i, 1]).format('D[-й день] MMM'), '1-й день ' + monthsShort.accusative[i], '1-й день ' + monthsShort.accusative[i]);
test.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'воскресенье вс вс_понедельник пн пн_вторник вт вт_среда ср сретверг чт чт_пятница пт пт_суббота сб сб'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(33);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "несколько секунд", "44 seconds = seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "минута", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "минута", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 минуты", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 31}), true), "31 минута", "31 minutes = 31 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 минуты", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "час", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "час", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 часа", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 часов", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 час", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "день", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "день", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 дня", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "день", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 дней", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), "11 дней", "11 days = 11 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), "21 день", "21 days = 21 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 дней", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "месяц", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "месяц", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "месяц", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 месяца", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 месяца", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 месяца", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "месяц", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 месяцев", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 месяцев", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "год", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "год", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 года", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "год", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 лет", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "через несколько секунд", "prefix");
test.equal(moment(0).from(30000), "несколько секунд назад", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(4);
test.equal(moment().add({s: 30}).fromNow(), "через несколько секунд", "in seconds");
test.equal(moment().add({d: 5}).fromNow(), "через 5 дней", "in 5 days");
test.equal(moment().add({m: 31}).fromNow(), "через 31 минуту", "in 31 minutes = in 31 minutes");
test.equal(moment().subtract({m: 31}).fromNow(), "31 минуту назад", "31 minutes ago = 31 minutes ago");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Сегодня в 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Сегодня в 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Сегодня в 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Завтра в 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Сегодня в 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчера в 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
return d.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
}
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
return '[В прошлое] dddd [в] LT';
case 1:
case 2:
case 4:
return '[В прошлый] dddd [в] LT';
case 3:
case 5:
case 6:
return '[В прошлую] dddd [в] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-я', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-я', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-я', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-я', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-я', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ru'), 'ru', "module should export ru");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Slovak
*************************************************/
exports["lang:sk"] = {
setUp : function (cb) {
moment.lang('sk');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'január jan._február feb._marec mar._apríl apr._máj máj_jún jún._júl júl._august aug._september sep._október okt._november nov._december dec.'.split("_"), i;
function equalTest(input, mmm, monthIndex) {
test.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss', 'nedeľa, február 14. 2010, 3:25:50'],
['ddd, h', 'ne, 3'],
['M Mo MM MMMM MMM', '2 2. 02 február feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. nedeľa ne ne'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['DDDo [deň v roku]', '45. deň v roku'],
['L', '14.02.2010'],
['LL', '14. február 2010'],
['LLL', '14. február 2010 15:25'],
['LLLL', 'nedeľa 14. február 2010 15:25'],
['l', '14.2.2010'],
['ll', '14. feb 2010'],
['lll', '14. feb 2010 15:25'],
['llll', 'ne 14. feb 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'január jan_február feb_marec mar_apríl apr_máj máj_jún jún_júl júl_august aug_september sep_október okt_november nov_december dec'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'nedeľa ne ne_pondelok po po_utorok ut ut_streda st st_štvrtok št št_piatok pi pi_sobota so so'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "pár sekúnd", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minúta", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minúta", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minúty", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minút", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "hodina", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "hodina", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hodiny", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hodín", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hodín", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "deň", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "deň", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dni", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "deň", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dní", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dní", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mesiac", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mesiac", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mesiac", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mesiace", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mesiace", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mesiace", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mesiac", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mesiacov", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mesiacov", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "rok", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "rok", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 roky", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "rok", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 rokov", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "za pár sekúnd", "prefix");
test.equal(moment(0).from(30000), "pred pár sekundami", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "pred pár sekundami", "now from now should display as in the past");
test.done();
},
"fromNow (future)" : function (test) {
test.expect(16);
test.equal(moment().add({s: 30}).fromNow(), "za pár sekúnd", "in a few seconds");
test.equal(moment().add({m: 1}).fromNow(), "za minútu", "in a minute");
test.equal(moment().add({m: 3}).fromNow(), "za 3 minúty", "in 3 minutes");
test.equal(moment().add({m: 10}).fromNow(), "za 10 minút", "in 10 minutes");
test.equal(moment().add({h: 1}).fromNow(), "za hodinu", "in an hour");
test.equal(moment().add({h: 3}).fromNow(), "za 3 hodiny", "in 3 hours");
test.equal(moment().add({h: 10}).fromNow(), "za 10 hodín", "in 10 hours");
test.equal(moment().add({d: 1}).fromNow(), "za deň", "in a day");
test.equal(moment().add({d: 3}).fromNow(), "za 3 dni", "in 3 days");
test.equal(moment().add({d: 10}).fromNow(), "za 10 dní", "in 10 days");
test.equal(moment().add({M: 1}).fromNow(), "za mesiac", "in a month");
test.equal(moment().add({M: 3}).fromNow(), "za 3 mesiace", "in 3 months");
test.equal(moment().add({M: 10}).fromNow(), "za 10 mesiacov", "in 10 months");
test.equal(moment().add({y: 1}).fromNow(), "za rok", "in a year");
test.equal(moment().add({y: 3}).fromNow(), "za 3 roky", "in 3 years");
test.equal(moment().add({y: 10}).fromNow(), "za 10 rokov", "in 10 years");
test.done();
},
"fromNow (past)" : function (test) {
test.expect(16);
test.equal(moment().subtract({s: 30}).fromNow(), "pred pár sekundami", "a few seconds ago");
test.equal(moment().subtract({m: 1}).fromNow(), "pred minútou", "a minute ago");
test.equal(moment().subtract({m: 3}).fromNow(), "pred 3 minútami", "3 minutes ago");
test.equal(moment().subtract({m: 10}).fromNow(), "pred 10 minútami", "10 minutes ago");
test.equal(moment().subtract({h: 1}).fromNow(), "pred hodinou", "an hour ago");
test.equal(moment().subtract({h: 3}).fromNow(), "pred 3 hodinami", "3 hours ago");
test.equal(moment().subtract({h: 10}).fromNow(), "pred 10 hodinami", "10 hours ago");
test.equal(moment().subtract({d: 1}).fromNow(), "pred dňom", "a day ago");
test.equal(moment().subtract({d: 3}).fromNow(), "pred 3 dňami", "3 days ago");
test.equal(moment().subtract({d: 10}).fromNow(), "pred 10 dňami", "10 days ago");
test.equal(moment().subtract({M: 1}).fromNow(), "pred mesiacom", "a month ago");
test.equal(moment().subtract({M: 3}).fromNow(), "pred 3 mesiacmi", "3 months ago");
test.equal(moment().subtract({M: 10}).fromNow(), "pred 10 mesiacmi", "10 months ago");
test.equal(moment().subtract({y: 1}).fromNow(), "pred rokom", "a year ago");
test.equal(moment().subtract({y: 3}).fromNow(), "pred 3 rokmi", "3 years ago");
test.equal(moment().subtract({y: 10}).fromNow(), "pred 10 rokmi", "10 years ago");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "dnes o 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "dnes o 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "dnes o 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "zajtra o 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "dnes o 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "včera o 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m, nextDay;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
nextDay = '';
switch (m.day()) {
case 0:
nextDay = 'v nedeľu';
break;
case 1:
nextDay = 'v pondelok';
break;
case 2:
nextDay = 'v utorok';
break;
case 3:
nextDay = 'v stredu';
break;
case 4:
nextDay = 'vo štvrtok';
break;
case 5:
nextDay = 'v piatok';
break;
case 6:
nextDay = 'v sobotu';
break;
}
test.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m, lastDay;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
lastDay = '';
switch (m.day()) {
case 0:
lastDay = 'minulú nedeľu';
break;
case 1:
lastDay = 'minulý pondelok';
break;
case 2:
lastDay = 'minulý utorok';
break;
case 3:
lastDay = 'minulú stredu';
break;
case 4:
lastDay = 'minulý štvrtok';
break;
case 5:
lastDay = 'minulý piatok';
break;
case 6:
lastDay = 'minulú sobotu';
break;
}
test.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"humanize duration" : function (test) {
test.expect(4);
test.equal(moment.duration(1, "minutes").humanize(), "minúta", "a minute (future)");
test.equal(moment.duration(1, "minutes").humanize(true), "za minútu", "in a minute");
test.equal(moment.duration(-1, "minutes").humanize(), "minúta", "a minute (past)");
test.equal(moment.duration(-1, "minutes").humanize(true), "pred minútou", "a minute ago");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/sk'), 'sk', "module should export sk");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Slovenian
*************************************************/
exports["lang:sl"] = {
setUp : function (cb) {
moment.lang('sl');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januar jan._februar feb._marec mar._april apr._maj maj_junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'],
['ddd, hA', 'ned., 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 februar feb.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. nedelja ned. ne'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '7 7. 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14. 02. 2010'],
['LL', '14. februar 2010'],
['LLL', '14. februar 2010 15:25'],
['LLLL', 'nedelja, 14. februar 2010 15:25'],
['l', '14. 2. 2010'],
['ll', '14. feb. 2010'],
['lll', '14. feb. 2010 15:25'],
['llll', 'ned., 14. feb. 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januar jan._februar feb._marec mar._april apr._maj maj._junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'nedelja ned. ne_ponedeljek pon. po_torek tor. to_sreda sre. sr_četrtek čet. če_petek pet. pe_sobota sob. so'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "nekaj sekund", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ena minuta", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ena minuta", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuti", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minut", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ena ura", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ena ura", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 uri", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ur", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ur", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "en dan", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "en dan", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dni", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "en dan", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dni", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dni", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "en mesec", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "en mesec", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "en mesec", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meseca", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meseca", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mesece", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "en mesec", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mesecev", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mesecev", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "eno leto", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "eno leto", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 leti", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "eno leto", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 let", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "čez nekaj sekund", "prefix");
test.equal(moment(0).from(30000), "nekaj sekund nazaj", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "nekaj sekund nazaj", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "čez nekaj sekund", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "čez 5 dni", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "danes ob 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "danes ob 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "danes ob 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "jutri ob 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "danes ob 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "včeraj ob 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
return '[v] [nedeljo] [ob] LT';
case 3:
return '[v] [sredo] [ob] LT';
case 6:
return '[v] [soboto] [ob] LT';
case 1:
case 2:
case 4:
case 5:
return '[v] dddd [ob] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
case 3:
case 6:
return '[prejšnja] dddd [ob] LT';
case 1:
case 2:
case 4:
case 5:
return '[prejšnji] dddd [ob] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/sl'), 'sl', "module should export sl");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Albanian
*************************************************/
exports["lang:sq"] = {
setUp : function (cb) {
moment.lang('sq');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var i,
tests = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split("_");
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, HH:mm:ss', 'E Diel, Shkurt 14. 2010, 15:25:50'],
['ddd, HH', 'Die, 15'],
['M Mo MM MMMM MMM', '2 2. 02 Shkurt Shk'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. E Diel Die D'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '6 6. 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'MD MD'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14/02/2010'],
['LL', '14 Shkurt 2010'],
['LLL', '14 Shkurt 2010 15:25'],
['LLLL', 'E Diel, 14 Shkurt 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 Shk 2010'],
['lll', '14 Shk 2010 15:25'],
['llll', 'Die, 14 Shk 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"meridiem" : function (test) {
test.expect(2);
test.equal(moment([2011, 2, 23, 0, 0]).format('A'), "PD", "before dawn");
test.equal(moment([2011, 2, 23, 12, 0]).format('A'), "MD", "noon");
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var i,
expected = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var i,
expected = 'E Diel Die D_E Hënë Hën H_E Martë Mar Ma_E Mërkurë Mër Më_E Enjte Enj E_E Premte Pre P_E Shtunë Sht Sh'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "disa sekonda", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "një minutë", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "një minutë", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuta", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuta", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "një orë", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "një orë", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 orë", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 orë", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 orë", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "një ditë", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "një ditë", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 ditë", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "një ditë", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ditë", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ditë", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "një muaj", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "një muaj", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "një muaj", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 muaj", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 muaj", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 muaj", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "një muaj", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 muaj", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 muaj", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "një vit", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "një vit", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 vite", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "një vit", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 vite", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "në disa sekonda", "prefix");
test.equal(moment(0).from(30000), "disa sekonda më parë", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "disa sekonda më parë", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "në disa sekonda", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "në 5 ditë", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Sot në 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Sot në 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Sot në 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Nesër në 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Sot në 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Dje në 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [në] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [në] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [në] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/sq'), 'sq', "module should export sq");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Serbian-cyrillic (sr-cyr)
*************************************************/
exports["lang:sr-cyr"] = {
setUp : function (cb) {
moment.lang('sr-cyr');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split("_"),
i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'недеља, 14. фебруар 2010, 3:25:50 pm'],
['ddd, hA', 'нед., 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 фебруар феб.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. недеља нед. не'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '7 7. 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14. 02. 2010'],
['LL', '14. фебруар 2010'],
['LLL', '14. фебруар 2010 15:25'],
['LLLL', 'недеља, 14. фебруар 2010 15:25'],
['l', '14. 2. 2010'],
['ll', '14. феб. 2010'],
['lll', '14. феб. 2010 15:25'],
['llll', 'нед., 14. феб. 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split("_"),
i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'недеља нед. не_понедељак пон. по_уторак уто. ут_среда сре. сретвртак чет. че_петак пет. пе_субота суб. су'.split("_"),
i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "неколико секунди", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "један минут", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "један минут", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 минуте", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 минута", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "један сат", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "један сат", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 сата", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 сати", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 сати", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "дан", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "дан", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 дана", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "дан", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 дана", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 дана", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "месец", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "месец", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "месец", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 месеца", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 месеца", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 месеца", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "месец", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 месеци", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 месеци", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "годину", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "годину", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 године", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "годину", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 година", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "за неколико секунди", "prefix");
test.equal(moment(0).from(30000), "пре неколико секунди", "prefix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "пре неколико секунди", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "за неколико секунди", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "за 5 дана", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "данас у 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "данас у 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "данас у 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "сутра у 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "данас у 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "јуче у 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
return '[у] [недељу] [у] LT';
case 3:
return '[у] [среду] [у] LT';
case 6:
return '[у] [суботу] [у] LT';
case 1:
case 2:
case 4:
case 5:
return '[у] dddd [у] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
var lastWeekDay = [
'[прошле] [недеље] [у] LT',
'[прошлог] [понедељка] [у] LT',
'[прошлог] [уторка] [у] LT',
'[прошле] [среде] [у] LT',
'[прошлог] [четвртка] [у] LT',
'[прошлог] [петка] [у] LT',
'[прошле] [суботе] [у] LT'
];
return lastWeekDay[d.day()];
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/sr-cyr'), 'sr-cyr', "module should export sr-cyr");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Serbian-latin (sr)
*************************************************/
exports["lang:sr"] = {
setUp : function (cb) {
moment.lang('sr');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split("_"),
i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'],
['ddd, hA', 'ned., 3PM'],
['M Mo MM MMMM MMM', '2 2. 02 februar feb.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14. 14'],
['d do dddd ddd dd', '0 0. nedelja ned. ne'],
['DDD DDDo DDDD', '45 45. 045'],
['w wo ww', '7 7. 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45. day of the year'],
['L', '14. 02. 2010'],
['LL', '14. februar 2010'],
['LLL', '14. februar 2010 15:25'],
['LLLL', 'nedelja, 14. februar 2010 15:25'],
['l', '14. 2. 2010'],
['ll', '14. feb. 2010'],
['lll', '14. feb. 2010 15:25'],
['llll', 'ned., 14. feb. 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split("_"),
i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'nedelja ned. ne_ponedeljak pon. po_utorak uto. ut_sreda sre. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split("_"),
i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "nekoliko sekundi", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "jedan minut", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "jedan minut", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minute", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuta", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "jedan sat", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "jedan sat", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 sata", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 sati", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 sati", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dan", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dan", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dana", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dan", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dana", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dana", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mesec", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mesec", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mesec", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meseca", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meseca", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meseca", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mesec", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meseci", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meseci", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "godinu", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "godinu", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 godine", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "godinu", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 godina", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "za nekoliko sekundi", "prefix");
test.equal(moment(0).from(30000), "pre nekoliko sekundi", "prefix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "pre nekoliko sekundi", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "za nekoliko sekundi", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "za 5 dana", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "danas u 2:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "danas u 2:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "danas u 3:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "sutra u 2:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "danas u 1:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "juče u 2:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
return '[u] [nedelju] [u] LT';
case 3:
return '[u] [sredu] [u] LT';
case 6:
return '[u] [subotu] [u] LT';
case 1:
case 2:
case 4:
case 5:
return '[u] dddd [u] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
var lastWeekDay = [
'[prošle] [nedelje] [u] LT',
'[prošlog] [ponedeljka] [u] LT',
'[prošlog] [utorka] [u] LT',
'[prošle] [srede] [u] LT',
'[prošlog] [četvrtka] [u] LT',
'[prošlog] [petka] [u] LT',
'[prošle] [subote] [u] LT'
];
return lastWeekDay[d.day()];
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/sr'), 'sr', "module should export sr");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Swedish
*************************************************/
exports["lang:sv"] = {
setUp : function (cb) {
moment.lang('sv');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'söndag, februari 14e 2010, 3:25:50 pm'],
['ddd, hA', 'sön, 3PM'],
['M Mo MM MMMM MMM', '2 2a 02 februari feb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14e 14'],
['d do dddd ddd dd', '0 0e söndag sön sö'],
['DDD DDDo DDDD', '45 45e 045'],
['w wo ww', '6 6e 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45e day of the year'],
['L', '2010-02-14'],
['LL', '14 februari 2010'],
['LLL', '14 februari 2010 15:25'],
['LLLL', 'söndag 14 februari 2010 15:25'],
['l', '2010-2-14'],
['ll', '14 feb 2010'],
['lll', '14 feb 2010 15:25'],
['llll', 'sön 14 feb 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'söndag sön sö_måndag mån må_tisdag tis ti_onsdag ons on_torsdag tor to_fredag fre fr_lördag lör lö'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "några sekunder", "44 sekunder = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "en minut", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "en minut", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuter", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuter", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "en timme", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "en timme", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 timmar", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 timmar", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 timmar", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "en dag", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "en dag", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagar", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "en dag", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagar", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagar", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "en månad", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "en månad", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "en månad", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 månader", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 månader", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 månader", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "en månad", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 månader", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 månader", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ett år", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ett år", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 år", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ett år", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 år", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "om några sekunder", "prefix");
test.equal(moment(0).from(30000), "för några sekunder sedan", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "för några sekunder sedan", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "om några sekunder", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "om 5 dagar", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Idag 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Idag 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Idag 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Imorgon 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Idag 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Igår 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2a', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2a', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/sv'), 'sv', "module should export sv");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Tamil - தமிழ்
*************************************************/
exports["lang:ta"] = {
setUp : function (cb) {
moment.lang('ta');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('ta');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'ஞாயிற்றுக்கிழமை, பிப்ரவரி 14வது 2010, 3:25:50 எற்பாடு'],
['ddd, hA', 'ஞாயிறு, 3 எற்பாடு'],
['M Mo MM MMMM MMM', '2 2வது 02 பிப்ரவரி பிப்ரவரி'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14வது 14'],
['d do dddd ddd dd', '0 0வது ஞாயிற்றுக்கிழமை ஞாயிறு ஞா'],
['DDD DDDo DDDD', '45 45வது 045'],
['w wo ww', '8 8வது 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', ' எற்பாடு எற்பாடு'],
['[ஆண்டின்] DDDo [நாள்]', 'ஆண்டின் 45வது நாள்'],
['L', '14/02/2010'],
['LL', '14 பிப்ரவரி 2010'],
['LLL', '14 பிப்ரவரி 2010, 15:25'],
['LLLL', 'ஞாயிற்றுக்கிழமை, 14 பிப்ரவரி 2010, 15:25'],
['l', '14/2/2010'],
['ll', '14 பிப்ரவரி 2010'],
['lll', '14 பிப்ரவரி 2010, 15:25'],
['llll', 'ஞாயிறு, 14 பிப்ரவரி 2010, 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1வது', '1வது');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2வது', '2வது');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3வது', '3வது');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4வது', '4வது');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5வது', '5வது');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6வது', '6வது');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7வது', '7வது');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8வது', '8வது');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9வது', '9வது');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10வது', '10வது');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11வது', '11வது');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12வது', '12வது');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13வது', '13வது');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14வது', '14வது');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15வது', '15வது');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16வது', '16வது');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17வது', '17வது');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18வது', '18வது');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19வது', '19வது');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20வது', '20வது');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21வது', '21வது');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22வது', '22வது');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23வது', '23வது');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24வது', '24வது');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25வது', '25வது');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26வது', '26வது');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27வது', '27வது');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28வது', '28வது');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29வது', '29வது');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30வது', '30வது');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31வது', '31வது');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'ஞாயிற்றுக்கிழமை ஞாயிறு ஞா_திங்கட்கிழமை திங்கள் தி_செவ்வாய்கிழமை செவ்வாய் செ_புதன்கிழமை புதன் பு_வியாழக்கிழமை வியாழன் வி_வெள்ளிக்கிழமை வெள்ளி வெ_சனிக்கிழமை சனி ச'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ஒரு சில விநாடிகள்", "44 விநாடிகள் = ஒரு சில விநாடிகள்");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ஒரு நிமிடம்", "45 விநாடிகள் = ஒரு நிமிடம்");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ஒரு நிமிடம்", "89 விநாடிகள் = ஒரு நிமிடம்");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 நிமிடங்கள்", "90 விநாடிகள் = 2 நிமிடங்கள்");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 நிமிடங்கள்", "44 நிமிடங்கள் = 44 நிமிடங்கள்");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ஒரு மணி நேரம்", "45 நிமிடங்கள் = ஒரு மணி நேரம்");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ஒரு மணி நேரம்", "89 நிமிடங்கள் = ஒரு மணி நேரம்");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 மணி நேரம்", "90 நிமிடங்கள் = 2 மணி நேரம்");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 மணி நேரம்", "5 மணி நேரம் = 5 மணி நேரம்");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 மணி நேரம்", "21 மணி நேரம் = 21 மணி நேரம்");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ஒரு நாள்", "22 மணி நேரம் = ஒரு நாள்");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ஒரு நாள்", "35 மணி நேரம் = ஒரு நாள்");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 நாட்கள்", "36 மணி நேரம் = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ஒரு நாள்", "1 நாள் = ஒரு நாள்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 நாட்கள்", "5 நாட்கள் = 5 நாட்கள்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 நாட்கள்", "25 நாட்கள் = 25 நாட்கள்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ஒரு மாதம்", "26 நாட்கள் = ஒரு மாதம்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ஒரு மாதம்", "30 நாட்கள் = ஒரு மாதம்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ஒரு மாதம்", "45 நாட்கள் = ஒரு மாதம்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 மாதங்கள்", "46 நாட்கள் = 2 மாதங்கள்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 மாதங்கள்", "75 நாட்கள் = 2 மாதங்கள்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 மாதங்கள்", "76 நாட்கள் = 3 மாதங்கள்");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ஒரு மாதம்", "1 மாதம் = ஒரு மாதம்");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 மாதங்கள்", "5 மாதங்கள் = 5 மாதங்கள்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 மாதங்கள்", "344 நாட்கள் = 11 மாதங்கள்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ஒரு வருடம்", "345 நாட்கள் = ஒரு வருடம்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ஒரு வருடம்", "547 நாட்கள் = ஒரு வருடம்");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ஆண்டுகள்", "548 நாட்கள் = 2 ஆண்டுகள்");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ஒரு வருடம்", "1 வருடம் = ஒரு வருடம்");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ஆண்டுகள்", "5 ஆண்டுகள் = 5 ஆண்டுகள்");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "ஒரு சில விநாடிகள் இல்", "prefix");
test.equal(moment(0).from(30000), "ஒரு சில விநாடிகள் முன்", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "ஒரு சில விநாடிகள் முன்", "இப்போது இருந்து கடந்த காலத்தில் காட்ட வேண்டும்");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "ஒரு சில விநாடிகள் இல்", "ஒரு சில விநாடிகள் இல்");
test.equal(moment().add({d: 5}).fromNow(), "5 நாட்கள் இல்", "5 நாட்கள் இல்");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "இன்று 02:00", "இன்று 02:00");
test.equal(moment(a).add({ m: 25 }).calendar(), "இன்று 02:25", "இன்று 02:25");
test.equal(moment(a).add({ h: 1 }).calendar(), "இன்று 03:00", "இன்று 03:00");
test.equal(moment(a).add({ d: 1 }).calendar(), "நாளை 02:00", "நாளை 02:00");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "இன்று 01:00", "இன்று 01:00");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "நேற்று 02:00", "நேற்று 02:00");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd, LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd, LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd, LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1th is the first week of the year.
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"meridiem" : function (test) {
test.expect(6);
test.equal(moment([2011, 2, 23, 2, 30]).format('a'), " வைகறை", "before dawn");
test.equal(moment([2011, 2, 23, 9, 30]).format('a'), " காலை", "morning");
test.equal(moment([2011, 2, 23, 14, 30]).format('a'), " நண்பகல்", "during day");
test.equal(moment([2011, 2, 23, 17, 30]).format('a'), " எற்பாடு", "evening");
test.equal(moment([2011, 2, 23, 19, 30]).format('a'), " மாலை", "late evening");
test.equal(moment([2011, 2, 23, 21, 20]).format('a'), " இரவு", "night");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/ta'), 'ta', "module should export ta");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Thai
*************************************************/
exports["lang:th"] = {
setUp : function (cb) {
moment.lang('th');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'อาทิตย์, 14 กุมภาพันธ์ 2010, 3:25:50 หลังเที่ยง'],
['ddd, h A', 'อาทิตย์, 3 หลังเที่ยง'],
['M Mo MM MMMM MMM', '2 2 02 กุมภาพันธ์ กุมภา'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 อาทิตย์ อาทิตย์ อา.'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'หลังเที่ยง หลังเที่ยง'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '2010/02/14'],
['LL', '14 กุมภาพันธ์ 2010'],
['LLL', '14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'],
['LLLL', 'วันอาทิตย์ที่ 14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'],
['l', '2010/2/14'],
['ll', '14 กุมภา 2010'],
['lll', '14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที'],
['llll', 'วันอาทิตย์ที่ 14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'อาทิตย์ อาทิตย์ อา._จันทร์ จันทร์ จ._อังคาร อังคาร อ._พุธ พุธ พ._พฤหัสบดี พฤหัส พฤ._ศุกร์ ศุกร์ ศ._เสาร์ เสาร์ ส.'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ไม่กี่วินาที", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "1 นาที", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "1 นาที", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 นาที", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 นาที", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "1 ชั่วโมง", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "1 ชั่วโมง", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ชั่วโมง", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ชั่วโมง", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ชั่วโมง", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "1 วัน", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "1 วัน", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 วัน", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "1 วัน", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 วัน", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 วัน", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "1 เดือน", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "1 เดือน", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "1 เดือน", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 เดือน", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 เดือน", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 เดือน", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "1 เดือน", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 เดือน", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 เดือน", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "1 ปี", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "1 ปี", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ปี", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "1 ปี", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ปี", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "อีก ไม่กี่วินาที", "prefix");
test.equal(moment(0).from(30000), "ไม่กี่วินาทีที่แล้ว", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "ไม่กี่วินาทีที่แล้ว", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "อีก ไม่กี่วินาที", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "อีก 5 วัน", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "วันนี้ เวลา 2 นาฬิกา 0 นาที", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "วันนี้ เวลา 2 นาฬิกา 25 นาที", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "วันนี้ เวลา 3 นาฬิกา 0 นาที", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "พรุ่งนี้ เวลา 2 นาฬิกา 0 นาที", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "วันนี้ เวลา 1 นาฬิกา 0 นาที", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "เมื่อวานนี้ เวลา 2 นาฬิกา 0 นาที", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/th'), 'th', "module should export th");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Tagalog/Filipino
*************************************************/
exports["lang:tl-ph"] = {
setUp : function (cb) {
moment.lang('tl-ph');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split("_"),
i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Linggo, Pebrero 14 2010, 3:25:50 pm'],
['ddd, hA', 'Lin, 3PM'],
['M Mo MM MMMM MMM', '2 2 02 Pebrero Peb'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 Linggo Lin Li'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '6 6 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '02/14/2010'],
['LL', 'Pebrero 14, 2010'],
['LLL', 'Pebrero 14, 2010 15:25'],
['LLLL', 'Linggo, Pebrero 14, 2010 15:25'],
['l', '2/14/2010'],
['ll', 'Peb 14, 2010'],
['lll', 'Peb 14, 2010 15:25'],
['llll', 'Lin, Peb 14, 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Linggo Lin Li_Lunes Lun Lu_Martes Mar Ma_Miyerkules Miy Mi_Huwebes Huw Hu_Biyernes Biy Bi_Sabado Sab Sab'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ilang segundo", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "isang minuto", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "isang minuto", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuto", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuto", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "isang oras", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "isang oras", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 oras", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 oras", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 oras", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "isang araw", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "isang araw", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 araw", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "isang araw", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 araw", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 araw", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "isang buwan", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "isang buwan", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "isang buwan", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 buwan", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 buwan", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 buwan", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "isang buwan", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 buwan", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 buwan", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "isang taon", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "isang taon", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 taon", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "isang taon", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 taon", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "sa loob ng ilang segundo", "prefix");
test.equal(moment(0).from(30000), "ilang segundo ang nakalipas", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "sa loob ng ilang segundo", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "sa loob ng 5 araw", "in 5 days");
test.done();
},
"same day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Ngayon sa 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Ngayon sa 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Ngayon sa 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Bukas sa 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Ngayon sa 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Kahapon sa 02:00", "yesterday at the same time");
test.done();
},
"same next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [sa] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [sa] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [sa] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"same last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [huling linggo] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [huling linggo] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [huling linggo] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"same all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/tl-ph'), 'tl-ph', "module should export tl-ph");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Turkish
*************************************************/
exports["lang:tr"] = {
setUp : function (cb) {
moment.lang('tr');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'Pazar, Şubat 14\'üncü 2010, 3:25:50 pm'],
['ddd, hA', 'Paz, 3PM'],
['M Mo MM MMMM MMM', '2 2\'nci 02 Şubat Şub'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14\'üncü 14'],
['d do dddd ddd dd', '0 0\'ıncı Pazar Paz Pz'],
['DDD DDDo DDDD', '45 45\'inci 045'],
['w wo ww', "7 7'nci 07"],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[yılın] DDDo [günü]', 'yılın 45\'inci günü'],
['L', '14.02.2010'],
['LL', '14 Şubat 2010'],
['LLL', '14 Şubat 2010 15:25'],
['LLLL', 'Pazar, 14 Şubat 2010 15:25'],
['l', '14.2.2010'],
['ll', '14 Şub 2010'],
['lll', '14 Şub 2010 15:25'],
['llll', 'Paz, 14 Şub 2010 15:25']
],
DDDo = [
[359, '360\'ıncı'],
[199, '200\'üncü'],
[149, '150\'nci']
],
dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
DDDoDt,
i;
test.expect(a.length + DDDo.length);
for (i = 0; i < a.length; i++) {
test.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
for (i = 0; i < DDDo.length; i++) {
DDDoDt = moment([2010]);
test.equal(DDDoDt.add('days', DDDo[i][0]).format('DDDo'), DDDo[i][1], DDDo[i][0] + ' ---> ' + DDDo[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1\'inci', '1st');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2\'nci', '2nd');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3\'üncü', '3rd');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4\'üncü', '4th');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5\'inci', '5th');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6\'ncı', '6th');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7\'nci', '7th');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8\'inci', '8th');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9\'uncu', '9th');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10\'uncu', '10th');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11\'inci', '11th');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12\'nci', '12th');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13\'üncü', '13th');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14\'üncü', '14th');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15\'inci', '15th');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16\'ncı', '16th');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17\'nci', '17th');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18\'inci', '18th');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19\'uncu', '19th');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20\'nci', '20th');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21\'inci', '21th');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22\'nci', '22th');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23\'üncü', '23th');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24\'üncü', '24th');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25\'inci', '25th');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26\'ncı', '26th');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27\'nci', '27th');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28\'inci', '28th');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29\'uncu', '29th');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30\'uncu', '30th');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31\'inci', '31st');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Pazar Paz Pz_Pazartesi Pts Pt_Salı Sal Sa_Çarşamba Çar Ça_Perşembe Per Pe_Cuma Cum Cu_Cumartesi Cts Ct'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "birkaç saniye", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "bir dakika", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "bir dakika", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 dakika", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 dakika", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "bir saat", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "bir saat", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 saat", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 saat", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 saat", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "bir gün", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "bir gün", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 gün", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "bir gün", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 gün", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 gün", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "bir ay", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "bir ay", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "bir ay", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 ay", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 ay", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 ay", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "bir ay", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 ay", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 ay", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "bir yıl", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "bir yıl", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 yıl", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "bir yıl", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 yıl", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "birkaç saniye sonra", "prefix");
test.equal(moment(0).from(30000), "birkaç saniye önce", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "birkaç saniye önce", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "birkaç saniye sonra", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "5 gün sonra", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "bugün saat 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "bugün saat 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "bugün saat 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "yarın saat 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "bugün saat 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "dün 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), "1 01 1'inci", "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), "1 01 1'inci", "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), "2 02 2'nci", "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), "2 02 2'nci", "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), "3 03 3'üncü", "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/tr'), 'tr', "module should export tr");
}
test.done();
}
};
// moment.js Morocco Central Atlas Tamaziɣt in Latin (tzm-la) tests
// author : Abdel Said : https://github.com/abdelsaid
var moment = require("../../moment");
exports["lang:tzm-la"] = {
setUp : function (cb) {
moment.lang('tzm-la');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'asamas, brˤayrˤ 14 2010, 3:25:50 pm'],
['ddd, hA', 'asamas, 3PM'],
['M Mo MM MMMM MMM', '2 2 02 brˤayrˤ brˤayrˤ'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 asamas asamas asamas'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '14/02/2010'],
['LL', '14 brˤayrˤ 2010'],
['LLL', '14 brˤayrˤ 2010 15:25'],
['LLLL', 'asamas 14 brˤayrˤ 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 brˤayrˤ 2010'],
['lll', '14 brˤayrˤ 2010 15:25'],
['llll', 'asamas 14 brˤayrˤ 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'asamas asamas asamas_aynas aynas aynas_asinas asinas asinas_akras akras akras_akwas akwas akwas_asimwas asimwas asimwas_asiḍyas asiḍyas asiḍyas'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "imik", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuḍ", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuḍ", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuḍ", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuḍ", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "saɛa", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "saɛa", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 tassaɛin", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 tassaɛin", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 tassaɛin", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ass", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ass", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 ossan", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ass", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ossan", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ossan", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ayowr", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ayowr", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ayowr", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 iyyirn", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 iyyirn", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 iyyirn", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ayowr", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 iyyirn", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 iyyirn", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "asgas", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "asgas", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 isgasn", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "asgas", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 isgasn", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "dadkh s yan imik", "prefix");
test.equal(moment(0).from(30000), "yan imik", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "yan imik", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "dadkh s yan imik", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "dadkh s yan 5 ossan", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "asdkh g 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "asdkh g 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "asdkh g 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "aska g 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "asdkh g 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "assant g 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [g] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [g] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [g] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [g] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [g] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [g] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Saturday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1");
test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2");
test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2");
test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2");
test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2");
test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(5);
test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2");
test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2");
test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/tzm-la'), 'tzm-la', "module should export tzm-la");
}
test.done();
}
};
// moment.js Morocco Central Atlas Tamaziɣt (tzm) tests
// author : Abdel Said : https://github.com/abdelsaid
var moment = require("../../moment");
exports["lang:tzm"] = {
setUp : function (cb) {
moment.lang('tzm');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'ⵉⵏⵏⴰⵢⵔ ⵉⴰⵢ_ⴱⴰⵢⴰⵢ_ⵎⴰⵚ ⵎⴰⵚ_ⵉⴱ ⵉⴱ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵢⵓ ⵢⵓⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⴱⵉ ⵛⵓⵜⴰⴱⵉ_ⴽⵟⵓⴱ ⴽⵟⵓⴱ_ⵓⵡⴰⴱⵉ ⵓⵡⴰⴱⵉ_ⴷⵓⵊⴱⵉ ⴷⵓⵊⵏⴱⵉⵔ'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'ⴰⵙⴰⵎⴰⵙ, ⴱⵕⴰⵢⵕ 14 2010, 3:25:50 pm'],
['ddd, hA', 'ⴰⵙⴰⵎⴰⵙ, 3PM'],
['M Mo MM MMMM MMM', '2 2 02 ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['L', '14/02/2010'],
['LL', '14 ⴱⵕⴰⵢⵕ 2010'],
['LLL', '14 ⴱⵕⴰⵢⵕ 2010 15:25'],
['LLLL', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 ⴱⵕⴰⵢⵕ 2010'],
['lll', '14 ⴱⵕⴰⵢⵕ 2010 15:25'],
['llll', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'ⵉⵏⵏⴰⵢⵔ ⵉⴰⵢ_ⴱⴰⵢⴰⵢ_ⵎⴰⵚ ⵎⴰⵚ_ⵉⴱ ⵉⴱ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵢⵓ ⵢⵓⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⴱⵉ ⵛⵓⵜⴰⴱⵉ_ⴽⵟⵓⴱ ⴽⵟⵓⴱ_ⵓⵡⴰⴱⵉ ⵓⵡⴰⴱⵉ_ⴷⵓⵊⴱⵉ ⴷⵓⵊⵏⴱⵉⵔ'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ_ⴰⵢⴰⵙ ⴰⵢⵏⴰⵙ ⴰⵢⴰⵙ_ⴰⵙⵉⴰⵙ ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⴰⵙ_ⴰⴽⴰⵙ ⴰⴽⵔⴰⵙ ⴰⴽⴰⵙ_ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ⵉⵎⵉⴽ", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ⵎⵉⵏⵓⴺ", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ⵎⵉⵏⵓⴺ", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 ⵎⵉⵏⵓⴺ", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 ⵎⵉⵏⵓⴺ", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ⵙⴰⵄⴰ", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ⵙⴰⵄⴰ", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ⵜⴰⵙⵙⴰⵄⵉⵏ", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ⵜⴰⵙⵙⴰⵄⵉⵏ", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ⵜⴰⵙⵙⴰⵄⵉⵏ", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ⴰⵙⵙ", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ⴰⵙⵙ", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 oⵙⵙⴰ", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ⴰⵙⵙ", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 oⵙⵙⴰ", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 oⵙⵙⴰ", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ⴰⵢoⵓ", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ⴰⵢoⵓ", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ⴰⵢoⵓ", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 ⵉⵢⵢⵉⵔⵏ", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 ⵉⵢⵢⵉⵔⵏ", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 ⵉⵢⵢⵉⵔⵏ", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ⴰⵢoⵓ", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 ⵉⵢⵢⵉⵔⵏ", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 ⵉⵢⵢⵉⵔⵏ", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ⴰⵙⴳⴰⵙ", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ⴰⵙⴳⴰⵙ", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ⵉⵙⴳⴰⵙⵏ", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ⴰⵙⴳⴰⵙ", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ⵉⵙⴳⴰⵙⵏ", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ", "prefix");
test.equal(moment(0).from(30000), "ⵢⴰⵏ ⵉⵎⵉⴽ", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "ⵢⴰⵏ ⵉⵎⵉⴽ", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ 5 oⵙⵙⴰ", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "ⴰⵙⴷⵅ ⴴ 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "ⴰⵙⴷⵅ ⴴ 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "ⴰⵙⴷⵅ ⴴ 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "ⴰⵙⴽⴰ ⴴ 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "ⴰⵙⴷⵅ ⴴ 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "ⴰⵚⴰⵏⵜ ⴴ 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Saturday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1");
test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2");
test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2");
test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2");
test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2");
test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(5);
test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2");
test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2");
test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1");
test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2");
test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/tzm'), 'tzm', "module should export tzm");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Ukrainian
*************************************************/
exports["lang:uk"] = {
setUp : function (cb) {
moment.lang('uk');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень веровтень жовт_листопад лист_грудень груд'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(18);
var a = [
['dddd, Do MMMM YYYY, HH:mm:ss', 'неділя, 14-го лютого 2010, 15:25:50'],
['ddd, h A', 'нд, 3 дня'],
['M Mo MM MMMM MMM', '2 2-й 02 лютий лют'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14-го 14'],
['d do dddd ddd dd', '0 0-й неділя нд нд'],
['DDD DDDo DDDD', '45 45-й 045'],
['w wo ww', '7 7-й 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'дня дня'],
['DDDo [день року]', '45-й день року'],
['L', '14.02.2010'],
['LL', '14 лютого 2010 р.'],
['LLL', '14 лютого 2010 р., 15:25'],
['LLLL', 'неділя, 14 лютого 2010 р., 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format meridiem" : function (test) {
test.expect(8);
test.equal(moment([2012, 11, 28, 0, 0]).format("A"), "ночі", "night");
test.equal(moment([2012, 11, 28, 3, 59]).format("A"), "ночі", "night");
test.equal(moment([2012, 11, 28, 4, 0]).format("A"), "ранку", "morning");
test.equal(moment([2012, 11, 28, 11, 59]).format("A"), "ранку", "morning");
test.equal(moment([2012, 11, 28, 12, 0]).format("A"), "дня", "afternoon");
test.equal(moment([2012, 11, 28, 16, 59]).format("A"), "дня", "afternoon");
test.equal(moment([2012, 11, 28, 17, 0]).format("A"), "вечора", "evening");
test.equal(moment([2012, 11, 28, 23, 59]).format("A"), "вечора", "evening");
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень веровтень жовт_листопад лист_грудень груд'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format month case" : function (test) {
test.expect(24);
var months = {
'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'),
'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_')
}, i;
for (i = 0; i < 12; i++) {
test.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
test.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'неділя нд нд_понеділок пн пн_вівторок вт вт_середа ср сретвер чт чт_пятниця пт пт_субота сб сб'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(32);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "декілька секунд", "44 seconds = seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "хвилина", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "хвилина", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 хвилини", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 хвилини", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "годину", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "годину", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 години", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 годин", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 година", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "день", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "день", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 дні", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "день", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 днів", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), "11 днів", "11 days = 11 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), "21 день", "21 days = 21 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 днів", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "місяць", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "місяць", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "місяць", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 місяці", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 місяці", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 місяці", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "місяць", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 місяців", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 місяців", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "рік", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "рік", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 роки", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "рік", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 років", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "за декілька секунд", "prefix");
test.equal(moment(0).from(30000), "декілька секунд тому", "suffix");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "за декілька секунд", "in seconds");
test.equal(moment().add({d: 5}).fromNow(), "за 5 днів", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(7);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Сьогодні о 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Сьогодні о 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Сьогодні о 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Завтра о 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Сьогодні о 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчора о 02:00", "yesterday at the same time");
// A special case for Ukrainian since 11 hours have different preposition
test.equal(moment(a).add({ h: 9 }).calendar(), "Сьогодні об 11:00", "same day at 11 o'clock");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[У] dddd [о' + (m.hours() === 11 ? 'б' : '') + '] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[У] dddd [о] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[У] dddd [о] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
function makeFormat(d) {
switch (d.day()) {
case 0:
case 3:
case 5:
case 6:
return '[Минулої] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT';
case 1:
case 2:
case 4:
return '[Минулого] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT';
}
}
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-й', "Dec 26 2011 should be week 1");
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-й', "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-й', "Jan 2 2012 should be week 2");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-й', "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-й', "Jan 9 2012 should be week 3");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/uk'), 'uk', "module should export uk");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Uzbek
*************************************************/
exports["lang:uz"] = {
setUp : function (cb) {
moment.lang('uz');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = 'январь янв_февраль фев_март мар_апрель апрай май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, Do-MMMM YYYY, h:mm:ss', 'Якшанба, 14-февраль 2010, 3:25:50'],
['ddd, h:mm', 'Якш, 3:25'],
['M Mo MM MMMM MMM', '2 2 02 февраль фев'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 Якшанба Якш Як'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '7 7 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[йилнинг] DDDo-[куни]', 'йилнинг 45-куни'],
['L', '14/02/2010'],
['LL', '14 февраль 2010'],
['LLL', '14 февраль 2010 15:25'],
['LLLL', '14 февраль 2010, Якшанба 15:25'],
['l', '14/2/2010'],
['ll', '14 фев 2010'],
['lll', '14 фев 2010 15:25'],
['llll', '14 фев 2010, Якш 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = 'январь янв_февраль фев_март мар_апрель апрай май_июнь июн_июль июл_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = 'Якшанба Якш Як_Душанба Душ Ду_Сешанба Сеш Сеоршанба Чор Чоайшанба Пай Паума Жум Жуанба Шан Ша'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "фурсат", "44 секунд = фурсат");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "бир дакика", "45 секунд = бир дакика");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "бир дакика", "89 секунд = бир дакика");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 дакика", "90 секунд = 2 дакика");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 дакика", "44 дакика = 44 дакика");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "бир соат", "45 минут = бир соат");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "бир соат", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 соат", "90 минут = 2 соат");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 соат", "5 соат = 5 соат");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 соат", "21 соат = 21 соат");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "бир кун", "22 соат = бир кун");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "бир кун", "35 соат = бир кун");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 кун", "36 соат = 2 кун");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "бир кун", "1 кун = 1 кун");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 кун", "5 кун = 5 кун");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 кун", "25 кун = 25 кун");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "бир ой", "26 кун = бир ой");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "бир ой", "30 кун = бир ой");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "бир ой", "45 кун = бир ой");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 ой", "46 кун = 2 ой");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 ой", "75 кун = 2 ой");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 ой", "76 кун = 3 ой");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "бир ой", "бир ой = бир ой");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 ой", "5 ой = 5 ой");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 ой", "344 кун = 11 ой");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "бир йил", "345 кун = бир йил");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "бир йил", "547 кун = бир йил");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 йил", "548 кун = 2 йил");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "бир йил", "1 йил = бир йил");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 йил", "5 йил = 5 йил");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "Якин фурсат ичида", "prefix");
test.equal(moment(0).from(30000), "Бир неча фурсат олдин", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "Бир неча фурсат олдин", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "Якин фурсат ичида", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "Якин 5 кун ичида", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Бугун соат 02:00 да", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Бугун соат 02:25 да", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Бугун соат 03:00 да", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Эртага 02:00 да", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Бугун соат 01:00 да", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Кеча соат 02:00 да", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/uz'), 'uz', "module should export uz");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Vietnamese
*************************************************/
exports["lang:vi"] = {
setUp : function (cb) {
moment.lang('vi');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var i,
tests = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split("_");
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + i);
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(',');
equalTest(tests[i][0], '[tháng] M', i);
equalTest(tests[i][1], '[Th]M', i);
equalTest(tests[i][0], '[tháng] MM', i);
equalTest(tests[i][1], '[Th]MM', i);
equalTest(tests[i][0].toLocaleLowerCase(), '[THÁNG] M', i);
equalTest(tests[i][1].toLocaleLowerCase(), '[TH]M', i);
equalTest(tests[i][0].toLocaleUpperCase(), '[THÁNG] MM', i);
equalTest(tests[i][1].toLocaleUpperCase(), '[TH]MM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, h:mm:ss a', 'chủ nhật, tháng 2 14 2010, 3:25:50 pm'],
['ddd, hA', 'CN, 3PM'],
['M Mo MM MMMM MMM', '2 2 02 tháng 2 Th02'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 chủ nhật CN CN'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '6 6 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'pm PM'],
['[ngày thứ] DDDo [của năm]', 'ngày thứ 45 của năm'],
['L', '14/02/2010'],
['LL', '14 tháng 2 năm 2010'],
['LLL', '14 tháng 2 năm 2010 15:25'],
['LLLL', 'chủ nhật, 14 tháng 2 năm 2010 15:25'],
['l', '14/2/2010'],
['ll', '14 Th02 2010'],
['lll', '14 Th02 2010 15:25'],
['llll', 'CN, 14 Th02 2010 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format ordinal" : function (test) {
test.expect(31);
test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
test.done();
},
"format month" : function (test) {
test.expect(12);
var i,
expected = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM,MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var i,
expected = 'chủ nhật CN CN_thứ hai T2 T2_thứ ba T3 T3_thứ tư T4 T4_thứ năm T5 T5_thứ sáu T6 T6_thứ bảy T7 T7'.split("_");
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "vài giây", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "một phút", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "một phút", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 phút", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 phút", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "một giờ", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "một giờ", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 giờ", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 giờ", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 giờ", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "một ngày", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "một ngày", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 ngày", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "một ngày", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ngày", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ngày", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "một tháng", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "một tháng", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "một tháng", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 tháng", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 tháng", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 tháng", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "một tháng", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 tháng", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 tháng", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "một năm", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "một năm", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 năm", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "một năm", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 năm", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "vài giây tới", "prefix");
test.equal(moment(0).from(30000), "vài giây trước", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "vài giây trước", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "vài giây tới", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "5 ngày tới", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "Hôm nay lúc 02:00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "Hôm nay lúc 02:25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "Hôm nay lúc 03:00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "Ngày mai lúc 02:00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hôm nay lúc 01:00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hôm qua lúc 02:00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
// Monday is the first day of the week.
// The week that contains Jan 4th is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(5);
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53");
test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53");
test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53");
test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(6);
test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52");
test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52");
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2");
test.done();
},
"weeks year starting sunday formatted" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', "Jan 2 2012 should be week 1");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', "Jan 8 2012 should be week 1");
test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', "Jan 9 2012 should be week 2");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', "Jan 15 2012 should be week 2");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/vi'), 'vi', "module should export vi");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Simplified Chinese
**************************************************/
exports["lang:zh-cn"] = {
setUp : function (cb) {
moment.lang('zh-cn');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'],
['ddd, Ah', '周日, 下午3'],
['M Mo MM MMMM MMM', '2 2月 02 二月 2月'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14日 14'],
['d do dddd ddd dd', '0 0日 星期日 周日 日'],
['DDD DDDo DDDD', '45 45日 045'],
['w wo ww', '6 6周 06'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', '下午 下午'],
['[这年的第] DDDo', '这年的第 45日'],
['L', '2010-02-14'],
['LL', '2010年2月14日'],
['LLL', '2010年2月14日下午3点25'],
['LLLL', '2010年2月14日星期日下午3点25'],
['l', '2010-02-14'],
['ll', '2010年2月14日'],
['lll', '2010年2月14日下午3点25'],
['llll', '2010年2月14日星期日下午3点25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = '星期日 周日 日_星期一 周一 一_星期二 周二 二_星期三 周三 三_星期四 周四 四_星期五 周五 五_星期六 周六 六'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "几秒", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "1分钟", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "1分钟", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2分钟", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44分钟", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "1小时", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "1小时", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2小时", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5小时", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21小时", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "1天", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "1天", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2天", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "1天", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5天", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25天", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "1个月", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "1个月", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "1个月", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2个月", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2个月", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3个月", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "1个月", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5个月", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11个月", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "1年", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "1年", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2年", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "1年", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5年", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "几秒内", "prefix");
test.equal(moment(0).from(30000), "几秒前", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "几秒前", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "几秒内", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "5天内", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "今天凌晨2点整", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "今天凌晨2点25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "今天凌晨3点整", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "明天凌晨2点整", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "今天凌晨1点整", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨天凌晨2点整", "yesterday at the same time");
test.done();
},
"calendar current week": function (test) {
var i, m,
today = moment().startOf('day');
for (i = 0; i < 7; i++) {
m = moment().startOf('week').add({ d: i});
if (Math.abs(m.diff(today, 'days')) <= 1) {
continue; // skip today, yesterday, tomorrow
}
test.equal(m.calendar(), m.format('[本]ddd凌晨12点整'), "Monday + " + i + " days current time");
}
test.done();
},
"calendar next week" : function (test) {
var i, m,
today = moment().startOf('day');
for (i = 7; i < 14; i++) {
m = moment().startOf('week').add({ d: i});
if (Math.abs(m.diff(today, 'days')) >= 7) {
continue;
}
if (Math.abs(m.diff(today, 'days')) <= 1) {
continue; // skip today, yesterday, tomorrow
}
test.equal(m.calendar(), m.format('[下]ddd凌晨12点整'), "Today + " + i + " days beginning of day");
}
test.done();
},
"calendar last week" : function (test) {
var i, m,
today = moment().startOf('day');
for (i = 1; i < 8; i++) {
m = moment().startOf('week').subtract({ d: i});
if ((Math.abs(m.diff(today, 'days')) >= 7) || (Math.abs(m.diff(today, 'days')) <= 1)) {
continue;
}
test.equal(m.calendar(), m.format('[上]ddd凌晨12点整'), "Monday - " + i + " days next week");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('LL'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('LL'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('LL'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('LL'), "in 2 weeks");
test.done();
},
"meridiem" : function (test) {
test.expect(6);
test.equal(moment([2011, 2, 23, 0, 0]).format('A'), "凌晨", "before dawn");
test.equal(moment([2011, 2, 23, 6, 0]).format('A'), "早上", "morning");
test.equal(moment([2011, 2, 23, 9, 0]).format('A'), "上午", "before noon");
test.equal(moment([2011, 2, 23, 12, 0]).format('A'), "中午", "noon");
test.equal(moment([2011, 2, 23, 13, 0]).format('A'), "下午", "afternoon");
test.equal(moment([2011, 2, 23, 18, 0]).format('A'), "晚上", "night");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(4);
test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52");
test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 52");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 52, "Dec 31 2006 should be week 52");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 52, "Dec 29 2002 should be week 52");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(5);
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(2);
test.equal(moment([2010, 0, 2]).week(), 53, "Jan 2 2010 should be week 53");
test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(3);
test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52");
test.equal(moment([2011, 0, 8]).week(), 1, "Jan 8 2011 should be week 1");
test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(3);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52周', "Jan 1 2012 应该是第52周");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1周', "Jan 7 2012 应该是第 1周");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2周', "Jan 14 2012 应该是第 2周");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/zh-cn'), 'zh-cn', "module should export zh-cn");
}
test.done();
}
};
var moment = require("../../moment");
/**************************************************
Traditional Chinese
*************************************************/
exports["lang:zh-tw"] = {
setUp : function (cb) {
moment.lang('zh-tw');
moment.createFromInputFallback = function () {
throw new Error("input not handled by moment");
};
cb();
},
tearDown : function (cb) {
moment.lang('en');
cb();
},
"parse" : function (test) {
test.expect(96);
var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"), i;
function equalTest(input, mmm, i) {
test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}
for (i = 0; i < 12; i++) {
tests[i] = tests[i].split(' ');
equalTest(tests[i][0], 'MMM', i);
equalTest(tests[i][1], 'MMM', i);
equalTest(tests[i][0], 'MMMM', i);
equalTest(tests[i][1], 'MMMM', i);
equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
test.done();
},
"format" : function (test) {
test.expect(22);
var a = [
['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'],
['ddd, Ah', '週日, 下午3'],
['M Mo MM MMMM MMM', '2 2月 02 二月 2月'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14日 14'],
['d do dddd ddd dd', '0 0日 星期日 週日 日'],
['DDD DDDo DDDD', '45 45日 045'],
['w wo ww', '8 8週 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', '下午 下午'],
['[這年的第] DDDo', '這年的第 45日'],
['L', '2010年2月14日'],
['LL', '2010年2月14日'],
['LLL', '2010年2月14日下午3點25'],
['LLLL', '2010年2月14日星期日下午3點25'],
['l', '2010年2月14日'],
['ll', '2010年2月14日'],
['lll', '2010年2月14日下午3點25'],
['llll', '2010年2月14日星期日下午3點25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
test.done();
},
"format month" : function (test) {
test.expect(12);
var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
test.done();
},
"format week" : function (test) {
test.expect(7);
var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split("_"), i;
for (i = 0; i < expected.length; i++) {
test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
test.done();
},
"from" : function (test) {
test.expect(30);
var start = moment([2007, 1, 28]);
test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "幾秒", "44 seconds = a few seconds");
test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "一分鐘", "45 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "一分鐘", "89 seconds = a minute");
test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2分鐘", "90 seconds = 2 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44分鐘", "44 minutes = 44 minutes");
test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "一小時", "45 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "一小時", "89 minutes = an hour");
test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2小時", "90 minutes = 2 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5小時", "5 hours = 5 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21小時", "21 hours = 21 hours");
test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "一天", "22 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "一天", "35 hours = a day");
test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2天", "36 hours = 2 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "一天", "1 day = a day");
test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5天", "5 days = 5 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25天", "25 days = 25 days");
test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "一個月", "26 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "一個月", "30 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "一個月", "45 days = a month");
test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2個月", "46 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2個月", "75 days = 2 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3個月", "76 days = 3 months");
test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "一個月", "1 month = a month");
test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5個月", "5 months = 5 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11個月", "344 days = 11 months");
test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "一年", "345 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "一年", "547 days = a year");
test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2年", "548 days = 2 years");
test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "一年", "1 year = a year");
test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5年", "5 years = 5 years");
test.done();
},
"suffix" : function (test) {
test.expect(2);
test.equal(moment(30000).from(0), "幾秒內", "prefix");
test.equal(moment(0).from(30000), "幾秒前", "suffix");
test.done();
},
"now from now" : function (test) {
test.expect(1);
test.equal(moment().fromNow(), "幾秒前", "now from now should display as in the past");
test.done();
},
"fromNow" : function (test) {
test.expect(2);
test.equal(moment().add({s: 30}).fromNow(), "幾秒內", "in a few seconds");
test.equal(moment().add({d: 5}).fromNow(), "5天內", "in 5 days");
test.done();
},
"calendar day" : function (test) {
test.expect(6);
var a = moment().hours(2).minutes(0).seconds(0);
test.equal(moment(a).calendar(), "今天早上2點00", "today at the same time");
test.equal(moment(a).add({ m: 25 }).calendar(), "今天早上2點25", "Now plus 25 min");
test.equal(moment(a).add({ h: 1 }).calendar(), "今天早上3點00", "Now plus 1 hour");
test.equal(moment(a).add({ d: 1 }).calendar(), "明天早上2點00", "tomorrow at the same time");
test.equal(moment(a).subtract({ h: 1 }).calendar(), "今天早上1點00", "Now minus 1 hour");
test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨天早上2點00", "yesterday at the same time");
test.done();
},
"calendar next week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days end of day");
}
test.done();
},
"calendar last week" : function (test) {
test.expect(15);
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days current time");
m.hours(0).minutes(0).seconds(0).milliseconds(0);
test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days beginning of day");
m.hours(23).minutes(59).seconds(59).milliseconds(999);
test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days end of day");
}
test.done();
},
"calendar all else" : function (test) {
test.expect(4);
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week");
weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });
test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago");
test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks");
test.done();
},
"meridiem" : function (test) {
test.expect(10);
test.equal(moment([2011, 2, 23, 0, 0]).format('a'), "早上", "morning");
test.equal(moment([2011, 2, 23, 9, 0]).format('a'), "上午", "before noon");
test.equal(moment([2011, 2, 23, 12, 0]).format('a'), "中午", "noon");
test.equal(moment([2011, 2, 23, 13, 0]).format('a'), "下午", "after noon");
test.equal(moment([2011, 2, 23, 18, 0]).format('a'), "晚上", "night");
test.equal(moment([2011, 2, 23, 0, 0]).format('A'), "早上", "morning");
test.equal(moment([2011, 2, 23, 9, 0]).format('A'), "上午", "before noon");
test.equal(moment([2011, 2, 23, 12, 0]).format('A'), "中午", "noon");
test.equal(moment([2011, 2, 23, 13, 0]).format('A'), "下午", "afternoon");
test.equal(moment([2011, 2, 23, 18, 0]).format('A'), "晚上", "night");
test.done();
},
// Sunday is the first day of the week.
// The week that contains Jan 1st is the first week of the year.
"weeks year starting sunday" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1");
test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1");
test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2");
test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2");
test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3");
test.done();
},
"weeks year starting monday" : function (test) {
test.expect(6);
test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1");
test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1");
test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1");
test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2");
test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2");
test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3");
test.done();
},
"weeks year starting tuesday" : function (test) {
test.expect(6);
test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52");
test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1");
test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1");
test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2");
test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2");
test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3");
test.done();
},
"weeks year starting wednesday" : function (test) {
test.expect(6);
test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1");
test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1");
test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1");
test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2");
test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2");
test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3");
test.done();
},
"weeks year starting thursday" : function (test) {
test.expect(6);
test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1");
test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1");
test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1");
test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2");
test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2");
test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3");
test.done();
},
"weeks year starting friday" : function (test) {
test.expect(6);
test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1");
test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1");
test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1");
test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2");
test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2");
test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3");
test.done();
},
"weeks year starting saturday" : function (test) {
test.expect(5);
test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1");
test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1");
test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2");
test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2");
test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3");
test.done();
},
"weeks year starting sunday format" : function (test) {
test.expect(5);
test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1週', "Jan 1 2012 應該是第 1週");
test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1週', "Jan 7 2012 應該是第 1週");
test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2週', "Jan 8 2012 應該是第 2週");
test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2週', "Jan 14 2012 應該是第 2週");
test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3週', "Jan 15 2012 應該是第 3週");
test.done();
},
"returns the name of the language" : function (test) {
if (typeof module !== 'undefined' && module.exports) {
test.equal(require('../../lang/zh-tw'), 'zh-tw', "module should export zh-tw");
}
test.done();
}
};
}(this));