You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.7 KiB
71 lines
1.7 KiB
2 years ago
|
import { FunctionCov, ProcessCov, RangeCov, ScriptCov } from "./types";
|
||
|
|
||
|
/**
|
||
|
* Creates a deep copy of a process coverage.
|
||
|
*
|
||
|
* @param processCov Process coverage to clone.
|
||
|
* @return Cloned process coverage.
|
||
|
*/
|
||
|
export function cloneProcessCov(processCov: Readonly<ProcessCov>): ProcessCov {
|
||
|
const result: ScriptCov[] = [];
|
||
|
for (const scriptCov of processCov.result) {
|
||
|
result.push(cloneScriptCov(scriptCov));
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
result,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a deep copy of a script coverage.
|
||
|
*
|
||
|
* @param scriptCov Script coverage to clone.
|
||
|
* @return Cloned script coverage.
|
||
|
*/
|
||
|
export function cloneScriptCov(scriptCov: Readonly<ScriptCov>): ScriptCov {
|
||
|
const functions: FunctionCov[] = [];
|
||
|
for (const functionCov of scriptCov.functions) {
|
||
|
functions.push(cloneFunctionCov(functionCov));
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
scriptId: scriptCov.scriptId,
|
||
|
url: scriptCov.url,
|
||
|
functions,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a deep copy of a function coverage.
|
||
|
*
|
||
|
* @param functionCov Function coverage to clone.
|
||
|
* @return Cloned function coverage.
|
||
|
*/
|
||
|
export function cloneFunctionCov(functionCov: Readonly<FunctionCov>): FunctionCov {
|
||
|
const ranges: RangeCov[] = [];
|
||
|
for (const rangeCov of functionCov.ranges) {
|
||
|
ranges.push(cloneRangeCov(rangeCov));
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
functionName: functionCov.functionName,
|
||
|
ranges,
|
||
|
isBlockCoverage: functionCov.isBlockCoverage,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a deep copy of a function coverage.
|
||
|
*
|
||
|
* @param rangeCov Range coverage to clone.
|
||
|
* @return Cloned range coverage.
|
||
|
*/
|
||
|
export function cloneRangeCov(rangeCov: Readonly<RangeCov>): RangeCov {
|
||
|
return {
|
||
|
startOffset: rangeCov.startOffset,
|
||
|
endOffset: rangeCov.endOffset,
|
||
|
count: rangeCov.count,
|
||
|
};
|
||
|
}
|