source: frontend/node_modules/@bcoe/v8-coverage/src/lib/normalize.ts

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.3 KB
Line 
1import { compareFunctionCovs, compareRangeCovs, compareScriptCovs } from "./compare";
2import { RangeTree } from "./range-tree";
3import { FunctionCov, ProcessCov, ScriptCov } from "./types";
4
5/**
6 * Normalizes a process coverage.
7 *
8 * Sorts the scripts alphabetically by `url`.
9 * Reassigns script ids: the script at index `0` receives `"0"`, the script at
10 * index `1` receives `"1"` etc.
11 * This does not normalize the script coverages.
12 *
13 * @param processCov Process coverage to normalize.
14 */
15export function normalizeProcessCov(processCov: ProcessCov): void {
16 processCov.result.sort(compareScriptCovs);
17 for (const [scriptId, scriptCov] of processCov.result.entries()) {
18 scriptCov.scriptId = scriptId.toString(10);
19 }
20}
21
22/**
23 * Normalizes a process coverage deeply.
24 *
25 * Normalizes the script coverages deeply, then normalizes the process coverage
26 * itself.
27 *
28 * @param processCov Process coverage to normalize.
29 */
30export function deepNormalizeProcessCov(processCov: ProcessCov): void {
31 for (const scriptCov of processCov.result) {
32 deepNormalizeScriptCov(scriptCov);
33 }
34 normalizeProcessCov(processCov);
35}
36
37/**
38 * Normalizes a script coverage.
39 *
40 * Sorts the function by root range (pre-order sort).
41 * This does not normalize the function coverages.
42 *
43 * @param scriptCov Script coverage to normalize.
44 */
45export function normalizeScriptCov(scriptCov: ScriptCov): void {
46 scriptCov.functions.sort(compareFunctionCovs);
47}
48
49/**
50 * Normalizes a script coverage deeply.
51 *
52 * Normalizes the function coverages deeply, then normalizes the script coverage
53 * itself.
54 *
55 * @param scriptCov Script coverage to normalize.
56 */
57export function deepNormalizeScriptCov(scriptCov: ScriptCov): void {
58 for (const funcCov of scriptCov.functions) {
59 normalizeFunctionCov(funcCov);
60 }
61 normalizeScriptCov(scriptCov);
62}
63
64/**
65 * Normalizes a function coverage.
66 *
67 * Sorts the ranges (pre-order sort).
68 * TODO: Tree-based normalization of the ranges.
69 *
70 * @param funcCov Function coverage to normalize.
71 */
72export function normalizeFunctionCov(funcCov: FunctionCov): void {
73 funcCov.ranges.sort(compareRangeCovs);
74 const tree: RangeTree = RangeTree.fromSortedRanges(funcCov.ranges)!;
75 normalizeRangeTree(tree);
76 funcCov.ranges = tree.toRanges();
77}
78
79/**
80 * @internal
81 */
82export function normalizeRangeTree(tree: RangeTree): void {
83 tree.normalize();
84}
Note: See TracBrowser for help on using the repository browser.