X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.tests.modelled%2Fsrc%2Forg%2Fsimantics%2Ftests%2Fmodelled%2Futils%2FModelledSTSSuite.java;fp=bundles%2Forg.simantics.tests.modelled%2Fsrc%2Forg%2Fsimantics%2Ftests%2Fmodelled%2Futils%2FModelledSTSSuite.java;h=b856787cfc560c4c634e471909cdc86e48d49bdb;hb=f03893d9b643eae3f03debf7a656edbfa5b9b501;hp=0000000000000000000000000000000000000000;hpb=51006ffec13cbf8e0d9c8b07212d69478e4bdd4e;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/utils/ModelledSTSSuite.java b/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/utils/ModelledSTSSuite.java new file mode 100644 index 000000000..b856787cf --- /dev/null +++ b/bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/utils/ModelledSTSSuite.java @@ -0,0 +1,79 @@ +package org.simantics.tests.modelled.utils; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; +import java.util.stream.Collectors; + +import org.simantics.scl.compiler.module.Module; +import org.simantics.scl.compiler.module.coverage.CombinedCoverage; +import org.simantics.scl.compiler.module.coverage.CoverageBuilder; +import org.simantics.utils.strings.AlphanumComparator; + +public class ModelledSTSSuite { + + private String name; + private List children; + private String moduleNameFilter; + private List moduleNameFilterPatterns = new ArrayList<>(); + + private CoverageBuilder coverageBuilder; + + ModelledSTSSuite(String name, List children, String moduleNameFilter) { + this.name = name; + this.children = children; + this.moduleNameFilter = moduleNameFilter; + for (String s : moduleNameFilter.split(",")) { + try { + s = s.trim().replaceAll("\\*", "\\\\w*").toLowerCase(); + getModuleNameFilterPatterns().add(Pattern.compile(s)); + } catch (PatternSyntaxException e) { + e.printStackTrace(); + } + } + } + + public String getName() { + return name; + } + + public List getChildren() { + return children; + } + + public List getSortedChildren() { + return new ArrayList<>(children).stream().sorted(ModelledSTSSuite::compareTests).collect(Collectors.toList()); + } + + private static int compareTests(ModelledSTSTest test1, ModelledSTSTest test2) { + if (test1.getPriority() < test2.getPriority()) + return -1; + else if (test1.getPriority() > test2.getPriority()) + return 1; + else + return AlphanumComparator.COMPARATOR.compare(test1.getName(), test2.getName()); + } + + public String getModuleNameFilter() { + return moduleNameFilter; + } + + public void addCoverage(List modules) { + if (coverageBuilder == null) + coverageBuilder = new CoverageBuilder(); + for (Module module : modules) + coverageBuilder.addCoverage(module, true); + } + + public CombinedCoverage getCoverage() { + if (coverageBuilder == null) + return null; + return coverageBuilder.getCoverage(); + } + + public List getModuleNameFilterPatterns() { + return moduleNameFilterPatterns; + } + +}