]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/coverage/CombinedCoverage.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / coverage / CombinedCoverage.java
1 package org.simantics.scl.compiler.module.coverage;\r
2 \r
3 import java.io.PrintStream;\r
4 import java.util.Arrays;\r
5 \r
6 import gnu.trove.map.hash.THashMap;\r
7 \r
8 public class CombinedCoverage extends AbstractCoverage {\r
9     public final THashMap<String, ModuleCoverage> moduleCoverages;\r
10 \r
11     public final int totalFunctionCount;\r
12     public final int coveredFunctionCount;\r
13     public final double functionCoverage;\r
14     \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
23     }\r
24     \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
36         }   \r
37     }\r
38 \r
39 }\r