From 1682723e866a26ba5540da9c61fdb65c362d1745 Mon Sep 17 00:00:00 2001 From: Iskren Chernev Date: Sat, 11 Jun 2016 21:52:03 -0700 Subject: [PATCH] Fix negative 0 in certain diff cases Fixes #3227 --- src/lib/utils/abs-floor.js | 3 ++- src/test/moment/diff.js | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) 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'); }); -- 2.47.2