From: Kunal Marwaha Date: Fri, 31 Mar 2017 07:46:50 +0000 (-0400) Subject: Add tests for daysInMonth overflow behavior X-Git-Tag: 2.19.0~33^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dfd7bcedfbd360a6f012faf4f90d78bb6f6044cc;p=thirdparty%2Fmoment.git Add tests for daysInMonth overflow behavior --- diff --git a/src/test/moment/days_in_month.js b/src/test/moment/days_in_month.js index 6108155a7..b206e3a64 100644 --- a/src/test/moment/days_in_month.js +++ b/src/test/moment/days_in_month.js @@ -1,6 +1,7 @@ import { module, test } from '../qunit'; import moment from '../../moment'; import each from '../helpers/each'; +import { daysInMonth } from '../../lib/units/month'; module('days in month'); @@ -19,3 +20,26 @@ test('days in month leap years', function (assert) { assert.equal(moment([2008, 1]).daysInMonth(), 29, 'Feb 2008 should have 29 days'); assert.equal(moment([2000, 1]).daysInMonth(), 29, 'Feb 2000 should have 29 days'); }); + +test('days in month with NaN inputs', function (assert) { + assert.ok(isNaN(daysInMonth(2, NaN)), 'month NaN inputs should return NaN'); + assert.ok(isNaN(daysInMonth(NaN, 0)), 'year NaN inputs should return NaN'); + assert.ok(!moment([2010, null, null]).isValid(), 'Invalid date because month is NaN'); +}); + +test('days in month with overflow', function (assert) { + assert.equal(daysInMonth(14, 22), daysInMonth(15, 10), 'positive overflow by 1'); + assert.equal(daysInMonth(14, 122), daysInMonth(24, 2), 'positive overflow by 10'); + assert.equal(daysInMonth(8, -2), daysInMonth(7, 10), 'negative overflow by 1'); + assert.equal(daysInMonth(-2380, -25), daysInMonth(-2383, 11), 'negative overflow by 3'); +}); + +test('days in month consistent with Date()', function (assert) { + var oldMethod = function (year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + }; + assert.equal(daysInMonth(14, 22), oldMethod(14, 22), 'positive overflow by 1'); + assert.equal(daysInMonth(14, 122), oldMethod(14, 122), 'positive overflow by 10'); + assert.equal(daysInMonth(8, -2), oldMethod(8, -2), 'negative overflow by 1'); + assert.equal(daysInMonth(-2380, -25), oldMethod(-2380, -25), 'negative overflow by 3'); +});