1 package org.simantics.scl.compiler.module.coverage;
\r
3 import java.io.PrintStream;
\r
4 import java.util.Arrays;
\r
6 import gnu.trove.map.hash.THashMap;
\r
8 public class CombinedCoverage extends AbstractCoverage {
\r
9 public final THashMap<String, ModuleCoverage> moduleCoverages;
\r
11 public final int totalFunctionCount;
\r
12 public final int coveredFunctionCount;
\r
13 public final double functionCoverage;
\r
15 public CombinedCoverage(THashMap<String, ModuleCoverage> moduleCoverages,
\r
16 int totalCodeSize, int coveredCodeSize,
\r
17 int totalFunctionCount, int coveredFunctionCount) {
\r
18 super("Total coverage of " + moduleCoverages.size() + " modules", totalCodeSize, coveredCodeSize);
\r
19 this.moduleCoverages = moduleCoverages;
\r
20 this.totalFunctionCount = totalFunctionCount;
\r
21 this.coveredFunctionCount = coveredFunctionCount;
\r
22 this.functionCoverage = CoverageUtils.safeDiv(coveredFunctionCount, totalFunctionCount);
\r
25 public void print(PrintStream s) {
\r
26 s.println("Code coverage: " + toPercent(getCoverage()) +
\r
27 " (" + getCoveredCodeSize() + " / " + getTotalCodeSize() + ")");
\r
28 s.println("Function coverage: " + toPercent(functionCoverage) +
\r
29 " (" + coveredFunctionCount + " / " + totalFunctionCount + ")");
\r
30 String[] moduleNames = moduleCoverages.keySet().toArray(new String[moduleCoverages.size()]);
\r
31 Arrays.sort(moduleNames);
\r
32 for(String functionName : moduleNames) {
\r
33 ModuleCoverage mCov = moduleCoverages.get(functionName);
\r
34 s.println(" " + functionName + ": " + toPercent(mCov.getCoverage()) +
\r
35 " (" + mCov.getCoveredCodeSize() + " / " + mCov.getTotalCodeSize() + ")");
\r