diff options
Diffstat (limited to 'www/lib/moment/min/tests.js')
| -rw-r--r-- | www/lib/moment/min/tests.js | 1785 |
1 files changed, 1551 insertions, 234 deletions
diff --git a/www/lib/moment/min/tests.js b/www/lib/moment/min/tests.js index 24c20365..a1f77a13 100644 --- a/www/lib/moment/min/tests.js +++ b/www/lib/moment/min/tests.js @@ -1611,11 +1611,11 @@ ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'], ['LT', '١٥:٢٥'], ['LTS', '١٥:٢٥:٥٠'], - ['L', '١٤/٠٢/٢٠١٠'], + ['L', '١٤/\u200f٢/\u200f٢٠١٠'], ['LL', '١٤ شباط فبراير ٢٠١٠'], ['LLL', '١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'], ['LLLL', 'الأحد ١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'], - ['l', '١٤/٢/٢٠١٠'], + ['l', '١٤/\u200f٢/\u200f٢٠١٠'], ['ll', '١٤ شباط فبراير ٢٠١٠'], ['lll', '١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'], ['llll', 'أحد ١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'] @@ -1882,6 +1882,17 @@ } }); + test('no leading zeros in long date formats', function (assert) { + var i, j, longDateStr, shortDateStr; + for (i = 1; i <= 9; ++i) { + for (j = 1; j <= 9; ++j) { + longDateStr = moment([2014, i, j]).format('L'); + shortDateStr = moment([2014, i, j]).format('l'); + assert.equal(longDateStr, shortDateStr, 'should not have leading zeros in month or day'); + } + } + }); + })); (function (global, factory) { @@ -5326,7 +5337,7 @@ localeModule('cv'); test('parse', function (assert) { - var tests = 'кăрлач кăр_нарăс нар_пуш пуш_ака ака_май май_çĕртме çĕр_утă утă_çурла çур_авăн ав_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; + var tests = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; function equalTest(input, mmm, i) { assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); } @@ -5345,29 +5356,29 @@ test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'вырсарникун, нарăс 14-мĕш 2010, 3:25:50 pm'], + ['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 нарăс нар'], + ['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'], + ['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-мĕш кунĕ'], + ['Ҫулӑн DDDo кунӗ', 'Ҫулӑн 45-мӗш кунӗ'], ['LTS', '15:25:50'], ['L', '14-02-2010'], - ['LL', '2010 çулхи нарăс уйăхĕн 14-мĕшĕ'], - ['LLL', '2010 çулхи нарăс уйăхĕн 14-мĕшĕ, 15:25'], - ['LLLL', 'вырсарникун, 2010 çулхи нарăс уйăхĕн 14-мĕшĕ, 15:25'], + ['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'] + ['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; @@ -5377,51 +5388,51 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-мĕш', '1-мĕш'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-мĕш', '2-мĕш'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-мĕш', '3-мĕш'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-мĕш', '4-мĕш'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-мĕш', '5-мĕш'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-мĕш', '6-мĕш'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-мĕш', '7-мĕш'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-мĕш', '8-мĕш'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-мĕш', '9-мĕш'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-мĕш', '10-мĕш'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-мĕш', '11-мĕш'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-мĕш', '12-мĕш'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-мĕш', '13-мĕш'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-мĕш', '14-мĕш'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-мĕш', '15-мĕш'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-мĕш', '16-мĕш'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-мĕш', '17-мĕш'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-мĕш', '18-мĕш'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-мĕш', '19-мĕш'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-мĕш', '20-мĕш'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-мĕш', '21-мĕш'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-мĕш', '22-мĕш'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-мĕш', '23-мĕш'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-мĕш', '24-мĕш'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-мĕш', '25-мĕш'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-мĕш', '26-мĕш'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-мĕш', '27-мĕш'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-мĕш', '28-мĕш'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-мĕш', '29-мĕш'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-мĕш', '30-мĕш'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-мĕш', '31-мĕш'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-мӗш', '1-мӗш'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-мӗш', '2-мӗш'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-мӗш', '3-мӗш'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-мӗш', '4-мӗш'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-мӗш', '5-мӗш'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-мӗш', '6-мӗш'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-мӗш', '7-мӗш'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-мӗш', '8-мӗш'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-мӗш', '9-мӗш'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-мӗш', '10-мӗш'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-мӗш', '11-мӗш'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-мӗш', '12-мӗш'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-мӗш', '13-мӗш'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-мӗш', '14-мӗш'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-мӗш', '15-мӗш'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-мӗш', '16-мӗш'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-мӗш', '17-мӗш'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-мӗш', '18-мӗш'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-мӗш', '19-мӗш'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-мӗш', '20-мӗш'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-мӗш', '21-мӗш'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-мӗш', '22-мӗш'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-мӗш', '23-мӗш'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-мӗш', '24-мӗш'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-мӗш', '25-мӗш'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-мӗш', '26-мӗш'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-мӗш', '27-мӗш'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-мӗш', '28-мӗш'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-мӗш', '29-мӗш'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-мӗш', '30-мӗш'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-мӗш', '31-мӗш'); }); test('format month', function (assert) { - var expected = 'кăрлач кăр_нарăс нар_пуш пуш_ака ака_май май_çĕртме çĕр_утă утă_çурла çур_авăн ав_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; + var expected = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; for (i = 0; i < expected.length; i++) { assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); } }); test('format week', function (assert) { - var expected = 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кĕçнерникун кĕç кç_эрнекун эрн эр_шăматкун шăм шм'.split('_'), i; + var expected = 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кӗҫнерникун кӗҫ кҫ_эрнекун эрн эр_шӑматкун шӑм шм'.split('_'), i; for (i = 0; i < expected.length; i++) { assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); } @@ -5429,60 +5440,60 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'пĕр-ик çеккунт', '44 sekunder = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'пĕр минут', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'пĕр минут', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'пӗр-ик ҫеккунт', '44 sekunder = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'пӗр минут', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'пӗр минут', '89 seconds = a minute'); assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минут', '90 seconds = 2 minutes'); assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минут', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'пĕр сехет', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'пĕр сехет', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'пӗр сехет', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'пӗр сехет', '89 minutes = an hour'); assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 сехет', '90 minutes = 2 hours'); assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 сехет', '5 hours = 5 hours'); assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 сехет', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'пĕр кун', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'пĕр кун', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'пӗр кун', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'пӗр кун', '35 hours = a day'); assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 кун', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'пĕр кун', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'пӗр кун', '1 day = a day'); assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 кун', '5 days = 5 days'); assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 кун', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'пĕр уйăх', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'пĕр уйăх', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'пĕр уйăх', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 уйăх', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 уйăх', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 уйăх', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'пĕр уйăх', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 уйăх', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'пĕр çул', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 çул', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'пĕр çул', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 çул', '5 years = 5 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'пӗр уйӑх', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'пӗр уйӑх', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'пӗр уйӑх', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 уйӑх', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 уйӑх', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 уйӑх', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'пӗр уйӑх', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 уйӑх', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'пӗр ҫул', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ҫул', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'пӗр ҫул', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ҫул', '5 years = 5 years'); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'пĕр-ик çеккунтран', 'prefix'); - assert.equal(moment(0).from(30000), 'пĕр-ик çеккунт каялла', 'suffix'); + assert.equal(moment(30000).from(0), 'пӗр-ик ҫеккунтран', 'prefix'); + assert.equal(moment(0).from(30000), 'пӗр-ик ҫеккунт каялла', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'пĕр-ик çеккунт каялла', 'now from now should display as in the past'); + assert.equal(moment().fromNow(), 'пӗр-ик ҫеккунт каялла', 'now from now should display as in the past'); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'пĕр-ик çеккунтран', 'in a few seconds'); + assert.equal(moment().add({s: 30}).fromNow(), 'пӗр-ик ҫеккунтран', 'in a few seconds'); assert.equal(moment().add({d: 5}).fromNow(), '5 кунран', 'in 5 days'); assert.equal(moment().add({h: 2}).fromNow(), '2 сехетрен', 'in 2 hours, the right suffix!'); - assert.equal(moment().add({y: 3}).fromNow(), '3 çултан', 'in 3 years, the right suffix!'); + assert.equal(moment().add({y: 3}).fromNow(), '3 ҫултан', 'in 3 years, the right suffix!'); }); test('calendar day', function (assert) { var a = moment().hours(2).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Паян 02:00 сехетре', 'today at the same time'); + assert.equal(moment(a).calendar(), 'Паян 02:00 сехетре', 'today at the same time'); assert.equal(moment(a).add({m: 25}).calendar(), 'Паян 02:25 сехетре', 'Now plus 25 min'); assert.equal(moment(a).add({h: 1}).calendar(), 'Паян 03:00 сехетре', 'Now plus 1 hour'); assert.equal(moment(a).add({d: 1}).calendar(), 'Ыран 02:00 сехетре', 'tomorrow at the same time'); assert.equal(moment(a).subtract({h: 1}).calendar(), 'Паян 01:00 сехетре', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ĕнер 02:00 сехетре', 'yesterday at the same time'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ӗнер 02:00 сехетре', 'yesterday at the same time'); }); test('calendar next week', function (assert) { @@ -5490,11 +5501,11 @@ for (i = 2; i < 7; i++) { m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), 'Today + ' + i + ' days current time'); + assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days current time'); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), 'Today + ' + i + ' days beginning of day'); + assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days beginning of day'); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), 'Today + ' + i + ' days end of day'); + assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days end of day'); } }); @@ -5503,11 +5514,11 @@ for (i = 2; i < 7; i++) { m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), 'Today - ' + i + ' days current time'); + assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days current time'); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), 'Today - ' + i + ' days beginning of day'); + assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days beginning of day'); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), 'Today - ' + i + ' days end of day'); + assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days end of day'); } }); @@ -5525,6 +5536,9 @@ assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); }); + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + test('weeks year starting sunday', function (assert) { assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); @@ -5587,11 +5601,11 @@ }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-мĕш', 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-мĕш', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-мĕш', 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-мĕш', 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-мĕш', 'Jan 9 2012 should be week 3'); + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-мӗш', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-мӗш', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-мӗш', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-мӗш', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-мӗш', 'Jan 9 2012 should be week 3'); }); test('lenient ordinal parsing', function (assert) { @@ -9261,15 +9275,15 @@ test('format', function (assert) { 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.'], + ['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'], + ['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'], + ['YYYY-MMM-DD', '2010-Feb-14'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], @@ -9278,13 +9292,13 @@ ['[the] DDDo [day of the year]', 'the 45º day of the year'], ['LTS', '15:25:50'], ['L', '14/02/2010'], - ['LL', '14 de febrero de 2010'], - ['LLL', '14 de febrero de 2010 15:25'], - ['LLLL', 'domingo, 14 de febrero de 2010 15:25'], + ['LL', '14 de Febrero de 2010'], + ['LLL', '14 de Febrero de 2010 15:25'], + ['LLLL', 'Domingo, 14 de Febrero de 2010 15:25'], ['l', '14/2/2010'], - ['ll', '14 de feb. de 2010'], - ['lll', '14 de feb. de 2010 15:25'], - ['llll', 'dom., 14 de feb. de 2010 15:25'] + ['ll', '14 de Feb. de 2010'], + ['lll', '14 de Feb. de 2010 15:25'], + ['llll', 'Dom., 14 de Feb. de 2010 15:25'] ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -9331,14 +9345,14 @@ }); test('format month', function (assert) { - 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; + 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++) { assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); } }); test('format week', function (assert) { - 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; + 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++) { assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); } @@ -13486,7 +13500,7 @@ localeModule('hr'); test('parse', function (assert) { - 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; + var tests = 'siječanj sij._veljača velj._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) { assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); } @@ -13507,7 +13521,7 @@ 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.'], + ['M Mo MM MMMM MMM', '2 2. 02 veljača velj.'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14. 14'], ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], @@ -13525,9 +13539,9 @@ ['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'] + ['ll', '14. velj. 2010'], + ['lll', '14. velj. 2010 15:25'], + ['llll', 'ned., 14. velj. 2010 15:25'] ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -13574,7 +13588,7 @@ }); test('format month', function (assert) { - 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; + var expected = 'siječanj sij._veljača velj._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++) { assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); } @@ -16029,6 +16043,340 @@ }); } + localeModule('jv'); + + + test('parse', function (assert) { + var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split('_'), i; + function equalTest(input, mmm, i) { + assert.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('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sonten'], + ['ddd, hA', 'Min, 3sonten'], + ['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', 'sonten sonten'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15.25.50'], + ['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++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Minggu Min Mg_Senen Sen Sn_Seloso Sel Sl_Rebu Reb Rb_Kemis Kem Km_Jemuwah Jem Jm_Septu Sep Sp'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'sawetawis detik', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'setunggal menit', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'setunggal menit', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 menit', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 menit', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'setunggal jam', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'setunggal jam', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sedinten', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sedinten', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dinten', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sedinten', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dinten', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dinten', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sewulan', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sewulan', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sewulan', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 wulan', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 wulan', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 wulan', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sewulan', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 wulan', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setaun', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 taun', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setaun', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 taun', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'wonten ing sawetawis detik', 'prefix'); + assert.equal(moment(0).from(30000), 'sawetawis detik ingkang kepengker', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'sawetawis detik ingkang kepengker', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'wonten ing sawetawis detik', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'wonten ing 5 dinten', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Dinten puniko pukul 02.00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Dinten puniko pukul 02.25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Dinten puniko pukul 03.00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Mbenjang pukul 02.00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Dinten puniko pukul 01.00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kala wingi pukul 02.00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + localeModule('ka'); test('parse', function (assert) { @@ -17809,11 +18157,11 @@ ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45. day of the year'], ['LTS', '15:25:50'], - ['L', '14.02.2010'], + ['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'], + ['l', '14.2.2010.'], ['ll', '2010. gada 14. feb'], ['lll', '2010. gada 14. feb, 15:25'], ['llll', '2010. gada 14. feb, Sv, 15:25'] @@ -17876,50 +18224,71 @@ } }); + // Includes testing the cases of withoutSuffix = true and false. test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'dažas sekundes', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minūti', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minūti', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minūtes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minūtes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'stundu', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'stundu', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 stundas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 stundas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 stunda', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dienu', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dienu', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienas', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dienu', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienas', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienas', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mēnesi', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mēnesi', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mēnesi', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mēneši', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mēneši', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mēneši', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mēnesi', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mēneši', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'gadu', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 gadi', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'gadu', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 gadi', '5 years = 5 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'dažas sekundes', '44 seconds = seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), false), 'pirms dažām sekundēm', '44 seconds with suffix = seconds ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minūte', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), false), 'pirms minūtes', '45 seconds with suffix = a minute ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minūte', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: -89}), false), 'pēc minūtes', '89 seconds with suffix/prefix = in a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minūtes', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), false), 'pirms 2 minūtēm', '90 seconds with suffix = 2 minutes ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minūtes', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), false), 'pirms 44 minūtēm', '44 minutes with suffix = 44 minutes ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'stunda', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), false), 'pirms stundas', '45 minutes with suffix = an hour ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'stunda', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 stundas', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: -90}), false), 'pēc 2 stundām', '90 minutes with suffix = in 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 stundas', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), false), 'pirms 5 stundām', '5 hours with suffix = 5 hours ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 stunda', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), false), 'pirms 21 stundas', '21 hours with suffix = 21 hours ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diena', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), false), 'pirms dienas', '22 hours with suffix = a day ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diena', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienas', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), false), 'pirms 2 dienām', '36 hours with suffix = 2 days ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diena', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienas', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), false), 'pirms 5 dienām', '5 days with suffix = 5 days ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienas', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), false), 'pirms 25 dienām', '25 days with suffix = 25 days ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mēnesis', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), false), 'pirms mēneša', '26 days with suffix = a month ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mēnesis', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mēnesis', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mēneši', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), false), 'pirms 2 mēnešiem', '46 days with suffix = 2 months ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mēneši', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mēneši', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), false), 'pirms 3 mēnešiem', '76 days with suffix = 3 months ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mēnesis', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mēneši', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), false), 'pirms 5 mēnešiem', '5 months with suffix = 5 months ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'gads', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), false), 'pirms gada', '345 days with suffix = a year ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 gadi', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), false), 'pirms 2 gadiem', '548 days with suffix = 2 years ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'gads', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 gadi', '5 years = 5 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), false), 'pirms 5 gadiem', '5 years with suffix = 5 years ago'); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dažas sekundes vēlāk', 'prefix'); - assert.equal(moment(0).from(30000), 'dažas sekundes agrāk', 'suffix'); + assert.equal(moment(30000).from(0), 'pēc dažām sekundēm', 'prefix'); + assert.equal(moment(0).from(30000), 'pirms dažām sekundēm', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'dažas sekundes agrāk', 'now from now should display as in the past'); + assert.equal(moment().fromNow(), 'pirms dažām sekundēm', 'now from now should display as in the past'); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dažas sekundes vēlāk', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 dienas vēlāk', 'in 5 days'); + assert.equal(moment().add({s: 30}).fromNow(), 'pēc dažām sekundēm', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'pēc 5 dienām', 'in 5 days'); }); test('calendar day', function (assert) { @@ -18127,6 +18496,399 @@ }); } + localeModule('me'); + + test('parse', function (assert) { + 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) { + assert.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('format', function (assert) { + 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'], + ['LTS', '15:25:50'], + ['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++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + 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++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + 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++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekoliko sekundi', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedan minut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedan minut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuta', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'za nekoliko sekundi', 'prefix'); + assert.equal(moment(0).from(30000), 'prije nekoliko sekundi', 'prefix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'prije nekoliko sekundi', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'za nekoliko sekundi', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'danas u 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'sjutra u 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'juče u 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + 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}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + var lastWeekDay = [ + '[prošle] [nedjelje] [u] LT', + '[prošlog] [ponedjeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srijede] [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}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + localeModule('mk'); test('parse', function (assert) { @@ -19728,7 +20490,7 @@ }); test('format week', function (assert) { - var expected = 'တနင်္ဂနွေ နွေ နွေ_တနင်္လာ လာ လာ_အင်္ဂါ င်္ဂါ င်္ဂါ_ဗုဒ္ဓဟူး ဟူး ဟူး_ကြာသပတေး ကြာ ကြာ_သောကြာ သော သော_စနေ နေ နေ'.split('_'), + var expected = 'တနင်္ဂနွေ နွေ နွေ_တနင်္လာ လာ လာ_အင်္ဂါ ဂါ ဂါ_ဗုဒ္ဓဟူး ဟူး ဟူး_ကြာသပတေး ကြာ ကြာ_သောကြာ သော သော_စနေ နေ နေ'.split('_'), i; for (i = 0; i < expected.length; i++) { @@ -21526,7 +22288,7 @@ localeModule('pl'); test('parse', function (assert) { - 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; + var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i; function equalTest(input, mmm, i) { assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); } @@ -21534,12 +22296,35 @@ tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][2], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][2], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('parse strict', function (assert) { + var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm, true).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMMM', i); equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][2], 'MMM', i); equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleLowerCase(), 'MMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleUpperCase(), 'MMM', i); } }); @@ -21923,12 +22708,12 @@ test('format', function (assert) { 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'], + ['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'], + ['d do dddd ddd', '0 0º Domingo Dom'], ['DDD DDDo DDDD', '45 45º 045'], ['w wo ww', '8 8º 08'], ['h hh', '3 03'], @@ -21939,13 +22724,13 @@ ['[the] DDDo [day of the year]', 'the 45º day of the year'], ['LTS', '15:25:50'], ['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'], + ['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'] + ['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; @@ -21992,14 +22777,14 @@ }); test('format month', function (assert) { - 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; + 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++) { assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); } }); test('format week', function (assert) { - 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; + 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++) { assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]); } @@ -22274,12 +23059,12 @@ test('format', function (assert) { 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'], + ['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'], + ['d do dddd ddd', '0 0º Domingo Dom'], ['DDD DDDo DDDD', '45 45º 045'], ['w wo ww', '6 6º 06'], ['h hh', '3 03'], @@ -22290,13 +23075,13 @@ ['[the] DDDo [day of the year]', 'the 45º day of the year'], ['LTS', '15:25:50'], ['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'], + ['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'] + ['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; @@ -22343,14 +23128,14 @@ }); test('format month', function (assert) { - 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; + 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++) { assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); } }); test('format week', function (assert) { - 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; + 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++) { assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); } @@ -23430,6 +24215,295 @@ }); } + localeModule('si'); + + /*jshint -W100*/ + test('parse', function (assert) { + var tests = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split('_'), i; + function equalTest(input, mmm, i) { + assert.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('format', function (assert) { + var a = [ + ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], + ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 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'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'ප.ව. පස් වරු'], + ['[වසරේ] DDDo [දිනය]', 'වසරේ 45 වැනි දිනය'], + ['LTS', 'ප.ව. 3:25:50'], + ['LT', 'ප.ව. 3:25'], + ['L', '2010/02/14'], + ['LL', '2010 පෙබරවාරි 14'], + ['LLL', '2010 පෙබරවාරි 14, ප.ව. 3:25'], + ['LLLL', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], + ['l', '2010/2/14'], + ['ll', '2010 පෙබ 14'], + ['lll', '2010 පෙබ 14, ප.ව. 3:25'], + ['llll', '2010 පෙබ 14 වැනි ඉරි, ප.ව. 3:25:50'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1 වැනි', '1 වැනි'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2 වැනි', '2 වැනි'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3 වැනි', '3 වැනි'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4 වැනි', '4 වැනි'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5 වැනි', '5 වැනි'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6 වැනි', '6 වැනි'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7 වැනි', '7 වැනි'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8 වැනි', '8 වැනි'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9 වැනි', '9 වැනි'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10 වැනි', '10 වැනි'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11 වැනි', '11 වැනි'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12 වැනි', '12 වැනි'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13 වැනි', '13 වැනි'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14 වැනි', '14 වැනි'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15 වැනි', '15 වැනි'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16 වැනි', '16 වැනි'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17 වැනි', '17 වැනි'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18 වැනි', '18 වැනි'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19 වැනි', '19 වැනි'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20 වැනි', '20 වැනි'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21 වැනි', '21 වැනි'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22 වැනි', '22 වැනි'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23 වැනි', '23 වැනි'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24 වැනි', '24 වැනි'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25 වැනි', '25 වැනි'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26 වැනි', '26 වැනි'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27 වැනි', '27 වැනි'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28 වැනි', '28 වැනි'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29 වැනි', '29 වැනි'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30 වැනි', '30 වැනි'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31 වැනි', '31 වැනි'); + }); + + test('format month', function (assert) { + var expected = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'ඉරිදා ඉරි ඉ_සඳුදා සඳු ස_අඟහරුවාදා අඟ අ_බදාදා බදා බ_බ්රහස්පතින්දා බ්රහ බ්ර_සිකුරාදා සිකු සි_සෙනසුරාදා සෙන සෙ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'තත්පර කිහිපය', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'මිනිත්තුව', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'මිනිත්තුව', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'මිනිත්තු 2', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'මිනිත්තු 44', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'පැය', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'පැය', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'පැය 2', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'පැය 5', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'පැය 21', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'දිනය', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'දිනය', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'දින 2', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'දිනය', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'දින 5', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'දින 25', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'මාසය', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'මාසය', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'මාසය', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'මාස 2', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'මාස 2', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'මාස 3', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'මාසය', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'මාස 5', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'වසර', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'වසර 2', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'වසර', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'වසර 5', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'තත්පර කිහිපයකින්', 'prefix'); + assert.equal(moment(0).from(30000), 'තත්පර කිහිපයකට පෙර', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'තත්පර කිහිපයකට පෙර', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'තත්පර කිහිපයකින්', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'දින 5කින්', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'අද පෙ.ව. 2:00ට', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'අද පෙ.ව. 2:25ට', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'අද පෙ.ව. 3:00ට', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'හෙට පෙ.ව. 2:00ට', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'අද පෙ.ව. 1:00ට', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ඊයේ පෙ.ව. 2:00ට', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + localeModule('sk'); test('parse', function (assert) { @@ -24007,20 +25081,110 @@ assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 leti', '548 days = 2 years'); assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', '1 year = a year'); assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years = 5 years'); + + assert.equal(start.from(moment([2007, 1, 28]).add({m: 1}), true), 'ena minuta', 'a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 2}), true), '2 minuti', '2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 3}), true), '3 minute', '3 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 4}), true), '4 minute', '4 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 5}), true), '5 minut', '5 minutes'); + + assert.equal(start.from(moment([2007, 1, 28]).add({h: 1}), true), 'ena ura', 'an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 2}), true), '2 uri', '2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 3}), true), '3 ure', '3 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 4}), true), '4 ure', '4 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ur', '5 hours'); + + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dan', 'a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 2}), true), '2 dni', '2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 3}), true), '3 dni', '3 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 4}), true), '4 dni', '4 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days'); + + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en mesec', 'a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 2}), true), '2 meseca', '2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 3}), true), '3 mesece', '3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 4}), true), '4 mesece', '4 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesecev', '5 months'); + + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', 'a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), '2 leti', '2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), '3 leta', '3 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), '4 leta', '4 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years'); }); test('suffix', function (assert) { assert.equal(moment(30000).from(0), 'čez nekaj sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'nekaj sekund nazaj', 'suffix'); + assert.equal(moment(0).from(30000), 'pred nekaj sekundami', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'nekaj sekund nazaj', 'now from now should display as in the past'); + assert.equal(moment().fromNow(), 'pred nekaj sekundami', 'now from now should display as in the past'); }); - test('fromNow', function (assert) { + test('fromNow (future)', function (assert) { assert.equal(moment().add({s: 30}).fromNow(), 'čez nekaj sekund', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'čez 5 dni', 'in 5 days'); + assert.equal(moment().add({m: 1}).fromNow(), 'čez eno minuto', 'in a minute'); + assert.equal(moment().add({m: 2}).fromNow(), 'čez 2 minuti', 'in 2 minutes'); + assert.equal(moment().add({m: 3}).fromNow(), 'čez 3 minute', 'in 3 minutes'); + assert.equal(moment().add({m: 4}).fromNow(), 'čez 4 minute', 'in 4 minutes'); + assert.equal(moment().add({m: 5}).fromNow(), 'čez 5 minut', 'in 5 minutes'); + + assert.equal(moment().add({h: 1}).fromNow(), 'čez eno uro', 'in an hour'); + assert.equal(moment().add({h: 2}).fromNow(), 'čez 2 uri', 'in 2 hours'); + assert.equal(moment().add({h: 3}).fromNow(), 'čez 3 ure', 'in 3 hours'); + assert.equal(moment().add({h: 4}).fromNow(), 'čez 4 ure', 'in 4 hours'); + assert.equal(moment().add({h: 5}).fromNow(), 'čez 5 ur', 'in 5 hours'); + + assert.equal(moment().add({d: 1}).fromNow(), 'čez en dan', 'in a day'); + assert.equal(moment().add({d: 2}).fromNow(), 'čez 2 dni', 'in 2 days'); + assert.equal(moment().add({d: 3}).fromNow(), 'čez 3 dni', 'in 3 days'); + assert.equal(moment().add({d: 4}).fromNow(), 'čez 4 dni', 'in 4 days'); + assert.equal(moment().add({d: 5}).fromNow(), 'čez 5 dni', 'in 5 days'); + + assert.equal(moment().add({M: 1}).fromNow(), 'čez en mesec', 'in a month'); + assert.equal(moment().add({M: 2}).fromNow(), 'čez 2 meseca', 'in 2 months'); + assert.equal(moment().add({M: 3}).fromNow(), 'čez 3 mesece', 'in 3 months'); + assert.equal(moment().add({M: 4}).fromNow(), 'čez 4 mesece', 'in 4 months'); + assert.equal(moment().add({M: 5}).fromNow(), 'čez 5 mesecev', 'in 5 months'); + + assert.equal(moment().add({y: 1}).fromNow(), 'čez eno leto', 'in a year'); + assert.equal(moment().add({y: 2}).fromNow(), 'čez 2 leti', 'in 2 years'); + assert.equal(moment().add({y: 3}).fromNow(), 'čez 3 leta', 'in 3 years'); + assert.equal(moment().add({y: 4}).fromNow(), 'čez 4 leta', 'in 4 years'); + assert.equal(moment().add({y: 5}).fromNow(), 'čez 5 let', 'in 5 years'); + + assert.equal(moment().subtract({s: 30}).fromNow(), 'pred nekaj sekundami', 'a few seconds ago'); + + assert.equal(moment().subtract({m: 1}).fromNow(), 'pred eno minuto', 'a minute ago'); + assert.equal(moment().subtract({m: 2}).fromNow(), 'pred 2 minutama', '2 minutes ago'); + assert.equal(moment().subtract({m: 3}).fromNow(), 'pred 3 minutami', '3 minutes ago'); + assert.equal(moment().subtract({m: 4}).fromNow(), 'pred 4 minutami', '4 minutes ago'); + assert.equal(moment().subtract({m: 5}).fromNow(), 'pred 5 minutami', '5 minutes ago'); + + assert.equal(moment().subtract({h: 1}).fromNow(), 'pred eno uro', 'an hour ago'); + assert.equal(moment().subtract({h: 2}).fromNow(), 'pred 2 urama', '2 hours ago'); + assert.equal(moment().subtract({h: 3}).fromNow(), 'pred 3 urami', '3 hours ago'); + assert.equal(moment().subtract({h: 4}).fromNow(), 'pred 4 urami', '4 hours ago'); + assert.equal(moment().subtract({h: 5}).fromNow(), 'pred 5 urami', '5 hours ago'); + + assert.equal(moment().subtract({d: 1}).fromNow(), 'pred enim dnem', 'a day ago'); + assert.equal(moment().subtract({d: 2}).fromNow(), 'pred 2 dnevoma', '2 days ago'); + assert.equal(moment().subtract({d: 3}).fromNow(), 'pred 3 dnevi', '3 days ago'); + assert.equal(moment().subtract({d: 4}).fromNow(), 'pred 4 dnevi', '4 days ago'); + assert.equal(moment().subtract({d: 5}).fromNow(), 'pred 5 dnevi', '5 days ago'); + + assert.equal(moment().subtract({M: 1}).fromNow(), 'pred enim mesecem', 'a month ago'); + assert.equal(moment().subtract({M: 2}).fromNow(), 'pred 2 mesecema', '2 months ago'); + assert.equal(moment().subtract({M: 3}).fromNow(), 'pred 3 meseci', '3 months ago'); + assert.equal(moment().subtract({M: 4}).fromNow(), 'pred 4 meseci', '4 months ago'); + assert.equal(moment().subtract({M: 5}).fromNow(), 'pred 5 meseci', '5 months ago'); + + assert.equal(moment().subtract({y: 1}).fromNow(), 'pred enim letom', 'a year ago'); + assert.equal(moment().subtract({y: 2}).fromNow(), 'pred 2 letoma', '2 years ago'); + assert.equal(moment().subtract({y: 3}).fromNow(), 'pred 3 leti', '3 years ago'); + assert.equal(moment().subtract({y: 4}).fromNow(), 'pred 4 leti', '4 years ago'); + assert.equal(moment().subtract({y: 5}).fromNow(), 'pred 5 leti', '5 years ago'); }); test('calendar day', function (assert) { @@ -24069,9 +25233,11 @@ function makeFormat(d) { switch (d.day()) { case 0: + return '[prejšnjo] [nedeljo] [ob] LT'; case 3: + return '[prejšnjo] [sredo] [ob] LT'; case 6: - return '[prejšnja] dddd [ob] LT'; + return '[prejšnjo] [soboto] [ob] LT'; case 1: case 2: case 4: @@ -25517,7 +26683,7 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'några sekunder', '44 sekunder = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'några sekunder', '44 seconds = a few seconds'); assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'en minut', '45 seconds = a minute'); assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'en minut', '89 seconds = a minute'); assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuter', '90 seconds = 2 minutes'); @@ -25576,11 +26742,11 @@ var i, m; for (i = 2; i < 7; i++) { m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days current time'); + assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days current time'); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days beginning of day'); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days end of day'); + assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days end of day'); } }); @@ -25588,11 +26754,11 @@ var i, m; for (i = 2; i < 7; i++) { m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), 'Today - ' + i + ' days current time'); + assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days current time'); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days beginning of day'); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), 'Today - ' + i + ' days end of day'); + assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days end of day'); } }); @@ -29031,12 +30197,12 @@ ['LTS', '下午3点25分50秒'], ['L', '2010-02-14'], ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日下午3点25'], - ['LLLL', '2010年2月14日星期日下午3点25'], + ['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'] + ['lll', '2010年2月14日下午3点25分'], + ['llll', '2010年2月14日星期日下午3点25分'] ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -29065,33 +30231,33 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '几秒', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1分钟', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1分钟', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2分钟', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44分钟', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1小时', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1小时', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2小时', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5小时', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21小时', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1天', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1天', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2天', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1天', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5天', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25天', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1个月', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1个月', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1个月', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2个月', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2个月', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3个月', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1个月', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5个月', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1年', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2年', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1年', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5年', '5 years = 5 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 分钟', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 分钟', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 分钟', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 分钟', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 小时', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 小时', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 小时', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 小时', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 小时', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 天', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 天', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 天', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 天', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 天', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 天', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 个月', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 个月', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 个月', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 个月', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 个月', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 个月', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 个月', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 个月', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 年', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 年', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 年', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 年', '5 years = 5 years'); }); test('suffix', function (assert) { @@ -29105,14 +30271,14 @@ test('fromNow', function (assert) { assert.equal(moment().add({s: 30}).fromNow(), '几秒内', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5天内', 'in 5 days'); + assert.equal(moment().add({d: 5}).fromNow(), '5 天内', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(2).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), '今天凌晨2点整', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), '今天凌晨2点25', 'Now plus 25 min'); + assert.equal(moment(a).calendar(), '今天凌晨2点整', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), '今天凌晨2点25分', 'Now plus 25 min'); assert.equal(moment(a).add({h: 1}).calendar(), '今天凌晨3点整', 'Now plus 1 hour'); assert.equal(moment(a).add({d: 1}).calendar(), '明天凌晨2点整', 'tomorrow at the same time'); assert.equal(moment(a).subtract({h: 1}).calendar(), '今天凌晨1点整', 'Now minus 1 hour'); @@ -29383,12 +30549,12 @@ ['LTS', '下午3點25分50秒'], ['L', '2010年2月14日'], ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日下午3點25'], - ['LLLL', '2010年2月14日星期日下午3點25'], + ['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'] + ['lll', '2010年2月14日下午3點25分'], + ['llll', '2010年2月14日星期日下午3點25分'] ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -29463,12 +30629,12 @@ test('calendar day', function (assert) { var a = moment().hours(2).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), '今天早上2點00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), '今天早上2點25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), '今天早上3點00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '明天早上2點00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), '今天早上1點00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), '昨天早上2點00', 'yesterday at the same time'); + assert.equal(moment(a).calendar(), '今天早上2點00分', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), '今天早上2點25分', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), '今天早上3點00分', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), '明天早上2點00分', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), '今天早上1點00分', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), '昨天早上2點00分', 'yesterday at the same time'); }); test('calendar next week', function (assert) { @@ -32434,6 +33600,107 @@ }); } + module('from_to'); + + test('from', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal(start.from(start.clone().add(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago'); + assert.equal(start.from(start.clone().add(1, 'minute')), 'a minute ago', '1 minute = a minute ago'); + assert.equal(start.from(start.clone().add(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago'); + + assert.equal(start.from(start.clone().subtract(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds'); + assert.equal(start.from(start.clone().subtract(1, 'minute')), 'in a minute', '1 minute = in a minute'); + assert.equal(start.from(start.clone().subtract(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes'); + }); + + test('from with absolute duration', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal(start.from(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); + assert.equal(start.from(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute'); + assert.equal(start.from(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + + assert.equal(start.from(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); + assert.equal(start.from(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute'); + assert.equal(start.from(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + }); + + test('to', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal(start.to(start.clone().subtract(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago'); + assert.equal(start.to(start.clone().subtract(1, 'minute')), 'a minute ago', '1 minute = a minute ago'); + assert.equal(start.to(start.clone().subtract(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago'); + + assert.equal(start.to(start.clone().add(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds'); + assert.equal(start.to(start.clone().add(1, 'minute')), 'in a minute', '1 minute = in a minute'); + assert.equal(start.to(start.clone().add(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes'); + }); + + test('to with absolute duration', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal(start.to(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); + assert.equal(start.to(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute'); + assert.equal(start.to(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + + assert.equal(start.to(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); + assert.equal(start.to(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute'); + assert.equal(start.to(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + module('getters and setters'); test('getters', function (assert) { @@ -34096,6 +35363,13 @@ assert.ok(moment('3:25', ['h:mma', 'hh:mma', 'H:mm', 'HH:mm']).isValid()); }); + test('0 hour is invalid in strict', function (assert) { + assert.equal(moment('00:01', 'hh:mm', true).isValid(), false, '00 hour is invalid in strict'); + assert.equal(moment('00:01', 'hh:mm').isValid(), true, '00 hour is valid in normal'); + assert.equal(moment('0:01', 'h:mm', true).isValid(), false, '0 hour is invalid in strict'); + assert.equal(moment('0:01', 'h:mm').isValid(), true, '0 hour is valid in normal'); + }); + })); (function (global, factory) { @@ -34478,7 +35752,7 @@ assert.equal(moment.localeData().months(jan), 'January', 'no arguments returns global'); assert.equal(moment.localeData('zh-cn').months(jan), '一月', 'a string returns the locale based on key'); - assert.equal(moment.localeData(moment().locale('es')).months(jan), 'enero', 'if you pass in a moment it uses the moment\'s locale'); + assert.equal(moment.localeData(moment().locale('es')).months(jan), 'Enero', 'if you pass in a moment it uses the moment\'s locale'); }); test('library deprecations', function (assert) { @@ -34512,7 +35786,7 @@ moment.locale('en'); assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Normally default to global'); - assert.equal(moment([2012, 5, 6]).locale('es').format('MMMM'), 'junio', 'Use the instance specific locale'); + assert.equal(moment([2012, 5, 6]).locale('es').format('MMMM'), 'Junio', 'Use the instance specific locale'); assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Using an instance specific locale does not affect other moments'); }); @@ -34536,9 +35810,9 @@ test('instance locale persists with manipulation', function (assert) { moment.locale('en'); - assert.equal(moment([2012, 5, 6]).locale('es').add({days: 1}).format('MMMM'), 'junio', 'With addition'); - assert.equal(moment([2012, 5, 6]).locale('es').day(0).format('MMMM'), 'junio', 'With day getter'); - assert.equal(moment([2012, 5, 6]).locale('es').endOf('day').format('MMMM'), 'junio', 'With endOf'); + assert.equal(moment([2012, 5, 6]).locale('es').add({days: 1}).format('MMMM'), 'Junio', 'With addition'); + assert.equal(moment([2012, 5, 6]).locale('es').day(0).format('MMMM'), 'Junio', 'With day getter'); + assert.equal(moment([2012, 5, 6]).locale('es').endOf('day').format('MMMM'), 'Junio', 'With endOf'); }); test('instance locale persists with cloning', function (assert) { @@ -34548,8 +35822,8 @@ b = a.clone(), c = moment(a); - assert.equal(b.format('MMMM'), 'junio', 'using moment.fn.clone()'); - assert.equal(b.format('MMMM'), 'junio', 'using moment()'); + assert.equal(b.format('MMMM'), 'Junio', 'using moment.fn.clone()'); + assert.equal(b.format('MMMM'), 'Junio', 'using moment()'); }); test('duration locale method', function (assert) { @@ -34579,6 +35853,11 @@ assert.equal(moment.duration().lang(), moment.duration().localeData(), 'duration.lang is the same as duration.localeData'); }); + test('from and fromNow with invalid date', function (assert) { + assert.equal(moment(NaN).from(), 'Invalid date', 'moment.from with invalid moment'); + assert.equal(moment(NaN).fromNow(), 'Invalid date', 'moment.fromNow with invalid moment'); + }); + test('from relative time future', function (assert) { var start = moment([2007, 1, 28]); @@ -35566,7 +36845,7 @@ module('relative time'); - test('default thresholds', function (assert) { + test('default thresholds fromNow', function (assert) { var a = moment(); // Seconds to minutes threshold @@ -35604,6 +36883,44 @@ assert.equal(a.fromNow(), 'a year ago', 'Above default days to years threshold'); }); + test('default thresholds toNow', function (assert) { + var a = moment(); + + // Seconds to minutes threshold + a.subtract(44, 'seconds'); + assert.equal(a.toNow(), 'in a few seconds', 'Below default seconds to minutes threshold'); + a.subtract(1, 'seconds'); + assert.equal(a.toNow(), 'in a minute', 'Above default seconds to minutes threshold'); + + // Minutes to hours threshold + a = moment(); + a.subtract(44, 'minutes'); + assert.equal(a.toNow(), 'in 44 minutes', 'Below default minute to hour threshold'); + a.subtract(1, 'minutes'); + assert.equal(a.toNow(), 'in an hour', 'Above default minute to hour threshold'); + + // Hours to days threshold + a = moment(); + a.subtract(21, 'hours'); + assert.equal(a.toNow(), 'in 21 hours', 'Below default hours to day threshold'); + a.subtract(1, 'hours'); + assert.equal(a.toNow(), 'in a day', 'Above default hours to day threshold'); + + // Days to month threshold + a = moment(); + a.subtract(25, 'days'); + assert.equal(a.toNow(), 'in 25 days', 'Below default days to month (singular) threshold'); + a.subtract(1, 'days'); + assert.equal(a.toNow(), 'in a month', 'Above default days to month (singular) threshold'); + + // months to year threshold + a = moment(); + a.subtract(10, 'months'); + assert.equal(a.toNow(), 'in 10 months', 'Below default days to years threshold'); + a.subtract(1, 'month'); + assert.equal(a.toNow(), 'in a year', 'Above default days to years threshold'); + }); + test('custom thresholds', function (assert) { // Seconds to minutes threshold moment.relativeTimeThreshold('s', 55); |
