]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Add tests for daysInMonth overflow behavior
authorKunal Marwaha <marwahaha@berkeley.edu>
Fri, 31 Mar 2017 07:46:50 +0000 (03:46 -0400)
committerIskren Chernev <iskren.chernev@gmail.com>
Sun, 6 Aug 2017 23:29:10 +0000 (02:29 +0300)
src/test/moment/days_in_month.js

index 6108155a753340b0ea74d45bdbb61d00281039e9..b206e3a642b106c46146bafcdf8b409fa15c9375 100644 (file)
@@ -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');
+});