1 package org.simantics.tests.modelled.utils;
3 import java.util.ArrayList;
5 import java.util.regex.Pattern;
6 import java.util.regex.PatternSyntaxException;
7 import java.util.stream.Collectors;
9 import org.simantics.scl.compiler.module.Module;
10 import org.simantics.scl.compiler.module.coverage.CombinedCoverage;
11 import org.simantics.scl.compiler.module.coverage.CoverageBuilder;
12 import org.simantics.utils.strings.AlphanumComparator;
14 public class ModelledSTSSuite {
17 private List<ModelledSTSTest> children;
18 private String moduleNameFilter;
19 private List<Pattern> moduleNameFilterPatterns = new ArrayList<>();
21 private CoverageBuilder coverageBuilder;
23 ModelledSTSSuite(String name, List<ModelledSTSTest> children, String moduleNameFilter) {
25 this.children = children;
26 this.moduleNameFilter = moduleNameFilter;
27 for (String s : moduleNameFilter.split(",")) {
29 s = s.trim().replaceAll("\\*", "\\\\w*").toLowerCase();
30 getModuleNameFilterPatterns().add(Pattern.compile(s));
31 } catch (PatternSyntaxException e) {
37 public String getName() {
41 public List<ModelledSTSTest> getChildren() {
45 public List<ModelledSTSTest> getSortedChildren() {
46 return new ArrayList<>(children).stream().sorted(ModelledSTSSuite::compareTests).collect(Collectors.toList());
49 private static int compareTests(ModelledSTSTest test1, ModelledSTSTest test2) {
50 if (test1.getPriority() < test2.getPriority())
52 else if (test1.getPriority() > test2.getPriority())
55 return AlphanumComparator.COMPARATOR.compare(test1.getName(), test2.getName());
58 public String getModuleNameFilter() {
59 return moduleNameFilter;
62 public void addCoverage(List<Module> modules) {
63 if (coverageBuilder == null)
64 coverageBuilder = new CoverageBuilder();
65 for (Module module : modules)
66 coverageBuilder.addCoverage(module, true);
69 public CombinedCoverage getCoverage() {
70 if (coverageBuilder == null)
72 return coverageBuilder.getCoverage();
75 public List<Pattern> getModuleNameFilterPatterns() {
76 return moduleNameFilterPatterns;