1 package org.simantics.tests.modelled.ui;
3 import java.text.DecimalFormat;
4 import java.util.Collection;
6 import org.eclipse.jface.viewers.ITreeContentProvider;
7 import org.eclipse.jface.viewers.LabelProvider;
8 import org.eclipse.jface.viewers.Viewer;
9 import org.simantics.scl.compiler.module.coverage.CombinedCoverage;
10 import org.simantics.scl.compiler.module.coverage.Coverage;
11 import org.simantics.scl.compiler.module.coverage.FunctionCoverage;
12 import org.simantics.scl.compiler.module.coverage.ModuleCoverage;
13 import org.simantics.tests.modelled.ui.STSTestSuiteModel.STSSuite;
14 import org.simantics.tests.modelled.ui.STSTestSuiteModel.STSTest;
16 public class STSCoverageProvider extends LabelProvider implements ITreeContentProvider {
21 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
26 public Object[] getElements(Object inputElement) {
27 CombinedCoverage coverage;
28 if (input instanceof STSTest) {
29 STSTest test = (STSTest) input;
30 coverage = test.getCoverage();
31 } else if (input instanceof STSSuite) {
32 STSSuite suite = (STSSuite) input;
33 coverage = suite.getCoverage();
40 return new Object[] { coverage };
42 // Collection<ModuleCoverage> moduleCoverages = coverage.moduleCoverages.values();
43 // return moduleCoverages.toArray(new ModuleCoverage[moduleCoverages.size()]);
47 public Object[] getChildren(Object parentElement) {
48 if (parentElement instanceof CombinedCoverage) {
49 CombinedCoverage coverage = (CombinedCoverage) parentElement;
50 Collection<ModuleCoverage> moduleCoverages = coverage.moduleCoverages.values();
51 return moduleCoverages.toArray(new ModuleCoverage[moduleCoverages.size()]);
52 } else if (parentElement instanceof ModuleCoverage) {
53 ModuleCoverage coverage = (ModuleCoverage) parentElement;
54 Collection<FunctionCoverage> coverages = coverage.functionCoverages.values();
55 return coverages.toArray(new FunctionCoverage[coverages.size()]);
62 public Object getParent(Object element) {
63 if (element instanceof FunctionCoverage) {
64 FunctionCoverage coverage = (FunctionCoverage) element;
65 return new ModuleCoverage[] { null };
72 public boolean hasChildren(Object element) {
73 if (element instanceof CombinedCoverage)
74 return !((CombinedCoverage) element).moduleCoverages.isEmpty();
75 else if (element instanceof ModuleCoverage)
76 return !((ModuleCoverage)element).functionCoverages.isEmpty();
82 public String getText(Object element) {
83 if (element instanceof Coverage)
84 return ((Coverage) element).getIdentifier();
85 return super.getText(element);
88 public String getRatio(Object element) {
89 if (element instanceof Coverage)
90 return formatPercentage(((Coverage) element).getCoverage());
91 return "unknown " + element;
94 public String getCovered(Object element) {
95 if (element instanceof Coverage)
96 return ((Coverage) element).getCoveredCodeSize() + "";
97 return "unknown " + element;
100 public String getMissed(Object element) {
101 if (element instanceof Coverage)
102 return ((Coverage) element).getMissedCodeSize() + "";
103 return "unknown " + element;
106 public String getTotal(Object element) {
107 if (element instanceof Coverage)
108 return ((Coverage) element).getTotalCodeSize() + "";
109 return "unknown " + element;
112 private static final DecimalFormat MAX_PERCENTAGE_STRING = new DecimalFormat("0.0 %");
114 private static String formatPercentage(double perc) {
115 return MAX_PERCENTAGE_STRING.format(perc);