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.
70 lines
1.7 KiB
70 lines
1.7 KiB
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, |
|
}; |
|
}
|
|
|