From 00d26a6419e3e9b6ca380c1f59ee9656070495be Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Tue, 15 Sep 2015 23:41:53 -0700 Subject: [PATCH] Attempt again to ensure again `_.toInteger` converts `Infinity` to an integer. --- lodash.js | 11 +++++------ test/test.js | 16 +++++++++------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lodash.js b/lodash.js index c28fd5e0d..a5d9e8dd1 100644 --- a/lodash.js +++ b/lodash.js @@ -51,7 +51,7 @@ /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, - MAX_VALUE = 1.7976931348623157e308; + MAX_INTEGER = 1e308; /** Used as references for the maximum length and index of an array. */ var MAX_ARRAY_LENGTH = 4294967295, @@ -9072,13 +9072,12 @@ * // => 0 * * _.toInteger(-Infinity) - * // => -Number.MAX_VALUE + * // => -1e308 */ function toInteger(value) { - var result = nativeFloor(value) || 0; - return result == INFINITY - ? MAX_VALUE - : (result == -INFINITY ? -MAX_VALUE : result); + return (value == INFINITY || value == -INFINITY) + ? (value < 0 ? -1 : 1) * MAX_INTEGER + : (value - (value % 1)) || 0; } /** diff --git a/test/test.js b/test/test.js index a4d3818b8..e15f2f568 100644 --- a/test/test.js +++ b/test/test.js @@ -12,12 +12,13 @@ /** Used as the `TypeError` message for "Functions" methods. */ var FUNC_ERROR_TEXT = 'Expected a function'; - /** Used as references for the max length and index of an array. */ - var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; + /** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1e308; - /** Used as the maximum length an array-like object. */ - var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; /** `Object#toString` result references. */ var funcTag = '[object Function]', @@ -18430,12 +18431,13 @@ (function() { QUnit.test('should convert values to integers', function(assert) { - assert.expect(4); + assert.expect(5); assert.strictEqual(_.toInteger('3.14'), 3); assert.strictEqual(_.toInteger(), 0); assert.strictEqual(_.toInteger(NaN), 0); - assert.strictEqual(_.toInteger(-Infinity), -1.7976931348623157e+308); + assert.strictEqual(_.toInteger(Infinity), MAX_INTEGER); + assert.strictEqual(_.toInteger(-Infinity), -MAX_INTEGER); }); }());