From 5ec6f1085ab2ef3416f229810a10550111a43814 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Wed, 21 Oct 2015 22:04:14 -0700 Subject: [PATCH] Ensure `_.toInteger` can return `-0`. --- lodash.js | 9 ++++++--- test/test.js | 6 ++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lodash.js b/lodash.js index 013a1f793..799df4b94 100644 --- a/lodash.js +++ b/lodash.js @@ -9736,9 +9736,12 @@ * // => -1e308 */ function toInteger(value) { - return (value == INFINITY || value == -INFINITY) - ? (value < 0 ? -1 : 1) * MAX_INTEGER - : (value - (value % 1)) || 0; + if (value === INFINITY || value === -INFINITY) { + return (value < 0 ? -1 : 1) * MAX_INTEGER; + } + value = +value; + var remainder = value % 1; + return value === value ? (remainder ? value - remainder : value) : 0; } /** diff --git a/test/test.js b/test/test.js index 75c07a4e3..0c0ded3d9 100644 --- a/test/test.js +++ b/test/test.js @@ -19063,6 +19063,12 @@ assert.strictEqual(_.toInteger(Infinity), MAX_INTEGER); assert.strictEqual(_.toInteger(-Infinity), -MAX_INTEGER); }); + + QUnit.test('should not coerce `-0` to `0`', function(assert) { + assert.expect(1); + + assert.strictEqual(1 / _.toInteger(-0), -Infinity); + }); }()); /*--------------------------------------------------------------------------*/