Ensure min and max of _.random are swapped if min > max.

This commit is contained in:
John-David Dalton
2015-12-21 20:10:46 -06:00
parent ad8628f8e7
commit 33da30266c
2 changed files with 36 additions and 18 deletions

View File

@@ -11651,29 +11651,33 @@
if (floating && typeof floating != 'boolean' && isIterateeCall(min, max, floating)) {
max = floating = undefined;
}
var noMin = min === undefined,
noMax = max === undefined;
if (floating === undefined) {
if (noMax && typeof min == 'boolean') {
floating = min;
min = 1;
}
else if (typeof max == 'boolean') {
if (typeof max == 'boolean') {
floating = max;
noMax = true;
max = undefined;
}
else if (typeof min == 'boolean') {
floating = min;
min = undefined;
}
}
if (noMin && noMax) {
max = 1;
noMax = false;
}
min = toNumber(min) || 0;
if (noMax) {
max = min;
if (min === undefined && max === undefined) {
min = 0;
} else {
max = toNumber(max) || 0;
max = 1;
}
else {
min = toNumber(min) || 0;
if (max === undefined) {
max = min;
min = 0;
} else {
max = toNumber(max) || 0;
}
}
if (min > max) {
var temp = min;
min = max;
max = temp;
}
if (floating || min % 1 || max % 1) {
var rand = nativeRandom();

View File

@@ -15407,6 +15407,20 @@
}));
});
QUnit.test('should swap `min` and `max` when `min` > `max`', function(assert) {
assert.expect(1);
var min = 4,
max = 2,
expected = [2, 3, 4];
var actual = lodashStable.uniq(lodashStable.map(array, function() {
return _.random(min, max);
})).sort();
assert.deepEqual(actual, expected);
});
QUnit.test('should support large integer values', function(assert) {
assert.expect(2);