123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- /*
- * generated by Xtext 2.10.0
- */
- package be.uantwerpen.ansymo.semanticadaptation.tests
- import org.eclipse.xtext.junit4.InjectWith
- import org.eclipse.xtext.junit4.XtextRunner
- import org.junit.runner.RunWith
- import java.io.FileReader
- import static extension com.google.common.io.CharStreams.*
- import java.util.ArrayList
- import org.eclipse.emf.ecore.EObject
- import org.eclipse.emf.common.util.BasicEList
- import org.eclipse.emf.ecore.util.EDataTypeEList
- import org.eclipse.emf.ecore.util.EObjectEList
- import org.eclipse.emf.common.util.EList
- import org.eclipse.xtext.generator.InMemoryFileSystemAccess
- import javax.inject.Inject
- import java.io.File
- import org.eclipse.emf.ecore.resource.ResourceSet
- @RunWith(XtextRunner)
- @InjectWith(SemanticAdaptationInjectorProvider)
- abstract class AbstractSemanticAdaptationTest {
-
- ArrayList<Integer> visited = new ArrayList<Integer>
-
- /*@Inject
- private InMemoryFileSystemAccess fsa
-
- def __setUp(File dir) {
- for (File f : dir.listFiles()) {
- if (f.name.endsWith(".sa") && !fsa.isFile(f.name)) {
- //println("adding " + f.name)
- fsa.generateFile(f.name, new FileReader(f).readLines.join("\n"))
- }
- }
- //println(fsa.allFiles.keySet)
- }*/
-
- /**
- * reads a file from the permanent file system
- */
- def String readFile(String basefilename) {
- val f = new File(basefilename)
- //println("testing " + f.name)
- //__setUp(f.parentFile)
- //return fsa.readTextFile(f.name).toString()
- return new FileReader(f).readLines.join("\n")
- }
-
- def print_ast(EObject root) {
- visited.clear
- println(root.eClass.name)
- print_ast_element(root, 0)
- }
-
- private def void print_ast_element(EObject element, int indent) {
- if (visited.contains(element.hashCode)) {
- return
- }
- visited.add(element.hashCode)
- element.eClass.EAllStructuralFeatures.forEach[f |
- val feature = element.eGet(f)
- if (feature != null) {
- if (feature instanceof EList<?>) {
- (feature as EObjectEList<?>).forEach[e |
- print(ind(indent+1) + f.name + "(" + feature.indexOf(e) + "): ")
- //println("List<" + f.EType.name + ">")
- if (feature instanceof EObjectEList<?>) {
- print((e as EObject).class.simpleName.substring(0, (e as EObject).class.simpleName.length-4))
- printObject((e as EObject), indent+1)
- } else if (feature instanceof EDataTypeEList<?>) { // in case of enums
- println(e.class.simpleName + " = " + e)
- } else if (feature instanceof BasicEList<?>) {
- throw new Exception(f.name + " other type of list: " + feature.class.name)
- }
- ]
- } else {
- print(ind(indent+1) + f.name + ": ")
- if (feature instanceof EObject) {
- print(feature.class.simpleName.substring(0, feature.class.simpleName.length-4))
- printObject((feature as EObject), indent+1)
- } else if (feature instanceof String) {
- println(feature.class.simpleName + " = '" + feature + "'")
- } else {
- println(feature.class.simpleName + " = " + feature)
- }
- }
- } else { // filter out null values
- print(ind(indent+1) + f.name + ": ")
- println("null")
- }
- ]
- return
- }
-
- private def void printObject(EObject element, int indent) {
- if (visited.contains(element.hashCode)) {
- val namelist = element.eClass.EAllStructuralFeatures.filter(e | e.name.equals("name"))
- if (namelist.length == 0) {
- throw new Exception("Reference " + element + " does not have a 'name' attribute")
- }
- println(" -> " + element.eGet(element.eClass.EAllStructuralFeatures.filter(e | e.name.equals("name")).get(0)))
- } else {
- println()
- print_ast_element(element, indent)
- }
- return
- }
-
- private def ind(int indent) {
- var s = ""
- for (var i = 0 ; i < indent ; i++) {
- s += "| "
- }
- return s
- }
- }
|