add an intermediary typed function that will fail a test

This commit is contained in:
Mathias Polligkeit 2016-08-01 23:54:53 +02:00
parent 2a98231966
commit fc2b730e04

View File

@ -45,46 +45,20 @@ function factory (type, config, load, typed) {
// This is the public API for all distributions
var randFunctions = {
random: function(arg1, arg2, arg3) {
var size, min, max;
if (arguments.length > 3) {
throw new ArgumentsError('random', arguments.length, 0, 3);
// `random(max)` or `random(size)`
} else if (arguments.length === 1) {
if (isCollection(arg1)) {
size = arg1;
}
else {
max = arg1;
}
// `random(min, max)` or `random(size, max)`
} else if (arguments.length === 2) {
if (isCollection(arg1)) {
size = arg1;
max = arg2;
}
else {
min = arg1;
max = arg2;
}
// `random(size, min, max)`
} else {
size = arg1;
min = arg2;
max = arg3;
}
// TODO: validate type of min, max, and size
if (max === undefined) max = 1;
if (min === undefined) min = 0;
if (size !== undefined) {
var res = _randomDataForMatrix(size.valueOf(), min, max, _random);
return (size && size.isMatrix === true) ? matrix(res) : res;
}
else return _random(min, max);
},
random: typed({
'': function() {
return _randomOld();
},
'Array | number': function(arg1) {
return _randomOld(arg1);
},
'Array | number, number': function(arg1, arg2) {
return _randomOld(arg1, arg2);
},
'Array, number, number': function(arg1, arg2, arg3) {
return _randomOld(arg1, arg2, arg3);
},
}),
randomInt: typed({
'number | Array': function(arg) {
@ -157,6 +131,47 @@ function factory (type, config, load, typed) {
})
}
var _randomOld = function(arg1, arg2, arg3) {
var size, min, max;
if (arguments.length > 3) {
throw new ArgumentsError('random', arguments.length, 0, 3);
// `random(max)` or `random(size)`
} else if (arguments.length === 1) {
if (isCollection(arg1)) {
size = arg1;
}
else {
max = arg1;
}
// `random(min, max)` or `random(size, max)`
} else if (arguments.length === 2) {
if (isCollection(arg1)) {
size = arg1;
max = arg2;
}
else {
min = arg1;
max = arg2;
}
// `random(size, min, max)`
} else {
size = arg1;
min = arg2;
max = arg3;
}
// TODO: validate type of min, max, and size
if (max === undefined) max = 1;
if (min === undefined) min = 0;
if (size !== undefined) {
var res = _randomDataForMatrix(size.valueOf(), min, max, _random);
return (size && size.isMatrix === true) ? matrix(res) : res;
}
else return _random(min, max);
};
var _pickRandom = function(possibles, number, weights) {
var single = (typeof number === 'undefined');