diff options
author | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2019-02-01 16:03:30 -0500 |
---|---|---|
committer | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2020-06-07 19:06:28 -0400 |
commit | 57e614aabedc176ba9965d0ca5e6daa23c5f4758 (patch) | |
tree | 16806454dff463419af99b14f6abfab3d1fa5291 /Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/icse/GeneralTest.xtend | |
parent | FAM MM transformation works (diff) | |
download | VIATRA-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.xtend | 89 |
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 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.vampire.icse | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver | ||
4 | import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration | ||
5 | import hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns | ||
6 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic | ||
7 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration | ||
8 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor | ||
9 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner | ||
10 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult | ||
11 | import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore | ||
12 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic | ||
13 | import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration | ||
14 | import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor | ||
15 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic | ||
16 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace | ||
17 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace | ||
18 | import java.util.List | ||
19 | import org.eclipse.emf.ecore.EAttribute | ||
20 | import org.eclipse.emf.ecore.EClass | ||
21 | import org.eclipse.emf.ecore.EEnum | ||
22 | import org.eclipse.emf.ecore.EEnumLiteral | ||
23 | import org.eclipse.emf.ecore.EObject | ||
24 | import org.eclipse.emf.ecore.EPackage | ||
25 | import org.eclipse.emf.ecore.EReference | ||
26 | import org.eclipse.emf.ecore.resource.Resource | ||
27 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl | ||
28 | import org.eclipse.viatra.query.runtime.api.IQueryGroup | ||
29 | |||
30 | class 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 | ||