]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.tests.modelled.ui/src/org/simantics/tests/modelled/ui/STSCoverageProvider.java
Sync git svn branch with SVN repository r33290.
[simantics/platform.git] / bundles / org.simantics.tests.modelled.ui / src / org / simantics / tests / modelled / ui / STSCoverageProvider.java
1 package org.simantics.tests.modelled.ui;\r
2 \r
3 import java.text.DecimalFormat;\r
4 import java.util.Collection;\r
5 \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
15 \r
16 public class STSCoverageProvider extends LabelProvider implements ITreeContentProvider {\r
17 \r
18     private Object input;\r
19     \r
20     @Override\r
21     public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
22         input = newInput;\r
23     }\r
24 \r
25     @Override\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
34         } else {\r
35             return new Object[0];\r
36         }\r
37         if (coverage == null)\r
38             return new Object[0];\r
39         \r
40         return new Object[] { coverage };\r
41         \r
42 //        Collection<ModuleCoverage> moduleCoverages = coverage.moduleCoverages.values();\r
43 //        return moduleCoverages.toArray(new ModuleCoverage[moduleCoverages.size()]);\r
44     }\r
45 \r
46     @Override\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
56         } else {\r
57             return null;\r
58         }\r
59     }\r
60 \r
61     @Override\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
66         } else {\r
67             return null;\r
68         }\r
69     }\r
70 \r
71     @Override\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
77         else\r
78             return false;\r
79     }\r
80     \r
81     @Override\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
86     }\r
87 \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
92     }\r
93 \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
98     }\r
99 \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
104     }\r
105 \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
110     }\r
111     \r
112     private static final DecimalFormat MAX_PERCENTAGE_STRING = new DecimalFormat("0.0 %");\r
113     \r
114     private static String formatPercentage(double perc) {\r
115         return MAX_PERCENTAGE_STRING.format(perc);\r
116     }\r
117 \r
118 }\r