]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.tests.modelled/src/org/simantics/tests/modelled/TestsGraphUtils.java
Merge commit '0580ea8b675c868685993b0780c9ecc31010f681' into master
[simantics/platform.git] / bundles / org.simantics.tests.modelled / src / org / simantics / tests / modelled / TestsGraphUtils.java
1 package org.simantics.tests.modelled;\r
2 \r
3 import java.io.BufferedReader;\r
4 import java.io.IOException;\r
5 import java.io.StringReader;\r
6 import java.util.ArrayList;\r
7 import java.util.Collection;\r
8 import java.util.List;\r
9 import java.util.regex.Pattern;\r
10 \r
11 import org.simantics.databoard.Bindings;\r
12 import org.simantics.db.Resource;\r
13 import org.simantics.db.WriteGraph;\r
14 import org.simantics.db.common.utils.NameUtils;\r
15 import org.simantics.db.exception.DatabaseException;\r
16 import org.simantics.layer0.Layer0;\r
17 import org.simantics.scl.compiler.commands.CommandSession;\r
18 import org.simantics.scl.compiler.commands.TestScriptExecutor;\r
19 import org.simantics.scl.compiler.module.Module;\r
20 import org.simantics.scl.compiler.module.coverage.CombinedCoverage;\r
21 import org.simantics.scl.compiler.module.coverage.CoverageUtils;\r
22 import org.simantics.scl.compiler.module.options.ModuleCompilationOptions;\r
23 import org.simantics.scl.compiler.module.options.ModuleCompilationOptionsAdvisor;\r
24 import org.simantics.scl.compiler.module.repository.ModuleRepository;\r
25 import org.simantics.scl.compiler.runtime.RuntimeModule;\r
26 import org.simantics.scl.osgi.SCLOsgi;\r
27 import org.simantics.scl.runtime.reporting.SCLReportingHandler;\r
28 import org.simantics.tests.modelled.ontology.TestsResource;\r
29 \r
30 public class TestsGraphUtils {\r
31 \r
32     private static final String STS_TEST_PREFIX = "STSTest";\r
33     private static final String STS_SUITE_PREFIX = "STSSuite";\r
34     \r
35     private TestsGraphUtils() {}\r
36     \r
37     public static Resource createSTSTest(WriteGraph graph, Resource parent) throws DatabaseException {\r
38         String name = NameUtils.findFreshEscapedName(graph, STS_TEST_PREFIX, parent);\r
39         Resource stsTest = graph.newResource();\r
40         \r
41         Layer0 L0 = Layer0.getInstance(graph);\r
42         TestsResource TESTS = TestsResource.getInstance(graph);\r
43         \r
44         graph.claim(parent, L0.ConsistsOf, L0.PartOf, stsTest);\r
45         graph.claim(stsTest, L0.InstanceOf, TESTS.STSTest);\r
46         graph.claimLiteral(stsTest, L0.HasName, name, Bindings.STRING);\r
47         graph.claimLiteral(stsTest, TESTS.STSTest_definition, "", Bindings.STRING);\r
48         return stsTest;\r
49     }\r
50     \r
51     public static Resource createSTSSuite(WriteGraph graph, Resource parent) throws DatabaseException {\r
52         String name = NameUtils.findFreshEscapedName(graph, STS_SUITE_PREFIX, parent);\r
53         Resource stsSuite = graph.newResource();\r
54         \r
55         Layer0 L0 = Layer0.getInstance(graph);\r
56         TestsResource TESTS = TestsResource.getInstance(graph);\r
57         \r
58         graph.claim(parent, L0.ConsistsOf, L0.PartOf, stsSuite);\r
59         graph.claim(stsSuite, L0.InstanceOf, TESTS.STSSuite);\r
60         graph.claimLiteral(stsSuite, L0.HasName, name, Bindings.STRING);\r
61         return stsSuite;\r
62     }\r
63 \r
64     public static CombinedCoverage runSTSTestDefinition(String definition, List<Pattern> moduleNameFilters, SCLReportingHandler handler) throws IOException {\r
65         \r
66 //        ModuleRepository repo = SCLOsgi.MODULE_REPOSITORY;\r
67         ModuleRepository repo = new ModuleRepository(SCLOsgi.SOURCE_REPOSITORY);\r
68         repo.setAdvisor(new ModuleCompilationOptionsAdvisor() {\r
69             \r
70             @Override\r
71             public ModuleCompilationOptions getOptions(String moduleName) {\r
72                 boolean coverage = false;\r
73                 for (Pattern p : moduleNameFilters) {\r
74                     if (p.matcher(moduleName.toLowerCase()).find()) {\r
75                         coverage = true;\r
76                         break;\r
77                     }\r
78                 }\r
79                 return new ModuleCompilationOptions(coverage);\r
80             }\r
81         });\r
82         \r
83         CommandSession session = new CommandSession(repo, handler);\r
84         TestScriptExecutor executor = new TestScriptExecutor(session, new BufferedReader(new StringReader(definition)), handler);\r
85         try {\r
86             executor.execute();\r
87         } catch (Throwable t) {\r
88             t.printStackTrace();\r
89         }\r
90         Collection<RuntimeModule> runtimeModules = session.getRuntimeEnvironment().getRuntimeModules();\r
91         List<Module> modules = new ArrayList<>(runtimeModules.size());\r
92         for (RuntimeModule module : runtimeModules) {\r
93             modules.add(module.getModule());\r
94         }\r
95         CombinedCoverage coverage = CoverageUtils.getCoverage(modules);\r
96         return coverage;\r
97     }\r
98 }\r