X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.tests.modelled.ui%2Fsrc%2Forg%2Fsimantics%2Ftests%2Fmodelled%2Fui%2FSTSCoverageProvider.java;fp=bundles%2Forg.simantics.tests.modelled.ui%2Fsrc%2Forg%2Fsimantics%2Ftests%2Fmodelled%2Fui%2FSTSCoverageProvider.java;h=0ba65ccf898a199d18ceeb3e73230d579da03426;hb=3b5069d0d30e7de27f73d88d5e89d29052291a34;hp=0000000000000000000000000000000000000000;hpb=bf75fd9740858140eac90c18f0bca0aea3893248;p=simantics%2Fplatform.git 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 index 000000000..0ba65ccf8 --- /dev/null +++ b/bundles/org.simantics.tests.modelled.ui/src/org/simantics/tests/modelled/ui/STSCoverageProvider.java @@ -0,0 +1,118 @@ +package org.simantics.tests.modelled.ui; + +import java.text.DecimalFormat; +import java.util.Collection; + +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.Viewer; +import org.simantics.scl.compiler.module.coverage.CombinedCoverage; +import org.simantics.scl.compiler.module.coverage.Coverage; +import org.simantics.scl.compiler.module.coverage.FunctionCoverage; +import org.simantics.scl.compiler.module.coverage.ModuleCoverage; +import org.simantics.tests.modelled.ui.STSTestSuiteModel.STSSuite; +import org.simantics.tests.modelled.ui.STSTestSuiteModel.STSTest; + +public class STSCoverageProvider extends LabelProvider implements ITreeContentProvider { + + private Object input; + + @Override + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + input = newInput; + } + + @Override + public Object[] getElements(Object inputElement) { + CombinedCoverage coverage; + if (input instanceof STSTest) { + STSTest test = (STSTest) input; + coverage = test.getCoverage(); + } else if (input instanceof STSSuite) { + STSSuite suite = (STSSuite) input; + coverage = suite.getCoverage(); + } else { + return new Object[0]; + } + if (coverage == null) + return new Object[0]; + + return new Object[] { coverage }; + +// Collection moduleCoverages = coverage.moduleCoverages.values(); +// return moduleCoverages.toArray(new ModuleCoverage[moduleCoverages.size()]); + } + + @Override + public Object[] getChildren(Object parentElement) { + if (parentElement instanceof CombinedCoverage) { + CombinedCoverage coverage = (CombinedCoverage) parentElement; + Collection moduleCoverages = coverage.moduleCoverages.values(); + return moduleCoverages.toArray(new ModuleCoverage[moduleCoverages.size()]); + } else if (parentElement instanceof ModuleCoverage) { + ModuleCoverage coverage = (ModuleCoverage) parentElement; + Collection coverages = coverage.functionCoverages.values(); + return coverages.toArray(new FunctionCoverage[coverages.size()]); + } else { + return null; + } + } + + @Override + public Object getParent(Object element) { + if (element instanceof FunctionCoverage) { + FunctionCoverage coverage = (FunctionCoverage) element; + return new ModuleCoverage[] { null }; + } else { + return null; + } + } + + @Override + public boolean hasChildren(Object element) { + if (element instanceof CombinedCoverage) + return !((CombinedCoverage) element).moduleCoverages.isEmpty(); + else if (element instanceof ModuleCoverage) + return !((ModuleCoverage)element).functionCoverages.isEmpty(); + else + return false; + } + + @Override + public String getText(Object element) { + if (element instanceof Coverage) + return ((Coverage) element).getIdentifier(); + return super.getText(element); + } + + public String getRatio(Object element) { + if (element instanceof Coverage) + return formatPercentage(((Coverage) element).getCoverage()); + return "unknown " + element; + } + + public String getCovered(Object element) { + if (element instanceof Coverage) + return ((Coverage) element).getCoveredCodeSize() + ""; + return "unknown " + element; + } + + public String getMissed(Object element) { + if (element instanceof Coverage) + return ((Coverage) element).getMissedCodeSize() + ""; + return "unknown " + element; + } + + public String getTotal(Object element) { + if (element instanceof Coverage) + return ((Coverage) element).getTotalCodeSize() + ""; + return "unknown " + element; + } + + private static final DecimalFormat MAX_PERCENTAGE_STRING = new DecimalFormat("0.0 %"); + + private static String formatPercentage(double perc) { + return MAX_PERCENTAGE_STRING.format(perc); + } + +}