aboutsummaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszka@192.168.122.1>2017-08-20 01:55:38 +0200
committerLibravatar OszkarSemerath <oszka@192.168.122.1>2017-08-20 01:55:38 +0200
commit78c806eebaf5b9d50b08768062755f0044cf107f (patch)
tree7db4d1b6a990b2572ed82a747dffac65a1c6fcc5 /Tests
parentnull check before mapping value of a reference (diff)
downloadVIATRA-Generator-78c806eebaf5b9d50b08768062755f0044cf107f.tar.gz
VIATRA-Generator-78c806eebaf5b9d50b08768062755f0044cf107f.tar.zst
VIATRA-Generator-78c806eebaf5b9d50b08768062755f0044cf107f.zip
Alloy Examples
Diffstat (limited to 'Tests')
-rw-r--r--Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/ecore.xmi6
-rw-r--r--Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/fs.xmi3
-rw-r--r--Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend53
3 files changed, 62 insertions, 0 deletions
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/ecore.xmi b/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/ecore.xmi
new file mode 100644
index 00000000..867e5049
--- /dev/null
+++ b/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/ecore.xmi
@@ -0,0 +1,6 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
6 name="init"/>
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/fs.xmi b/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/fs.xmi
new file mode 100644
index 00000000..56879c1a
--- /dev/null
+++ b/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/fs.xmi
@@ -0,0 +1,3 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<FS:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:FS="FS" xsi:schemaLocation="FS FileSytem.ecore"/>
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend
new file mode 100644
index 00000000..e79a6261
--- /dev/null
+++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend
@@ -0,0 +1,53 @@
1package hu.bme.mit.inf.dslreasoner.run
2
3import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
4import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
5import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ModelGenerationMethodBasedGlobalConstraint
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethod
7import org.eclipse.viatra.dse.base.ThreadContext
8
9class FileSystemInconsistencyDetector extends ModelGenerationMethodBasedGlobalConstraint {
10 var PartialInterpretation partialInterpretation
11
12 //unfinishedLowerMultiplicity_root_reference_FileSystem
13 //unfinishedLowerMultiplicity_filesystems_reference_Model
14 var ViatraQueryMatcher<?> filesystem
15 var ViatraQueryMatcher<?> root
16
17 new(ModelGenerationMethod method) {
18 super(method)
19 }
20
21 override init(ThreadContext context) {
22 partialInterpretation = context.model as PartialInterpretation
23
24 try{
25 this.filesystem = method.allPatterns.filter[
26 it.fullyQualifiedName.equals("unfinishedLowerMultiplicity_root_reference_FileSystem")
27 ].head.getMatcher(context.queryEngine)
28
29 this.root = method.allPatterns.filter[
30 it.fullyQualifiedName.equals("unfinishedLowerMultiplicity_filesystems_reference_Model")
31 ].head.getMatcher(context.queryEngine)
32
33 } catch(Exception e) { }
34 }
35
36 override checkGlobalConstraint(ThreadContext context) {
37 var requiredNewObjects =
38 filesystem.countMatches*2 +
39 root.countMatches
40 val availableNewObjects = partialInterpretation.maxNewElements
41 val res = availableNewObjects >= requiredNewObjects
42 //println('''[«availableNewObjects» >= «requiredNewObjects»] = «res»''')
43 return res
44 }
45
46 override createNew() {
47 return new FileSystemInconsistencyDetector(this.method)
48 }
49
50 override getName() {
51 this.class.simpleName
52 }
53}