aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-02-01 16:03:30 -0500
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-06-07 19:06:28 -0400
commit57e614aabedc176ba9965d0ca5e6daa23c5f4758 (patch)
tree16806454dff463419af99b14f6abfab3d1fa5291 /Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend
parentFAM MM transformation works (diff)
downloadVIATRA-Generator-57e614aabedc176ba9965d0ca5e6daa23c5f4758.tar.gz
VIATRA-Generator-57e614aabedc176ba9965d0ca5e6daa23c5f4758.tar.zst
VIATRA-Generator-57e614aabedc176ba9965d0ca5e6daa23c5f4758.zip
Fix FAM Test. Begin Grammar Fix.
Diffstat (limited to 'Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend')
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend89
1 files changed, 89 insertions, 0 deletions
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend
new file mode 100644
index 00000000..2c53d181
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend
@@ -0,0 +1,89 @@
1package ca.mcgill.ecse.dslreasoner.vampire.icse
2
3import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver
4import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration
5import hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns
6import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
8import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
9import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
10import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult
11import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore
12import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic
13import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration
14import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor
15import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic
16import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
17import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
18import java.util.List
19import org.eclipse.emf.ecore.EAttribute
20import org.eclipse.emf.ecore.EClass
21import org.eclipse.emf.ecore.EEnum
22import org.eclipse.emf.ecore.EEnumLiteral
23import org.eclipse.emf.ecore.EObject
24import org.eclipse.emf.ecore.EPackage
25import org.eclipse.emf.ecore.EReference
26import org.eclipse.emf.ecore.resource.Resource
27import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
28import org.eclipse.viatra.query.runtime.api.IQueryGroup
29
30class GeneralTest {
31 def static String createAndSolveProblem(EcoreMetamodelDescriptor metamodel, List<EObject> partialModel, ViatraQuerySetDescriptor queries, FileSystemWorkspace workspace) {
32 val Ecore2Logic ecore2Logic = new Ecore2Logic
33 val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic)
34 val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic)
35 val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic
36
37 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration())
38 var problem = instanceModel2Logic.transform(modelGenerationProblem,partialModel).output
39 problem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration).output
40
41 workspace.writeModel(problem, "Fam.logicproblem")
42
43 println("Problem created")
44
45 var LogicResult solution
46 var LogicReasoner reasoner
47 //*
48 reasoner = new VampireSolver
49 val vampireConfig = new VampireSolverConfiguration => [
50 //add configuration things, in config file first
51 it.writeToFile = true
52 ]
53
54 solution = reasoner.solve(problem, vampireConfig, workspace)
55
56 println("Problem solved")
57 }
58
59 def static loadMetamodel(EPackage pckg) {
60 val List<EClass> classes = pckg.getEClassifiers.filter(EClass).toList
61 val List<EEnum> enums = pckg.getEClassifiers.filter(EEnum).toList
62 val List<EEnumLiteral> literals = enums.map[getELiterals].flatten.toList
63 val List<EReference> references = classes.map[getEReferences].flatten.toList
64 val List<EAttribute> attributes = classes.map[getEAttributes].flatten.toList
65 return new EcoreMetamodelDescriptor(classes,#{},false,enums,literals,references,attributes)
66 }
67
68 def static loadPartialModel(ReasonerWorkspace inputs, String path) {
69 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
70 inputs.readModel(EObject,path).eResource.contents
71// inputs.readModel(EObject,"FamInstance.xmi").eResource.allContents.toList
72 }
73
74 def static loadQueries(EcoreMetamodelDescriptor metamodel, IQueryGroup i) {
75 val patterns = i.specifications.toList
76 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet
77 val derivedFeatures = emptyMap
78 //NO DERIVED FEATURES
79// val derivedFeatures = new LinkedHashMap
80// derivedFeatures.put(i.type,metamodel.attributes.filter[it.name == "type"].head)
81// derivedFeatures.put(i.model,metamodel.references.filter[it.name == "model"].head)
82 val res = new ViatraQuerySetDescriptor(
83 patterns,
84 wfPatterns,
85 derivedFeatures
86 )
87 return res
88 }
89} \ No newline at end of file