--- /dev/null
+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<ModelledSTSTest> children;
+ private String moduleNameFilter;
+ private List<Pattern> moduleNameFilterPatterns = new ArrayList<>();
+
+ private CoverageBuilder coverageBuilder;
+
+ ModelledSTSSuite(String name, List<ModelledSTSTest> 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<ModelledSTSTest> getChildren() {
+ return children;
+ }
+
+ public List<ModelledSTSTest> 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<Module> 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<Pattern> getModuleNameFilterPatterns() {
+ return moduleNameFilterPatterns;
+ }
+
+}