123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import { compareFunctionCovs, compareRangeCovs, compareScriptCovs } from "./compare";
- import { RangeTree } from "./range-tree";
- import { FunctionCov, ProcessCov, ScriptCov } from "./types";
- /**
- * Normalizes a process coverage.
- *
- * Sorts the scripts alphabetically by `url`.
- * Reassigns script ids: the script at index `0` receives `"0"`, the script at
- * index `1` receives `"1"` etc.
- * This does not normalize the script coverages.
- *
- * @param processCov Process coverage to normalize.
- */
- export function normalizeProcessCov(processCov: ProcessCov): void {
- processCov.result.sort(compareScriptCovs);
- for (const [scriptId, scriptCov] of processCov.result.entries()) {
- scriptCov.scriptId = scriptId.toString(10);
- }
- }
- /**
- * Normalizes a process coverage deeply.
- *
- * Normalizes the script coverages deeply, then normalizes the process coverage
- * itself.
- *
- * @param processCov Process coverage to normalize.
- */
- export function deepNormalizeProcessCov(processCov: ProcessCov): void {
- for (const scriptCov of processCov.result) {
- deepNormalizeScriptCov(scriptCov);
- }
- normalizeProcessCov(processCov);
- }
- /**
- * Normalizes a script coverage.
- *
- * Sorts the function by root range (pre-order sort).
- * This does not normalize the function coverages.
- *
- * @param scriptCov Script coverage to normalize.
- */
- export function normalizeScriptCov(scriptCov: ScriptCov): void {
- scriptCov.functions.sort(compareFunctionCovs);
- }
- /**
- * Normalizes a script coverage deeply.
- *
- * Normalizes the function coverages deeply, then normalizes the script coverage
- * itself.
- *
- * @param scriptCov Script coverage to normalize.
- */
- export function deepNormalizeScriptCov(scriptCov: ScriptCov): void {
- for (const funcCov of scriptCov.functions) {
- normalizeFunctionCov(funcCov);
- }
- normalizeScriptCov(scriptCov);
- }
- /**
- * Normalizes a function coverage.
- *
- * Sorts the ranges (pre-order sort).
- * TODO: Tree-based normalization of the ranges.
- *
- * @param funcCov Function coverage to normalize.
- */
- export function normalizeFunctionCov(funcCov: FunctionCov): void {
- funcCov.ranges.sort(compareRangeCovs);
- const tree: RangeTree = RangeTree.fromSortedRanges(funcCov.ranges)!;
- normalizeRangeTree(tree);
- funcCov.ranges = tree.toRanges();
- }
- /**
- * @internal
- */
- export function normalizeRangeTree(tree: RangeTree): void {
- tree.normalize();
- }
|