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