]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Fix negative 0 in certain diff cases
authorIskren Chernev <iskren.chernev@gmail.com>
Sun, 12 Jun 2016 04:52:03 +0000 (21:52 -0700)
committerIskren Chernev <iskren.chernev@gmail.com>
Tue, 14 Jun 2016 10:11:10 +0000 (03:11 -0700)
Fixes #3227

src/lib/utils/abs-floor.js
src/test/moment/diff.js

index 8ba131831c078c75c8f8b5792eed775b9c975ca9..401c7f041f82ab9b73505e5908e68da7b81da685 100644 (file)
@@ -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);
     }
index fb42ddeb0352152fc36610f670d99d3c3c5e0bdd..8ebc60891462fcca2806afa06d87928cc3efddda 100644 (file)
@@ -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');
 });