]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.tests.modelled.ui/src/org/simantics/tests/modelled/ui/STSCoverageProvider.java
Ignore multiple modelled tests via context menu action
[simantics/platform.git] / bundles / org.simantics.tests.modelled.ui / src / org / simantics / tests / modelled / ui / STSCoverageProvider.java
1 package org.simantics.tests.modelled.ui;
2
3 import java.text.DecimalFormat;
4 import java.util.Collection;
5
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;
15
16 public class STSCoverageProvider extends LabelProvider implements ITreeContentProvider {
17
18     private Object input;
19     
20     @Override
21     public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
22         input = newInput;
23     }
24
25     @Override
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();
34         } else {
35             return new Object[0];
36         }
37         if (coverage == null)
38             return new Object[0];
39         
40         return new Object[] { coverage };
41         
42 //        Collection<ModuleCoverage> moduleCoverages = coverage.moduleCoverages.values();
43 //        return moduleCoverages.toArray(new ModuleCoverage[moduleCoverages.size()]);
44     }
45
46     @Override
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()]);
56         } else {
57             return null;
58         }
59     }
60
61     @Override
62     public Object getParent(Object element) {
63         if (element instanceof FunctionCoverage) {
64             FunctionCoverage coverage = (FunctionCoverage) element;
65             return new ModuleCoverage[] { null };
66         } else {
67             return null;
68         }
69     }
70
71     @Override
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();
77         else
78             return false;
79     }
80     
81     @Override
82     public String getText(Object element) {
83         if (element instanceof Coverage)
84             return ((Coverage) element).getIdentifier();
85         return super.getText(element);
86     }
87
88     public String getRatio(Object element) {
89         if (element instanceof Coverage)
90             return formatPercentage(((Coverage) element).getCoverage());
91         return "unknown " + element;
92     }
93
94     public String getCovered(Object element) {
95         if (element instanceof Coverage)
96             return ((Coverage) element).getCoveredCodeSize() + "";
97         return "unknown " + element;
98     }
99
100     public String getMissed(Object element) {
101         if (element instanceof Coverage)
102             return ((Coverage) element).getMissedCodeSize() + "";
103         return "unknown " + element;
104     }
105
106     public String getTotal(Object element) {
107         if (element instanceof Coverage)
108             return ((Coverage) element).getTotalCodeSize() + "";
109         return "unknown " + element;
110     }
111     
112     private static final DecimalFormat MAX_PERCENTAGE_STRING = new DecimalFormat("0.0 %");
113     
114     private static String formatPercentage(double perc) {
115         return MAX_PERCENTAGE_STRING.format(perc);
116     }
117
118 }