diff --git a/lodash.js b/lodash.js index 279ae7441..64fe03ae7 100644 --- a/lodash.js +++ b/lodash.js @@ -13282,11 +13282,10 @@ if (end === undefined) { end = start; start = 0; - step = step === undefined ? (start < end ? 1 : -1) : step; } else { end = toNumber(end) || 0; } - step = step === undefined ? 1 : (toNumber(step) || 0); + step = step === undefined ? (start < end ? 1 : -1) : (toNumber(step) || 0); var n = nativeMax(nativeCeil((end - start) / (step || 1)), 0); return baseTimes(n, function(index) { diff --git a/test/test.js b/test/test.js index 77382aadf..46345a5fb 100644 --- a/test/test.js +++ b/test/test.js @@ -15555,27 +15555,25 @@ QUnit.module('lodash.range'); (function() { - QUnit.test('should work with only an `end` argument', function(assert) { - assert.expect(1); + QUnit.test('should infer the sign of `step` when provided only an `end` argument', function(assert) { + assert.expect(2); assert.deepEqual(_.range(4), [0, 1, 2, 3]); - }); - - QUnit.test('should use a `step` of `-1` when provided only a negative `end` argument', function(assert) { - assert.expect(1); - assert.deepEqual(_.range(-4), [0, -1, -2, -3]); }); - QUnit.test('should work with `start` and `end` arguments', function(assert) { - assert.expect(1); + QUnit.test('should infer the sign of `step` when provided only a `start` and `end` argument', function(assert) { + assert.expect(2); assert.deepEqual(_.range(1, 5), [1, 2, 3, 4]); + assert.deepEqual(_.range(5, 1), [5, 4, 3, 2]); }); QUnit.test('should work with `start`, `end`, and `step` arguments', function(assert) { - assert.expect(1); + assert.expect(3); + assert.deepEqual(_.range(0, -4, -1), [0, -1, -2, -3]); + assert.deepEqual(_.range(5, 1, -1), [5, 4, 3, 2]); assert.deepEqual(_.range(0, 20, 5), [0, 5, 10, 15]); }); diff --git a/test/underscore.html b/test/underscore.html index 2c0f3c150..3e276360c 100644 --- a/test/underscore.html +++ b/test/underscore.html @@ -77,6 +77,9 @@ 'an array of pairs zipped together into an object', 'an object converted to pairs and back to an object' ], + 'range': [ + 'range with two arguments a & b, b<a generates an empty array' + ], 'rest': [ 'working rest(0)', 'rest can take an index',