diff --git a/.travis.yml b/.travis.yml index a3ebef8f51..8c4322bfa4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,10 @@ language: node_js node_js: - "node" - - "0.12" + - "7" + - "6" + - "5" + - "4" sudo: false env: diff --git a/package.json b/package.json index f968d715ea..dd62dc5b79 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "ender" ], "main": "./moment.js", - "jsnext:main": "./src/moment.js", + "module": "./src/moment.js", "typings": "./moment.d.ts", "engines": { "node": "*" diff --git a/src/lib/moment/diff.js b/src/lib/moment/diff.js index 9f43908189..85254dfc69 100644 --- a/src/lib/moment/diff.js +++ b/src/lib/moment/diff.js @@ -21,22 +21,18 @@ export function diff (input, units, asFloat) { units = normalizeUnits(units); - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - delta = this - that; - output = units === 'second' ? delta / 1e3 : // 1000 - units === 'minute' ? delta / 6e4 : // 1000 * 60 - units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - delta; + switch (units) { + case 'year': output = monthDiff(this, that) / 12; break; + case 'month': output = monthDiff(this, that); break; + case 'quarter': output = monthDiff(this, that) / 3; break; + case 'second': output = (this - that) / 1e3; break; // 1000 + case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 + case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 + case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst + case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst + default: output = this - that; } + return asFloat ? output : absFloor(output); } diff --git a/src/lib/moment/get-set.js b/src/lib/moment/get-set.js index 0d9fe5dfef..d583b36d34 100644 --- a/src/lib/moment/get-set.js +++ b/src/lib/moment/get-set.js @@ -3,7 +3,6 @@ import { getPrioritizedUnits } from '../units/priorities'; import { hooks } from '../utils/hooks'; import isFunction from '../utils/is-function'; - export function makeGetSet (unit, keepTime) { return function (value) { if (value != null) { @@ -22,7 +21,7 @@ export function get (mom, unit) { } export function set (mom, unit, value) { - if (mom.isValid()) { + if (mom.isValid() && !isNaN(value)) { mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } } diff --git a/src/lib/utils/is-numeric.js b/src/lib/utils/is-numeric.js new file mode 100644 index 0000000000..64a5822dc6 --- /dev/null +++ b/src/lib/utils/is-numeric.js @@ -0,0 +1,6 @@ +export default function isNumeric(val) { + var _val = +val; + return (val !== val + 1) && //infinity check + (_val === +val) && //Cute coercion check + (typeof val !== 'object'); //Array/object check +} diff --git a/src/locale/bm.js b/src/locale/bm.js new file mode 100644 index 0000000000..cac1731b0f --- /dev/null +++ b/src/locale/bm.js @@ -0,0 +1,49 @@ +//! moment.js locale configuration +//! locale : Bambara [bm] +//! author : Estelle Comment : https://github.com/estellecomment +// Language contact person : Abdoufata Kane : https://github.com/abdoufata + +import moment from '../moment'; + +export default moment.defineLocale('bm', { + months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'), + monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), + weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), + weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'), + weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'MMMM [tile] D [san] YYYY', + LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', + LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm' + }, + calendar : { + sameDay : '[Bi lɛrɛ] LT', + nextDay : '[Sini lɛrɛ] LT', + nextWeek : 'dddd [don lɛrɛ] LT', + lastDay : '[Kunu lɛrɛ] LT', + lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s kɔnɔ', + past : 'a bɛ %s bɔ', + s : 'sanga dama dama', + m : 'miniti kelen', + mm : 'miniti %d', + h : 'lɛrɛ kelen', + hh : 'lɛrɛ %d', + d : 'tile kelen', + dd : 'tile %d', + M : 'kalo kelen', + MM : 'kalo %d', + y : 'san kelen', + yy : 'san %d' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); diff --git a/src/locale/da.js b/src/locale/da.js index 7e601e2faa..8ea7f194bd 100644 --- a/src/locale/da.js +++ b/src/locale/da.js @@ -13,7 +13,7 @@ export default moment.defineLocale('da', { longDateFormat : { LT : 'HH:mm', LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', + L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', LLL : 'D. MMMM YYYY HH:mm', LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm' diff --git a/src/locale/el.js b/src/locale/el.js index facd7f6a2a..6648da0f8c 100644 --- a/src/locale/el.js +++ b/src/locale/el.js @@ -11,7 +11,7 @@ export default moment.defineLocale('el', { months : function (momentToFormat, format) { if (!momentToFormat) { return this._monthsNominativeEl; - } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' return this._monthsGenitiveEl[momentToFormat.month()]; } else { return this._monthsNominativeEl[momentToFormat.month()]; diff --git a/src/locale/gu-IN.js b/src/locale/gu-IN.js new file mode 100644 index 0000000000..49c374bdeb --- /dev/null +++ b/src/locale/gu-IN.js @@ -0,0 +1,113 @@ +//! moment.js locale configuration +//! locale : gujarati (gu-IN) +//! author : Kaushik Thanki : https://github.com/Kaushik1987 +import moment from '../moment'; + +var symbolMap = { + '1': '૧', + '2': '૨', + '3': '૩', + '4': '૪', + '5': '૫', + '6': '૬', + '7': '૭', + '8': '૮', + '9': '૯', + '0': '૦' + }, + numberMap = { + '૧': '1', + '૨': '2', + '૩': '3', + '૪': '4', + '૫': '5', + '૬': '6', + '૭': '7', + '૮': '8', + '૯': '9', + '૦': '0' + }; + +export default moment.defineLocale('gu-IN', { + months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'), + monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'), + monthsParseExact: true, + weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'), + weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), + weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), + longDateFormat: { + LT: 'A h:mm વાગ્યે', + LTS: 'A h:mm:ss વાગ્યે', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY, A h:mm વાગ્યે', + LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે' + }, + calendar: { + sameDay: '[આજ] LT', + nextDay: '[કાલે] LT', + nextWeek: 'dddd, LT', + lastDay: '[ગઇકાલે] LT', + lastWeek: '[પાછલા] dddd, LT', + sameElse: 'L' + }, + relativeTime: { + future: '%s મા', + past: '%s પેહલા', + s: 'અમુક પળો', + m: 'એક મિનિટ', + mm: '%d મિનિટ', + h: 'એક કલાક', + hh: '%d કલાક', + d: 'એક દિવસ', + dd: '%d દિવસ', + M: 'એક મહિનો', + MM: '%d મહિનો', + y: 'એક વર્ષ', + yy: '%d વર્ષ' + }, + preparse: function (string) { + return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Gujarati notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati. + meridiemParse: /રાત|બપોર|સવાર|સાંજ/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'રાત') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'સવાર') { + return hour; + } else if (meridiem === 'બપોર') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'સાંજ') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'રાત'; + } else if (hour < 10) { + return 'સવાર'; + } else if (hour < 17) { + return 'બપોર'; + } else if (hour < 20) { + return 'સાંજ'; + } else { + return 'રાત'; + } + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6 // The week that contains Jan 1st is the first week of the year. + } +}); diff --git a/src/locale/nl-be.js b/src/locale/nl-be.js index 1e4a089edb..801134a1c3 100644 --- a/src/locale/nl-be.js +++ b/src/locale/nl-be.js @@ -34,7 +34,7 @@ export default moment.defineLocale('nl-be', { weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'), weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', diff --git a/src/locale/nl.js b/src/locale/nl.js index 816fd5ab2d..a551d46c01 100644 --- a/src/locale/nl.js +++ b/src/locale/nl.js @@ -34,7 +34,7 @@ export default moment.defineLocale('nl', { weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'), weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', diff --git a/src/test/locale/bm.js b/src/test/locale/bm.js new file mode 100644 index 0000000000..5a633dde5b --- /dev/null +++ b/src/test/locale/bm.js @@ -0,0 +1,180 @@ +import {localeModule, test} from '../qunit'; +import moment from '../../moment'; +localeModule('bm'); + +test('parse', function (assert) { + var i, + tests = 'Zanwuyekalo Zan_Fewuruyekalo Few_Marisikalo Mar_Awirilikalo Awi_Mɛkalo Mɛ_Zuwɛnkalo Zuw_Zuluyekalo Zul_Utikalo Uti_Sɛtanburukalo Sɛt_ɔkutɔburukalo ɔku_Nowanburukalo Now_Desanburukalo Des'.split('_'); + + 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', 'Kari, Fewuruyekalo 14 2010, 3:25:50 pm'], + ['ddd, hA', 'Kar, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 Fewuruyekalo Few'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Kari Kar Ka'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[le] Do [jour du mois]', 'le 14 jour du mois'], + ['[le] DDDo [jour de l’année]', 'le 45 jour de l’année'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', 'Fewuruyekalo tile 14 san 2010'], + ['LLL', 'Fewuruyekalo tile 14 san 2010 lɛrɛ 15:25'], + ['LLLL', 'Kari Fewuruyekalo tile 14 san 2010 lɛrɛ 15:25'], + ['l', '14/2/2010'], + ['ll', 'Few tile 14 san 2010'], + ['lll', 'Few tile 14 san 2010 lɛrɛ 15:25'], + ['llll', 'Kar Few tile 14 san 2010 lɛrɛ 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 i, + expected = 'Zanwuyekalo Zan_Fewuruyekalo Few_Marisikalo Mar_Awirilikalo Awi_Mɛkalo Mɛ_Zuwɛnkalo Zuw_Zuluyekalo Zul_Utikalo Uti_Sɛtanburukalo Sɛt_ɔkutɔburukalo ɔku_Nowanburukalo Now_Desanburukalo Des'.split('_'); + + 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 i, + expected = 'Kari Kar Ka_Ntɛnɛn Ntɛ Nt_Tarata Tar Ta_Araba Ara Ar_Alamisa Ala Al_Juma Jum Ju_Sibiri Sib Si'.split('_'); + + 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), 'sanga dama dama', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'miniti kelen', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'miniti kelen', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'miniti 2', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'miniti 44', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'lɛrɛ kelen', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'lɛrɛ kelen', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'lɛrɛ 2', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'lɛrɛ 5', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'lɛrɛ 21', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'tile kelen', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'tile kelen', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'tile 2', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'tile kelen', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'tile 5', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'tile 25', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'kalo kelen', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'kalo kelen', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'kalo kelen', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'kalo 2', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'kalo 2', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'kalo 3', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'kalo kelen', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'kalo 5', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'san kelen', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'san 2', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'san kelen', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'san 5', '5 years = 5 years'); +}); + +test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'sanga dama dama kɔnɔ', 'prefix'); + assert.equal(moment(0).from(30000), 'a bɛ sanga dama dama bɔ', 'suffix'); +}); + +test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'sanga dama dama kɔnɔ', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'tile 5 kɔnɔ', 'in 5 days'); +}); + +test('same day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Bi lɛrɛ 12:00', 'Today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Bi lɛrɛ 12:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Bi lɛrɛ 13:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Sini lɛrɛ 12:00', 'Tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Bi lɛrɛ 11:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kunu lɛrɛ 12:00', 'Yesterday at the same time'); +}); + +test('same 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 [don lɛrɛ] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [don lɛrɛ] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [don lɛrɛ] LT'), 'Today + ' + i + ' days end of day'); + } +}); + +test('same 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 [tɛmɛnen lɛrɛ] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [tɛmɛnen lɛrɛ] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [tɛmɛnen lɛrɛ] LT'), 'Today - ' + i + ' days end of day'); + } +}); + +test('same 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('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); +}); + diff --git a/src/test/locale/da.js b/src/test/locale/da.js index 1b68b3ef59..fc4bbfa175 100644 --- a/src/test/locale/da.js +++ b/src/test/locale/da.js @@ -37,11 +37,11 @@ test('format', function (assert) { ['a A', 'pm PM'], ['[den] DDDo [dag på året]', 'den 45. dag på året'], ['LTS', '15:25:50'], - ['L', '14/02/2010'], + ['L', '14.02.2010'], ['LL', '14. februar 2010'], ['LLL', '14. februar 2010 15:25'], ['LLLL', 'søndag d. 14. februar 2010 kl. 15:25'], - ['l', '14/2/2010'], + ['l', '14.2.2010'], ['ll', '14. feb 2010'], ['lll', '14. feb 2010 15:25'], ['llll', 'søn d. 14. feb 2010 kl. 15:25'] diff --git a/src/test/locale/el.js b/src/test/locale/el.js index 738490dc37..0c55b2e780 100644 --- a/src/test/locale/el.js +++ b/src/test/locale/el.js @@ -258,3 +258,8 @@ test('weeks year starting sunday format', function (assert) { assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2η', 'Jan 15 2012 should be week 2'); }); +test('localeData months calls', function (assert) { + var jan = moment('2012-01-01'); + assert.equal(moment.localeData().months(jan), 'Ιανουάριος', 'should return the nominative month name'); + assert.equal(moment.localeData().months(jan, 'D MMMM'), 'Ιανουαρίου', 'should return the genitive month name'); +}); diff --git a/src/test/locale/gu-IN.js b/src/test/locale/gu-IN.js new file mode 100644 index 0000000000..ac78e80df7 --- /dev/null +++ b/src/test/locale/gu-IN.js @@ -0,0 +1,225 @@ +import {localeModule, test} from '../qunit'; +import moment from '../../moment'; +localeModule('gu-IN'); + +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 = [ + ['dddd, Do MMMM YYYY, a h:mm:ss વાગ્યે', 'રવિવાર, ૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫:૫૦ વાગ્યે'], + ['ddd, a h વાગ્યે', 'રવિ, બપોર ૩ વાગ્યે'], + ['M Mo MM MMMM MMM', '૨ ૨ ૦૨ ફેબ્રુઆરી ફેબ્રુ.'], + ['YYYY YY', '૨૦૧૦ ૧૦'], + ['D Do DD', '૧૪ ૧૪ ૧૪'], + ['d do dddd ddd dd', '૦ ૦ રવિવાર રવિ ર'], + ['DDD DDDo DDDD', '૪૫ ૪૫ ૦૪૫'], + ['w wo ww', '૮ ૮ ૦૮'], + ['h hh', '૩ ૦૩'], + ['H HH', '૧૫ ૧૫'], + ['m mm', '૨૫ ૨૫'], + ['s ss', '૫૦ ૫૦'], + ['a A', 'બપોર બપોર'], + ['LTS', 'બપોર ૩:૨૫:૫૦ વાગ્યે'], + ['L', '૧૪/૦૨/૨૦૧૦'], + ['LL', '૧૪ ફેબ્રુઆરી ૨૦૧૦'], + ['LLL', '૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['LLLL', 'રવિવાર, ૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['l', '૧૪/૨/૨૦૧૦'], + ['ll', '૧૪ ફેબ્રુ. ૨૦૧૦'], + ['lll', '૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['llll', 'રવિ, ૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + 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'), '૧', '૧'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '૨', '૨'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '૩', '૩'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '૪', '૪'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '૫', '૫'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '૬', '૬'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '૭', '૭'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '૮', '૮'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '૯', '૯'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '૧૦', '૧૦'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '૧૧', '૧૧'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '૧૨', '૧૨'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '૧૩', '૧૩'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '૧૪', '૧૪'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '૧૫', '૧૫'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '૧૬', '૧૬'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '૧૭', '૧૭'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '૧૮', '૧૮'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '૧૯', '૧૯'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '૨૦', '૨૦'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '૨૧', '૨૧'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '૨૨', '૨૨'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '૨૩', '૨૩'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '૨૪', '૨૪'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '૨૫', '૨૫'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '૨૬', '૨૬'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '૨૭', '૨૭'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '૨૮', '૨૮'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '૨૯', '૨૯'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '૩૦', '૩૦'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '૩૧', '૩૧'); +}); + +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), '૨ મિનિટ', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '૪૪ મિનિટ', '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), '૨ કલાક', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '૫ કલાક', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '૨૧ કલાક', '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), '૨ દિવસ', '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 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '૨૫ દિવસ', '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), '૨ મહિનો', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '૨ મહિનો', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '૩ મહિનો', '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 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), '૨ વર્ષ', '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 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(), 'અમુક પળો મા', 'અમુક પળો મા'); + assert.equal(moment().add({d: 5}).fromNow(), '૫ દિવસ મા', '૫ દિવસ મા'); +}); + +test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'આજ રાત ૨:૦૦ વાગ્યે', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'આજ રાત ૨:૨૫ વાગ્યે', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 3}).calendar(), 'આજ સવાર ૫:૦૦ વાગ્યે', 'Now plus 3 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'કાલે રાત ૨:૦૦ વાગ્યે', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'આજ રાત ૧:૦૦ વાગ્યે', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ગઇકાલે રાત ૨:૦૦ વાગ્યે', '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('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'રાત', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'સવાર', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'બપોર', 'during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'સાંજ', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'સાંજ', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'રાત', 'night'); + + assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'રાત', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'સવાર', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'બપોર', ' during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'સાંજ', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'સાંજ', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'રાત', 'night'); +}); + +test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '૧ ૦૧ ૧', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '૧ ૦૧ ૧', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '૨ ૦૨ ૨', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '૨ ૦૨ ૨', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '૩ ૦૩ ૩', 'Jan 15 2012 should be week 3'); +}); + diff --git a/src/test/locale/nl-be.js b/src/test/locale/nl-be.js index a772b34f33..f6d5c4a766 100644 --- a/src/test/locale/nl-be.js +++ b/src/test/locale/nl-be.js @@ -27,7 +27,7 @@ test('format', function (assert) { ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14de 14'], - ['d do dddd ddd dd', '0 0de zondag zo. Zo'], + ['d do dddd ddd dd', '0 0de zondag zo. zo'], ['DDD DDDo DDDD', '45 45ste 045'], ['w wo ww', '6 6de 06'], ['h hh', '3 03'], @@ -98,7 +98,7 @@ test('format month', function (assert) { }); test('format week', function (assert) { - var expected = 'zondag zo. Zo_maandag ma. Ma_dinsdag di. Di_woensdag wo. Wo_donderdag do. Do_vrijdag vr. Vr_zaterdag za. Za'.split('_'), i; + var expected = 'zondag zo. zo_maandag ma. ma_dinsdag di. di_woensdag wo. wo_donderdag do. do_vrijdag vr. vr_zaterdag za. za'.split('_'), i; for (i = 0; i < expected.length; i++) { assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); } diff --git a/src/test/locale/nl.js b/src/test/locale/nl.js index 21fca332fe..f3771fe201 100644 --- a/src/test/locale/nl.js +++ b/src/test/locale/nl.js @@ -27,7 +27,7 @@ test('format', function (assert) { ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14de 14'], - ['d do dddd ddd dd', '0 0de zondag zo. Zo'], + ['d do dddd ddd dd', '0 0de zondag zo. zo'], ['DDD DDDo DDDD', '45 45ste 045'], ['w wo ww', '6 6de 06'], ['h hh', '3 03'], @@ -98,7 +98,7 @@ test('format month', function (assert) { }); test('format week', function (assert) { - var expected = 'zondag zo. Zo_maandag ma. Ma_dinsdag di. Di_woensdag wo. Wo_donderdag do. Do_vrijdag vr. Vr_zaterdag za. Za'.split('_'), i; + var expected = 'zondag zo. zo_maandag ma. ma_dinsdag di. di_woensdag wo. wo_donderdag do. do_vrijdag vr. vr_zaterdag za. za'.split('_'), i; for (i = 0; i < expected.length; i++) { assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); } diff --git a/src/test/moment/getters_setters.js b/src/test/moment/getters_setters.js index 50b23bb48f..87bcba60b3 100644 --- a/src/test/moment/getters_setters.js +++ b/src/test/moment/getters_setters.js @@ -101,6 +101,35 @@ test('setters', function (assert) { assert.equal(a.month(), 3, 'month edge case'); }); +test('setters should handle garbage input', function (assert) { + var a = moment(); + a.set('year', 2011); + a.set('month', 9); + a.set('date', 12); + a.set('hours', 6); + a.set('minutes', 7); + a.set('seconds', 8); + a.set('milliseconds', 9); + + a.year(undefined); + a.month('foo'); + a.date(null); + a.day({a:2,b:3}); + a.hours('[1]'); + a.minutes(undefined); + a.seconds(null); + a.milliseconds(NaN); + + assert.equal(a.year(), 2011, 'year - provided undefined'); + assert.equal(a.month(), 9, 'month - provided null'); + assert.equal(a.date(), 12, 'date - provided [1]'); + assert.equal(a.day(), 3, 'day - provided Infinity'); + assert.equal(a.hours(), 6, 'hour - provided new Date'); + assert.equal(a.minutes(), 7, 'minute - provided {a:1,b:2}'); + assert.equal(a.seconds(), 8, 'second - provided foo'); + assert.equal(a.milliseconds(), 9, 'milliseconds - provided Infinity'); +}); + test('setter programmatic', function (assert) { var a = moment(); a.set('year', 2011); diff --git a/src/test/moment/is_numeric.js b/src/test/moment/is_numeric.js new file mode 100644 index 0000000000..ac7af2235b --- /dev/null +++ b/src/test/moment/is_numeric.js @@ -0,0 +1,26 @@ +import { module, test } from '../qunit'; +import isNumeric from '../../lib/utils/is-numeric.js'; + +test('isNumeric recognizes numeric things', function (assert) { + assert.ok(isNumeric(1), 'simple integer'); + assert.ok(isNumeric(0), 'simple number'); + assert.ok(isNumeric(-0), 'silly number'); + assert.ok(isNumeric(1010010293029), 'large number'); + assert.ok(isNumeric(1.100393830000), 'decimal numbers'); + assert.ok(isNumeric(Math.LN2), 'natural log of two'); + assert.ok(isNumeric(Math.PI), 'delicious number'); + assert.ok(isNumeric(5e10), 'scientifically notated number'); +}); + +test('isNumeric rejects non-numeric things', function (assert) { + assert.ok(!isNumeric(NaN), 'not number'); + assert.ok(!isNumeric(Infinity), 'largest number'); + assert.ok(!isNumeric(-Infinity), 'smallest number'); + assert.ok(!isNumeric(), 'nothing'); + assert.ok(!isNumeric(undefined), 'undefined'); + assert.ok(!isNumeric(null), 'null'); + assert.ok(!isNumeric([1]), 'array'); + assert.ok(!isNumeric('[1,2,3]'), 'string'); + assert.ok(!isNumeric(new Date()), 'date'); + assert.ok(!isNumeric({a:1,b:2}), 'object'); +}); diff --git a/tasks/transpile.js b/tasks/transpile.js index ea8a15a0ff..15c921745b 100644 --- a/tasks/transpile.js +++ b/tasks/transpile.js @@ -71,7 +71,8 @@ module.exports = function (grunt) { } return rollup(rollupOpts).then(function (bundle) { - var result = bundle.generate(bundleOpts); + return bundle.generate(bundleOpts); + }).then(function (result) { return result.code; }); }