diff options
author | Kristóf Marussy <kristof@marussy.com> | 2021-10-19 03:36:26 +0200 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2021-10-19 03:36:26 +0200 |
commit | 663274763e56b228efe07363b8ede4ce7bebc251 (patch) | |
tree | da6f8e0404cc03152cad84d8b9dfc8c63f7a6dbf /language | |
parent | nodeIter moved from private field inside the method (diff) | |
download | refinery-663274763e56b228efe07363b8ede4ce7bebc251.tar.gz refinery-663274763e56b228efe07363b8ede4ce7bebc251.tar.zst refinery-663274763e56b228efe07363b8ede4ce7bebc251.zip |
chore: remove builtin library xtext dependency
Diffstat (limited to 'language')
14 files changed, 85 insertions, 256 deletions
diff --git a/language/build.gradle b/language/build.gradle index 85b0902f..f2b20ab5 100644 --- a/language/build.gradle +++ b/language/build.gradle | |||
@@ -12,6 +12,7 @@ dependencies { | |||
12 | api "org.eclipse.emf:org.eclipse.emf.ecore:${ecoreVersion}" | 12 | api "org.eclipse.emf:org.eclipse.emf.ecore:${ecoreVersion}" |
13 | api project(':refinery-language-model') | 13 | api project(':refinery-language-model') |
14 | testFixturesApi "org.eclipse.xtext:org.eclipse.xtext.testing:${xtextVersion}" | 14 | testFixturesApi "org.eclipse.xtext:org.eclipse.xtext.testing:${xtextVersion}" |
15 | testFixturesApi testFixtures(project(':refinery-language-model')) | ||
15 | mwe2 "org.eclipse.xtext:org.eclipse.xtext.common.types:${xtextVersion}" | 16 | mwe2 "org.eclipse.xtext:org.eclipse.xtext.common.types:${xtextVersion}" |
16 | mwe2 "org.eclipse.xtext:org.eclipse.xtext.xtext.generator:${xtextVersion}" | 17 | mwe2 "org.eclipse.xtext:org.eclipse.xtext.xtext.generator:${xtextVersion}" |
17 | mwe2 "org.eclipse.xtext:xtext-antlr-generator:${xtextAntlrGeneratorVersion}" | 18 | mwe2 "org.eclipse.xtext:xtext-antlr-generator:${xtextAntlrGeneratorVersion}" |
diff --git a/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java b/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java index f49069a5..d753a119 100644 --- a/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java +++ b/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java | |||
@@ -3,11 +3,14 @@ | |||
3 | */ | 3 | */ |
4 | package tools.refinery.language; | 4 | package tools.refinery.language; |
5 | 5 | ||
6 | import org.eclipse.emf.ecore.EPackage; | 6 | import org.eclipse.emf.ecore.resource.Resource; |
7 | import org.eclipse.xtext.resource.IResourceFactory; | ||
8 | import org.eclipse.xtext.resource.IResourceServiceProvider; | ||
7 | 9 | ||
10 | import com.google.inject.Guice; | ||
8 | import com.google.inject.Injector; | 11 | import com.google.inject.Injector; |
9 | 12 | ||
10 | import tools.refinery.language.model.problem.ProblemPackage; | 13 | import tools.refinery.language.model.ProblemEMFSetup; |
11 | 14 | ||
12 | /** | 15 | /** |
13 | * Initialization support for running Xtext languages without Equinox extension | 16 | * Initialization support for running Xtext languages without Equinox extension |
@@ -20,15 +23,22 @@ public class ProblemStandaloneSetup extends ProblemStandaloneSetupGenerated { | |||
20 | } | 23 | } |
21 | 24 | ||
22 | @Override | 25 | @Override |
23 | // Here we can't rely on java.util.HashMap#computeIfAbsent, because | ||
24 | // org.eclipse.emf.ecore.impl.EPackageRegistryImpl#containsKey is overridden | ||
25 | // without also overriding computeIfAbsent. We must make sure to call the | ||
26 | // overridden containsKey implementation. | ||
27 | @SuppressWarnings("squid:S3824") | ||
28 | public Injector createInjectorAndDoEMFRegistration() { | 26 | public Injector createInjectorAndDoEMFRegistration() { |
29 | if (!EPackage.Registry.INSTANCE.containsKey(ProblemPackage.eNS_URI)) { | 27 | ProblemEMFSetup.doEMFRegistration(); |
30 | EPackage.Registry.INSTANCE.put(ProblemPackage.eNS_URI, ProblemPackage.eINSTANCE); | 28 | var xmiInjector = createXmiInjector(); |
31 | } | 29 | registerXmiInjector(xmiInjector); |
32 | return super.createInjectorAndDoEMFRegistration(); | 30 | return super.createInjectorAndDoEMFRegistration(); |
33 | } | 31 | } |
32 | |||
33 | protected Injector createXmiInjector() { | ||
34 | return Guice.createInjector(new ProblemXmiRuntimeModule()); | ||
35 | } | ||
36 | |||
37 | protected void registerXmiInjector(Injector injector) { | ||
38 | IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class); | ||
39 | IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class); | ||
40 | |||
41 | Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(ProblemEMFSetup.XMI_RESOURCE_EXTENSION, resourceFactory); | ||
42 | IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put(ProblemEMFSetup.XMI_RESOURCE_EXTENSION, serviceProvider); | ||
43 | } | ||
34 | } | 44 | } |
diff --git a/language/src/main/java/tools/refinery/language/ProblemUtil.java b/language/src/main/java/tools/refinery/language/ProblemUtil.java deleted file mode 100644 index ae2efc3d..00000000 --- a/language/src/main/java/tools/refinery/language/ProblemUtil.java +++ /dev/null | |||
@@ -1,94 +0,0 @@ | |||
1 | package tools.refinery.language; | ||
2 | |||
3 | import java.util.ArrayDeque; | ||
4 | import java.util.Collection; | ||
5 | import java.util.Deque; | ||
6 | import java.util.HashSet; | ||
7 | import java.util.Optional; | ||
8 | import java.util.Set; | ||
9 | |||
10 | import org.eclipse.emf.ecore.EObject; | ||
11 | import org.eclipse.emf.ecore.resource.Resource; | ||
12 | |||
13 | import com.google.common.collect.ImmutableList; | ||
14 | |||
15 | import tools.refinery.language.model.problem.ClassDeclaration; | ||
16 | import tools.refinery.language.model.problem.Node; | ||
17 | import tools.refinery.language.model.problem.Problem; | ||
18 | import tools.refinery.language.model.problem.ProblemPackage; | ||
19 | import tools.refinery.language.model.problem.ReferenceDeclaration; | ||
20 | import tools.refinery.language.model.problem.Relation; | ||
21 | import tools.refinery.language.model.problem.Variable; | ||
22 | import tools.refinery.language.scoping.ProblemGlobalScopeProvider; | ||
23 | |||
24 | public final class ProblemUtil { | ||
25 | private ProblemUtil() { | ||
26 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
27 | } | ||
28 | |||
29 | public static final String NODE_CLASS_NAME = "node"; | ||
30 | |||
31 | public static boolean isSingletonVariable(Variable variable) { | ||
32 | return variable.eContainingFeature() == ProblemPackage.Literals.VARIABLE_OR_NODE_ARGUMENT__SINGLETON_VARIABLE; | ||
33 | } | ||
34 | |||
35 | public static boolean isUniqueNode(Node node) { | ||
36 | var containingFeature = node.eContainingFeature(); | ||
37 | return containingFeature == ProblemPackage.Literals.UNIQUE_DECLARATION__NODES | ||
38 | || containingFeature == ProblemPackage.Literals.ENUM_DECLARATION__LITERALS; | ||
39 | } | ||
40 | |||
41 | public static boolean isNewNode(Node node) { | ||
42 | return node.eContainingFeature() == ProblemPackage.Literals.CLASS_DECLARATION__NEW_NODE; | ||
43 | } | ||
44 | |||
45 | public static Optional<Problem> getBuiltInLibrary(EObject context) { | ||
46 | return Optional.ofNullable(context.eResource()).map(Resource::getResourceSet) | ||
47 | .map(resourceSet -> resourceSet.getResource(ProblemGlobalScopeProvider.BULTIN_LIBRARY_URI, true)) | ||
48 | .map(Resource::getContents).filter(contents -> !contents.isEmpty()).map(contents -> contents.get(0)) | ||
49 | .filter(Problem.class::isInstance).map(Problem.class::cast); | ||
50 | } | ||
51 | |||
52 | public static boolean isBuiltIn(EObject eObject) { | ||
53 | if (eObject != null) { | ||
54 | var eResource = eObject.eResource(); | ||
55 | if (eResource != null) { | ||
56 | return ProblemGlobalScopeProvider.BULTIN_LIBRARY_URI.equals(eResource.getURI()); | ||
57 | } | ||
58 | } | ||
59 | return false; | ||
60 | } | ||
61 | |||
62 | public static Optional<ClassDeclaration> getNodeClassDeclaration(EObject context) { | ||
63 | return getBuiltInLibrary(context).flatMap(problem -> problem.getStatements().stream() | ||
64 | .filter(ClassDeclaration.class::isInstance).map(ClassDeclaration.class::cast) | ||
65 | .filter(declaration -> NODE_CLASS_NAME.equals(declaration.getName())).findFirst()); | ||
66 | } | ||
67 | |||
68 | public static Collection<ClassDeclaration> getSuperclassesAndSelf(ClassDeclaration classDeclaration) { | ||
69 | Set<ClassDeclaration> found = new HashSet<>(); | ||
70 | getNodeClassDeclaration(classDeclaration).ifPresent(found::add); | ||
71 | Deque<ClassDeclaration> queue = new ArrayDeque<>(); | ||
72 | queue.addLast(classDeclaration); | ||
73 | while (!queue.isEmpty()) { | ||
74 | ClassDeclaration current = queue.removeFirst(); | ||
75 | if (!found.contains(current)) { | ||
76 | found.add(current); | ||
77 | for (Relation superType : current.getSuperTypes()) { | ||
78 | if (superType instanceof ClassDeclaration superDeclaration) { | ||
79 | queue.addLast(superDeclaration); | ||
80 | } | ||
81 | } | ||
82 | } | ||
83 | } | ||
84 | return found; | ||
85 | } | ||
86 | |||
87 | public static Collection<ReferenceDeclaration> getAllReferenceDeclarations(ClassDeclaration classDeclaration) { | ||
88 | ImmutableList.Builder<ReferenceDeclaration> builder = ImmutableList.builder(); | ||
89 | for (ClassDeclaration superclass : getSuperclassesAndSelf(classDeclaration)) { | ||
90 | builder.addAll(superclass.getReferenceDeclarations()); | ||
91 | } | ||
92 | return builder.build(); | ||
93 | } | ||
94 | } | ||
diff --git a/language/src/main/java/tools/refinery/language/ProblemXmiRuntimeModule.java b/language/src/main/java/tools/refinery/language/ProblemXmiRuntimeModule.java new file mode 100644 index 00000000..03a33bee --- /dev/null +++ b/language/src/main/java/tools/refinery/language/ProblemXmiRuntimeModule.java | |||
@@ -0,0 +1,35 @@ | |||
1 | package tools.refinery.language; | ||
2 | |||
3 | import org.eclipse.xtext.naming.IQualifiedNameConverter; | ||
4 | import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy; | ||
5 | import org.eclipse.xtext.resource.IResourceFactory; | ||
6 | import org.eclipse.xtext.resource.generic.AbstractGenericResourceRuntimeModule; | ||
7 | |||
8 | import tools.refinery.language.model.ProblemEMFSetup; | ||
9 | import tools.refinery.language.naming.ProblemQualifiedNameConverter; | ||
10 | import tools.refinery.language.resource.ProblemResourceDescriptionStrategy; | ||
11 | import tools.refinery.language.resource.ProblemXmiResourceFactory; | ||
12 | |||
13 | public class ProblemXmiRuntimeModule extends AbstractGenericResourceRuntimeModule { | ||
14 | @Override | ||
15 | protected String getLanguageName() { | ||
16 | return "tools.refinery.language.ProblemXmi"; | ||
17 | } | ||
18 | |||
19 | @Override | ||
20 | protected String getFileExtensions() { | ||
21 | return ProblemEMFSetup.XMI_RESOURCE_EXTENSION; | ||
22 | } | ||
23 | |||
24 | public Class<? extends IResourceFactory> bindIResourceFactory() { | ||
25 | return ProblemXmiResourceFactory.class; | ||
26 | } | ||
27 | |||
28 | public Class<? extends IQualifiedNameConverter> bindIQualifiedNameConverter() { | ||
29 | return ProblemQualifiedNameConverter.class; | ||
30 | } | ||
31 | |||
32 | public Class<? extends IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() { | ||
33 | return ProblemResourceDescriptionStrategy.class; | ||
34 | } | ||
35 | } | ||
diff --git a/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java b/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java index f6a3ec75..b51de05d 100644 --- a/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java +++ b/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java | |||
@@ -4,7 +4,7 @@ import org.eclipse.emf.ecore.EObject; | |||
4 | import org.eclipse.xtext.resource.DefaultLocationInFileProvider; | 4 | import org.eclipse.xtext.resource.DefaultLocationInFileProvider; |
5 | import org.eclipse.xtext.util.ITextRegion; | 5 | import org.eclipse.xtext.util.ITextRegion; |
6 | 6 | ||
7 | import tools.refinery.language.ProblemUtil; | 7 | import tools.refinery.language.model.ProblemUtil; |
8 | import tools.refinery.language.model.problem.ImplicitVariable; | 8 | import tools.refinery.language.model.problem.ImplicitVariable; |
9 | import tools.refinery.language.model.problem.Node; | 9 | import tools.refinery.language.model.problem.Node; |
10 | 10 | ||
diff --git a/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java b/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java index c5dea671..e745b6a5 100644 --- a/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java +++ b/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java | |||
@@ -12,7 +12,7 @@ import org.eclipse.xtext.util.IAcceptor; | |||
12 | import com.google.inject.Inject; | 12 | import com.google.inject.Inject; |
13 | import com.google.inject.Singleton; | 13 | import com.google.inject.Singleton; |
14 | 14 | ||
15 | import tools.refinery.language.ProblemUtil; | 15 | import tools.refinery.language.model.ProblemUtil; |
16 | import tools.refinery.language.model.problem.NamedElement; | 16 | import tools.refinery.language.model.problem.NamedElement; |
17 | import tools.refinery.language.model.problem.Node; | 17 | import tools.refinery.language.model.problem.Node; |
18 | import tools.refinery.language.model.problem.Problem; | 18 | import tools.refinery.language.model.problem.Problem; |
diff --git a/language/src/main/java/tools/refinery/language/resource/ProblemXmiResourceFactory.java b/language/src/main/java/tools/refinery/language/resource/ProblemXmiResourceFactory.java new file mode 100644 index 00000000..68aa6016 --- /dev/null +++ b/language/src/main/java/tools/refinery/language/resource/ProblemXmiResourceFactory.java | |||
@@ -0,0 +1,16 @@ | |||
1 | package tools.refinery.language.resource; | ||
2 | |||
3 | import org.eclipse.emf.common.util.URI; | ||
4 | import org.eclipse.emf.ecore.resource.Resource; | ||
5 | import org.eclipse.xtext.resource.IResourceFactory; | ||
6 | |||
7 | import tools.refinery.language.model.problem.util.ProblemResourceFactoryImpl; | ||
8 | |||
9 | public class ProblemXmiResourceFactory implements IResourceFactory { | ||
10 | private Resource.Factory problemResourceFactory = new ProblemResourceFactoryImpl(); | ||
11 | |||
12 | @Override | ||
13 | public Resource createResource(URI uri) { | ||
14 | return problemResourceFactory.createResource(uri); | ||
15 | } | ||
16 | } | ||
diff --git a/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java b/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java index a21c3bd2..b582d16b 100644 --- a/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java +++ b/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java | |||
@@ -6,20 +6,13 @@ import org.eclipse.emf.common.util.URI; | |||
6 | import org.eclipse.emf.ecore.resource.Resource; | 6 | import org.eclipse.emf.ecore.resource.Resource; |
7 | import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider; | 7 | import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider; |
8 | 8 | ||
9 | public class ProblemGlobalScopeProvider extends ImportUriGlobalScopeProvider { | 9 | import tools.refinery.language.model.ProblemUtil; |
10 | public static final String BUILTIN_LIBRARY_NAME = "builtin"; | ||
11 | |||
12 | public static final URI BULTIN_LIBRARY_URI = getLibraryUri(BUILTIN_LIBRARY_NAME); | ||
13 | 10 | ||
11 | public class ProblemGlobalScopeProvider extends ImportUriGlobalScopeProvider { | ||
14 | @Override | 12 | @Override |
15 | protected LinkedHashSet<URI> getImportedUris(Resource resource) { | 13 | protected LinkedHashSet<URI> getImportedUris(Resource resource) { |
16 | LinkedHashSet<URI> importedUris = new LinkedHashSet<>(); | 14 | LinkedHashSet<URI> importedUris = new LinkedHashSet<>(); |
17 | importedUris.add(BULTIN_LIBRARY_URI); | 15 | importedUris.add(ProblemUtil.BUILTIN_LIBRARY_URI); |
18 | return importedUris; | 16 | return importedUris; |
19 | } | 17 | } |
20 | |||
21 | private static URI getLibraryUri(String libraryName) { | ||
22 | return URI.createURI(ProblemGlobalScopeProvider.class.getClassLoader() | ||
23 | .getResource("tools/refinery/" + libraryName + ".problem").toString()); | ||
24 | } | ||
25 | } | 18 | } |
diff --git a/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java b/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java index 05a3bcf9..85797025 100644 --- a/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java +++ b/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java | |||
@@ -13,9 +13,11 @@ import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider; | |||
13 | 13 | ||
14 | import com.google.inject.Inject; | 14 | import com.google.inject.Inject; |
15 | 15 | ||
16 | import tools.refinery.language.model.ProblemUtil; | ||
17 | |||
16 | public class ProblemLocalScopeProvider extends ImportedNamespaceAwareLocalScopeProvider { | 18 | public class ProblemLocalScopeProvider extends ImportedNamespaceAwareLocalScopeProvider { |
17 | private static final QualifiedName BUILTIN_LIBRARY_QUALIFIED_NAME = QualifiedName | 19 | private static final QualifiedName BUILTIN_LIBRARY_QUALIFIED_NAME = QualifiedName |
18 | .create(ProblemGlobalScopeProvider.BUILTIN_LIBRARY_NAME); | 20 | .create(ProblemUtil.BUILTIN_LIBRARY_NAME); |
19 | 21 | ||
20 | @Inject | 22 | @Inject |
21 | private IResourceDescriptionsProvider resourceDescriptionsProvider; | 23 | private IResourceDescriptionsProvider resourceDescriptionsProvider; |
diff --git a/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java b/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java index 61a3c8f9..86b39dbc 100644 --- a/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java +++ b/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java | |||
@@ -12,7 +12,7 @@ import org.eclipse.xtext.EcoreUtil2; | |||
12 | import org.eclipse.xtext.scoping.IScope; | 12 | import org.eclipse.xtext.scoping.IScope; |
13 | import org.eclipse.xtext.scoping.Scopes; | 13 | import org.eclipse.xtext.scoping.Scopes; |
14 | 14 | ||
15 | import tools.refinery.language.ProblemUtil; | 15 | import tools.refinery.language.model.ProblemUtil; |
16 | import tools.refinery.language.model.problem.ClassDeclaration; | 16 | import tools.refinery.language.model.problem.ClassDeclaration; |
17 | import tools.refinery.language.model.problem.ExistentialQuantifier; | 17 | import tools.refinery.language.model.problem.ExistentialQuantifier; |
18 | import tools.refinery.language.model.problem.PredicateDefinition; | 18 | import tools.refinery.language.model.problem.PredicateDefinition; |
diff --git a/language/src/main/resources/tools/refinery/builtin.problem b/language/src/main/resources/tools/refinery/builtin.problem deleted file mode 100644 index 7c4f6685..00000000 --- a/language/src/main/resources/tools/refinery/builtin.problem +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | problem builtin. | ||
2 | |||
3 | abstract class node { | ||
4 | node[] equals opposite equals | ||
5 | } | ||
6 | |||
7 | pred exists(node node). | ||
8 | |||
9 | abstract class domain extends node. | ||
10 | |||
11 | abstract class data extends node. | ||
12 | |||
13 | enum bool { | ||
14 | true, false | ||
15 | } | ||
16 | |||
17 | class real extends data. | ||
18 | |||
19 | class int extends data. | ||
20 | |||
21 | class string extends data. | ||
diff --git a/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.xtend b/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.xtend index 9bd728d6..99cf0a86 100644 --- a/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.xtend +++ b/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.xtend | |||
@@ -10,6 +10,7 @@ import org.eclipse.xtext.testing.util.ParseHelper | |||
10 | import org.junit.jupiter.api.Test | 10 | import org.junit.jupiter.api.Test |
11 | import org.junit.jupiter.api.^extension.ExtendWith | 11 | import org.junit.jupiter.api.^extension.ExtendWith |
12 | import tools.refinery.language.model.problem.Problem | 12 | import tools.refinery.language.model.problem.Problem |
13 | import tools.refinery.language.model.tests.ProblemTestUtil | ||
13 | 14 | ||
14 | import static org.hamcrest.MatcherAssert.assertThat | 15 | import static org.hamcrest.MatcherAssert.assertThat |
15 | import static org.hamcrest.Matchers.* | 16 | import static org.hamcrest.Matchers.* |
@@ -19,10 +20,10 @@ import static org.hamcrest.Matchers.* | |||
19 | class ProblemParsingTest { | 20 | class ProblemParsingTest { |
20 | @Inject | 21 | @Inject |
21 | ParseHelper<Problem> parseHelper | 22 | ParseHelper<Problem> parseHelper |
22 | 23 | ||
23 | @Inject | 24 | @Inject |
24 | extension ProblemTestUtil | 25 | extension ProblemTestUtil |
25 | 26 | ||
26 | @Test | 27 | @Test |
27 | def void exampleTest() { | 28 | def void exampleTest() { |
28 | val it = parseHelper.parse(''' | 29 | val it = parseHelper.parse(''' |
diff --git a/language/src/test/java/tools/refinery/language/tests/ProblemTestUtil.xtend b/language/src/test/java/tools/refinery/language/tests/ProblemTestUtil.xtend deleted file mode 100644 index 46418892..00000000 --- a/language/src/test/java/tools/refinery/language/tests/ProblemTestUtil.xtend +++ /dev/null | |||
@@ -1,114 +0,0 @@ | |||
1 | package tools.refinery.language.tests | ||
2 | |||
3 | import tools.refinery.language.ProblemUtil | ||
4 | import tools.refinery.language.model.problem.Argument | ||
5 | import tools.refinery.language.model.problem.Assertion | ||
6 | import tools.refinery.language.model.problem.AssertionArgument | ||
7 | import tools.refinery.language.model.problem.Atom | ||
8 | import tools.refinery.language.model.problem.ClassDeclaration | ||
9 | import tools.refinery.language.model.problem.Conjunction | ||
10 | import tools.refinery.language.model.problem.EnumDeclaration | ||
11 | import tools.refinery.language.model.problem.Literal | ||
12 | import tools.refinery.language.model.problem.NegativeLiteral | ||
13 | import tools.refinery.language.model.problem.Node | ||
14 | import tools.refinery.language.model.problem.NodeAssertionArgument | ||
15 | import tools.refinery.language.model.problem.NodeValueAssertion | ||
16 | import tools.refinery.language.model.problem.PredicateDefinition | ||
17 | import tools.refinery.language.model.problem.Problem | ||
18 | import tools.refinery.language.model.problem.UniqueDeclaration | ||
19 | import tools.refinery.language.model.problem.Variable | ||
20 | import tools.refinery.language.model.problem.VariableOrNodeArgument | ||
21 | |||
22 | class ProblemTestUtil { | ||
23 | def builtin(Problem it) { | ||
24 | ProblemUtil.getBuiltInLibrary(it).get | ||
25 | } | ||
26 | |||
27 | def errors(Problem it) { | ||
28 | eResource.errors | ||
29 | } | ||
30 | |||
31 | def nodeNames(Problem it) { | ||
32 | nodes.map[name] | ||
33 | } | ||
34 | |||
35 | def pred(Problem it, String name) { | ||
36 | statements.filter(PredicateDefinition).findFirst[it.name == name] | ||
37 | } | ||
38 | |||
39 | def param(PredicateDefinition it, int i) { | ||
40 | parameters.get(i) | ||
41 | } | ||
42 | |||
43 | def conj(PredicateDefinition it, int i) { | ||
44 | bodies.get(i) | ||
45 | } | ||
46 | |||
47 | def lit(Conjunction it, int i) { | ||
48 | literals.get(i) | ||
49 | } | ||
50 | |||
51 | def negated(Literal it) { | ||
52 | (it as NegativeLiteral).atom | ||
53 | } | ||
54 | |||
55 | def relation(Literal it) { | ||
56 | (it as Atom).relation | ||
57 | } | ||
58 | |||
59 | def arg(Atom it, int i) { | ||
60 | it.arguments.get(i) | ||
61 | } | ||
62 | |||
63 | def arg(Literal it, int i) { | ||
64 | (it as Atom).arg(i) | ||
65 | } | ||
66 | |||
67 | def variable(Argument it) { | ||
68 | (it as VariableOrNodeArgument).variableOrNode as Variable | ||
69 | } | ||
70 | |||
71 | def node(Argument it) { | ||
72 | (it as VariableOrNodeArgument).variableOrNode as Node | ||
73 | } | ||
74 | |||
75 | def assertion(Problem it, int i) { | ||
76 | statements.filter(Assertion).get(i) | ||
77 | } | ||
78 | |||
79 | def nodeValueAssertion(Problem it, int i) { | ||
80 | statements.filter(NodeValueAssertion).get(i) | ||
81 | } | ||
82 | |||
83 | def arg(Assertion it, int i) { | ||
84 | arguments.get(i) | ||
85 | } | ||
86 | |||
87 | def node(AssertionArgument it) { | ||
88 | (it as NodeAssertionArgument).node | ||
89 | } | ||
90 | |||
91 | def node(Problem it, String name) { | ||
92 | nodes.findFirst[it.name == name] | ||
93 | } | ||
94 | |||
95 | def uniqueNode(Problem it, String name) { | ||
96 | statements.filter(UniqueDeclaration).flatMap[nodes].findFirst[it.name == name] | ||
97 | } | ||
98 | |||
99 | def findClass(Problem it, String name) { | ||
100 | statements.filter(ClassDeclaration).findFirst[it.name == name] | ||
101 | } | ||
102 | |||
103 | def reference(ClassDeclaration it, String name) { | ||
104 | it.referenceDeclarations.findFirst[it.name == name] | ||
105 | } | ||
106 | |||
107 | def findEnum(Problem it, String name) { | ||
108 | statements.filter(EnumDeclaration).findFirst[it.name == name] | ||
109 | } | ||
110 | |||
111 | def literal(EnumDeclaration it, String name) { | ||
112 | literals.findFirst[it.name == name] | ||
113 | } | ||
114 | } | ||
diff --git a/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.xtend b/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.xtend index ab3e325f..5ff7a2c9 100644 --- a/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.xtend +++ b/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.xtend | |||
@@ -12,8 +12,8 @@ import org.junit.jupiter.params.provider.Arguments | |||
12 | import org.junit.jupiter.params.provider.MethodSource | 12 | import org.junit.jupiter.params.provider.MethodSource |
13 | import org.junit.jupiter.params.provider.ValueSource | 13 | import org.junit.jupiter.params.provider.ValueSource |
14 | import tools.refinery.language.model.problem.Problem | 14 | import tools.refinery.language.model.problem.Problem |
15 | import tools.refinery.language.model.tests.ProblemTestUtil | ||
15 | import tools.refinery.language.tests.ProblemInjectorProvider | 16 | import tools.refinery.language.tests.ProblemInjectorProvider |
16 | import tools.refinery.language.tests.ProblemTestUtil | ||
17 | 17 | ||
18 | import static org.hamcrest.MatcherAssert.assertThat | 18 | import static org.hamcrest.MatcherAssert.assertThat |
19 | import static org.hamcrest.Matchers.* | 19 | import static org.hamcrest.Matchers.* |