mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-10 10:57:49 +00:00
Ensure _.times doesn't error when passed negative numbers.
Former-commit-id: 5d694743fbda0f477250fe3c90cf29168834ac6f
This commit is contained in:
13
build.js
13
build.js
@@ -2170,6 +2170,19 @@
|
|||||||
'}'
|
'}'
|
||||||
].join('\n'));
|
].join('\n'));
|
||||||
|
|
||||||
|
// replace `_.times`
|
||||||
|
source = replaceFunction(source, 'times', [
|
||||||
|
'function times(n, callback, thisArg) {',
|
||||||
|
' var index = -1,',
|
||||||
|
' result = Array(n > -1 ? n : 0);',
|
||||||
|
'',
|
||||||
|
' while (++index < n) {',
|
||||||
|
' result[index] = callback.call(thisArg, index);',
|
||||||
|
' }',
|
||||||
|
' return result;',
|
||||||
|
'}'
|
||||||
|
].join('\n'));
|
||||||
|
|
||||||
// replace `_.uniq`
|
// replace `_.uniq`
|
||||||
source = replaceFunction(source, 'uniq', [
|
source = replaceFunction(source, 'uniq', [
|
||||||
'function uniq(array, isSorted, callback, thisArg) {',
|
'function uniq(array, isSorted, callback, thisArg) {',
|
||||||
|
|||||||
@@ -4973,7 +4973,7 @@
|
|||||||
* // => also calls `mage.castSpell(n)` three times
|
* // => also calls `mage.castSpell(n)` three times
|
||||||
*/
|
*/
|
||||||
function times(n, callback, thisArg) {
|
function times(n, callback, thisArg) {
|
||||||
n = +n || 0;
|
n = (n = +n) > -1 ? n : 0;
|
||||||
var index = -1,
|
var index = -1,
|
||||||
result = Array(n);
|
result = Array(n);
|
||||||
|
|
||||||
|
|||||||
@@ -911,6 +911,7 @@
|
|||||||
|
|
||||||
strictEqual(lodash.result(), null, '_.result should return `null` for falsey `object` arguments: ' + basename);
|
strictEqual(lodash.result(), null, '_.result should return `null` for falsey `object` arguments: ' + basename);
|
||||||
strictEqual(lodash.some([false, true, false]), true, '_.some: ' + basename);
|
strictEqual(lodash.some([false, true, false]), true, '_.some: ' + basename);
|
||||||
|
deepEqual(lodash.times(null, function() {}), [null], '_.times should not coerce `n` to a number: ' + basename);
|
||||||
equal(lodash.template('${a}', object), '${a}', '_.template should ignore ES6 delimiters: ' + basename);
|
equal(lodash.template('${a}', object), '${a}', '_.template should ignore ES6 delimiters: ' + basename);
|
||||||
equal('imports' in lodash.templateSettings, false, '_.templateSettings should not have an "imports" property: ' + basename);
|
equal('imports' in lodash.templateSettings, false, '_.templateSettings should not have an "imports" property: ' + basename);
|
||||||
strictEqual(lodash.uniqueId(0), '1', '_.uniqueId should ignore a prefix of `0`: ' + basename);
|
strictEqual(lodash.uniqueId(0), '1', '_.uniqueId should ignore a prefix of `0`: ' + basename);
|
||||||
|
|||||||
14
test/test.js
14
test/test.js
@@ -2603,6 +2603,20 @@
|
|||||||
test('should return an array of the results of each `callback` execution', function() {
|
test('should return an array of the results of each `callback` execution', function() {
|
||||||
deepEqual(_.times(3, function(n) { return n * 2; }), [0, 2, 4]);
|
deepEqual(_.times(3, function(n) { return n * 2; }), [0, 2, 4]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should coerce `n` to a number', function() {
|
||||||
|
deepEqual(_.times(null), []);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should not error on negative `n` values', function() {
|
||||||
|
var pass = true;
|
||||||
|
try {
|
||||||
|
_.times(-1);
|
||||||
|
} catch(e) {
|
||||||
|
pass = false;
|
||||||
|
}
|
||||||
|
ok(pass);
|
||||||
|
});
|
||||||
}());
|
}());
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|||||||
Reference in New Issue
Block a user