]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.tests.modelled.ui/src/org/simantics/tests/modelled/ui/STSCoverageProvider.java b/bundles/org.simantics.tests.modelled.ui/src/org/simantics/tests/modelled/ui/STSCoverageProvider.java
new file mode 100644 (file)
index 0000000..0ba65cc
--- /dev/null
@@ -0,0 +1,118 @@
+package org.simantics.tests.modelled.ui;\r
+\r
+import java.text.DecimalFormat;\r
+import java.util.Collection;\r
+\r
+import org.eclipse.jface.viewers.ITreeContentProvider;\r
+import org.eclipse.jface.viewers.LabelProvider;\r
+import org.eclipse.jface.viewers.Viewer;\r
+import org.simantics.scl.compiler.module.coverage.CombinedCoverage;\r
+import org.simantics.scl.compiler.module.coverage.Coverage;\r
+import org.simantics.scl.compiler.module.coverage.FunctionCoverage;\r
+import org.simantics.scl.compiler.module.coverage.ModuleCoverage;\r
+import org.simantics.tests.modelled.ui.STSTestSuiteModel.STSSuite;\r
+import org.simantics.tests.modelled.ui.STSTestSuiteModel.STSTest;\r
+\r
+public class STSCoverageProvider extends LabelProvider implements ITreeContentProvider {\r
+\r
+    private Object input;\r
+    \r
+    @Override\r
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
+        input = newInput;\r
+    }\r
+\r
+    @Override\r
+    public Object[] getElements(Object inputElement) {\r
+        CombinedCoverage coverage;\r
+        if (input instanceof STSTest) {\r
+            STSTest test = (STSTest) input;\r
+            coverage = test.getCoverage();\r
+        } else if (input instanceof STSSuite) {\r
+            STSSuite suite = (STSSuite) input;\r
+            coverage = suite.getCoverage();\r
+        } else {\r
+            return new Object[0];\r
+        }\r
+        if (coverage == null)\r
+            return new Object[0];\r
+        \r
+        return new Object[] { coverage };\r
+        \r
+//        Collection<ModuleCoverage> moduleCoverages = coverage.moduleCoverages.values();\r
+//        return moduleCoverages.toArray(new ModuleCoverage[moduleCoverages.size()]);\r
+    }\r
+\r
+    @Override\r
+    public Object[] getChildren(Object parentElement) {\r
+        if (parentElement instanceof CombinedCoverage) {\r
+            CombinedCoverage coverage = (CombinedCoverage) parentElement;\r
+            Collection<ModuleCoverage> moduleCoverages = coverage.moduleCoverages.values();\r
+            return moduleCoverages.toArray(new ModuleCoverage[moduleCoverages.size()]);\r
+        } else if (parentElement instanceof ModuleCoverage) {\r
+            ModuleCoverage coverage = (ModuleCoverage) parentElement;\r
+            Collection<FunctionCoverage> coverages = coverage.functionCoverages.values();\r
+            return coverages.toArray(new FunctionCoverage[coverages.size()]);\r
+        } else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public Object getParent(Object element) {\r
+        if (element instanceof FunctionCoverage) {\r
+            FunctionCoverage coverage = (FunctionCoverage) element;\r
+            return new ModuleCoverage[] { null };\r
+        } else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public boolean hasChildren(Object element) {\r
+        if (element instanceof CombinedCoverage)\r
+            return !((CombinedCoverage) element).moduleCoverages.isEmpty();\r
+        else if (element instanceof ModuleCoverage)\r
+            return !((ModuleCoverage)element).functionCoverages.isEmpty();\r
+        else\r
+            return false;\r
+    }\r
+    \r
+    @Override\r
+    public String getText(Object element) {\r
+        if (element instanceof Coverage)\r
+            return ((Coverage) element).getIdentifier();\r
+        return super.getText(element);\r
+    }\r
+\r
+    public String getRatio(Object element) {\r
+        if (element instanceof Coverage)\r
+            return formatPercentage(((Coverage) element).getCoverage());\r
+        return "unknown " + element;\r
+    }\r
+\r
+    public String getCovered(Object element) {\r
+        if (element instanceof Coverage)\r
+            return ((Coverage) element).getCoveredCodeSize() + "";\r
+        return "unknown " + element;\r
+    }\r
+\r
+    public String getMissed(Object element) {\r
+        if (element instanceof Coverage)\r
+            return ((Coverage) element).getMissedCodeSize() + "";\r
+        return "unknown " + element;\r
+    }\r
+\r
+    public String getTotal(Object element) {\r
+        if (element instanceof Coverage)\r
+            return ((Coverage) element).getTotalCodeSize() + "";\r
+        return "unknown " + element;\r
+    }\r
+    \r
+    private static final DecimalFormat MAX_PERCENTAGE_STRING = new DecimalFormat("0.0 %");\r
+    \r
+    private static String formatPercentage(double perc) {\r
+        return MAX_PERCENTAGE_STRING.format(perc);\r
+    }\r
+\r
+}\r