test-each
Version:
🤖 Repeat tests. Repeat tests. Repeat tests.
75 lines (38 loc) • 1.04 kB
JavaScript
export const normalizeFunc=(input)=>{
if(typeof input!=="function"){
return input
}
const value=wrapFunc(input);
return[{value}]
};
export const callFuncs=({index,indexes,values,titles})=>{
const info={index,indexes};
const valuesA=values.reduce(callFunc.bind(undefined,info),[]);
return{index,indexes,values:valuesA,titles}
};
const callFunc=(info,previousValues,value,valueIndex,values)=>{
if(!isInputFunc(value)){
return[...previousValues,value]
}
const inputFunc=unwrapFunc(value);
const nextValues=values.slice(valueIndex).map(unwrapValue);
const valueA=inputFunc(info,...previousValues,...nextValues);
return[...previousValues,valueA]
};
const funcSymbol=Symbol("function");
const isInputFunc=(value)=>{
try{
return(
value!==undefined&&value!==null&&value[funcSymbol]!==undefined)
}catch{
return false
}
};
const wrapFunc=(value)=>({[funcSymbol]:value});
const unwrapFunc=(value)=>value[funcSymbol];
const unwrapValue=(value)=>{
if(isInputFunc(value)){
return unwrapFunc(value)
}
return value
};