approvals
Version:
Approval Tests Library - Capturing Human Intelligence
53 lines (52 loc) • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.printArray = printArray;
exports.printJson = printJson;
exports.printCombinations = printCombinations;
function printArray(header, list, formatter) {
function getDefaultFormatter() {
let count = 0;
return (t) => `[${count++}] => ${t}`;
}
formatter = formatter || getDefaultFormatter();
let text = "";
if (header) {
text = header + "\n\n\n";
}
for (let t of list) {
text += formatter(t) + "\n";
}
return text;
}
function printJson(data) {
return JSON.stringify(data, null, " ");
}
function printCombinations(func, ...variations) {
const parameterCombinations = generateParameterCombinations(variations);
let text = "";
parameterCombinations.forEach((parameters) => {
text += print(func, parameters);
});
return text;
}
function generateParameterCombinations(variations, parameterCombinations = [], index = 0, currentParameterCombination = []) {
const allParametersProcessed = index === variations.length;
if (allParametersProcessed) {
parameterCombinations.push(currentParameterCombination);
return parameterCombinations;
}
for (let nextParameter of variations[index]) {
generateParameterCombinations(variations, parameterCombinations, index + 1, [...currentParameterCombination, nextParameter]);
}
return parameterCombinations;
}
function print(func, parameters) {
let output;
try {
output = func(...parameters);
}
catch (e) {
output = `${e}`;
}
return `[${parameters}] => ${output}\n`;
}