From: Iskren Chernev Date: Sun, 12 Jun 2016 04:52:03 +0000 (-0700) Subject: Fix negative 0 in certain diff cases X-Git-Tag: 2.14.0~18^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1682723e866a26ba5540da9c61fdb65c362d1745;p=thirdparty%2Fmoment.git Fix negative 0 in certain diff cases Fixes #3227 --- diff --git a/src/lib/utils/abs-floor.js b/src/lib/utils/abs-floor.js index 8ba131831..401c7f041 100644 --- a/src/lib/utils/abs-floor.js +++ b/src/lib/utils/abs-floor.js @@ -1,6 +1,7 @@ export default function absFloor (number) { if (number < 0) { - return Math.ceil(number); + // -0 -> 0 + return Math.ceil(number) || 0; } else { return Math.floor(number); } diff --git a/src/test/moment/diff.js b/src/test/moment/diff.js index fb42ddeb0..8ebc60891 100644 --- a/src/test/moment/diff.js +++ b/src/test/moment/diff.js @@ -240,4 +240,8 @@ test('negative zero', function (assert) { assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'months')), 'month diff on same date is zero, not -0'); assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'years')), 'year diff on same date is zero, not -0'); assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'quarters')), 'quarter diff on same date is zero, not -0'); + assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 1]), 'days')), 'days diff on same date is zero, not -0'); + assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 1]), 'hours')), 'hour diff on same hour is zero, not -0'); + assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 0, 1]), 'minutes')), 'minute diff on same minute is zero, not -0'); + assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 0, 0, 1]), 'seconds')), 'second diff on same second is zero, not -0'); });