aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language/src/test
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-11-19 14:00:12 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-11-22 16:40:03 +0100
commit383137c190cab040d2609f8295ef822c3917b88d (patch)
treed0d88528de2020da51cb6e92459b84cf63609feb /subprojects/language/src/test
parentchore(deps): bump dependencies (diff)
downloadrefinery-383137c190cab040d2609f8295ef822c3917b88d.tar.gz
refinery-383137c190cab040d2609f8295ef822c3917b88d.tar.zst
refinery-383137c190cab040d2609f8295ef822c3917b88d.zip
feat(language): numeric expressions
Diffstat (limited to 'subprojects/language/src/test')
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java12
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java18
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/IdentifierTokenProviderTest.java39
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/ProblemTokenSourceTest.java134
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java49
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java23
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java39
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java4
8 files changed, 261 insertions, 57 deletions
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java
index 1e8682a3..3a6e015f 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java
@@ -1,17 +1,15 @@
1package tools.refinery.language.tests; 1package tools.refinery.language.tests;
2 2
3import static org.hamcrest.MatcherAssert.assertThat; 3import com.google.inject.Inject;
4import static org.hamcrest.Matchers.empty;
5
6import org.eclipse.xtext.testing.InjectWith; 4import org.eclipse.xtext.testing.InjectWith;
7import org.eclipse.xtext.testing.extensions.InjectionExtension; 5import org.eclipse.xtext.testing.extensions.InjectionExtension;
8import org.junit.jupiter.api.Test; 6import org.junit.jupiter.api.Test;
9import org.junit.jupiter.api.extension.ExtendWith; 7import org.junit.jupiter.api.extension.ExtendWith;
10
11import com.google.inject.Inject;
12
13import tools.refinery.language.model.tests.utils.ProblemParseHelper; 8import tools.refinery.language.model.tests.utils.ProblemParseHelper;
14 9
10import static org.hamcrest.MatcherAssert.assertThat;
11import static org.hamcrest.Matchers.empty;
12
15@ExtendWith(InjectionExtension.class) 13@ExtendWith(InjectionExtension.class)
16@InjectWith(ProblemInjectorProvider.class) 14@InjectWith(ProblemInjectorProvider.class)
17class ProblemParsingTest { 15class ProblemParsingTest {
@@ -40,7 +38,7 @@ class ProblemParsingTest {
40 error invalidTaxStatus(Person p) <-> 38 error invalidTaxStatus(Person p) <->
41 taxStatus(p, child), children(p, _q). 39 taxStatus(p, child), children(p, _q).
42 40
43 indiv family. 41 individual family.
44 Family(family). 42 Family(family).
45 members(family, anne): true. 43 members(family, anne): true.
46 members(family, bob). 44 members(family, bob).
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java
index 083c5184..a6e38130 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java
@@ -1,10 +1,7 @@
1package tools.refinery.language.tests.formatting2; 1package tools.refinery.language.tests.formatting2;
2 2
3import static org.hamcrest.MatcherAssert.assertThat; 3import com.google.inject.Inject;
4import static org.hamcrest.Matchers.equalTo; 4import com.google.inject.Provider;
5
6import java.util.List;
7
8import org.eclipse.xtext.formatting2.FormatterRequest; 5import org.eclipse.xtext.formatting2.FormatterRequest;
9import org.eclipse.xtext.formatting2.IFormatter2; 6import org.eclipse.xtext.formatting2.IFormatter2;
10import org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess; 7import org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess;
@@ -16,13 +13,14 @@ import org.eclipse.xtext.testing.extensions.InjectionExtension;
16import org.eclipse.xtext.testing.util.ParseHelper; 13import org.eclipse.xtext.testing.util.ParseHelper;
17import org.junit.jupiter.api.Test; 14import org.junit.jupiter.api.Test;
18import org.junit.jupiter.api.extension.ExtendWith; 15import org.junit.jupiter.api.extension.ExtendWith;
19
20import com.google.inject.Inject;
21import com.google.inject.Provider;
22
23import tools.refinery.language.model.problem.Problem; 16import tools.refinery.language.model.problem.Problem;
24import tools.refinery.language.tests.ProblemInjectorProvider; 17import tools.refinery.language.tests.ProblemInjectorProvider;
25 18
19import java.util.List;
20
21import static org.hamcrest.MatcherAssert.assertThat;
22import static org.hamcrest.Matchers.equalTo;
23
26@ExtendWith(InjectionExtension.class) 24@ExtendWith(InjectionExtension.class)
27@InjectWith(ProblemInjectorProvider.class) 25@InjectWith(ProblemInjectorProvider.class)
28class ProblemFormatterTest { 26class ProblemFormatterTest {
@@ -181,7 +179,7 @@ class ProblemFormatterTest {
181 179
182 @Test 180 @Test
183 void individualDeclarationTest() { 181 void individualDeclarationTest() {
184 testFormatter(" indiv a , b . ", "indiv a, b.\n"); 182 testFormatter(" individual a , b . ", "individual a, b.\n");
185 } 183 }
186 184
187 @Test 185 @Test
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/IdentifierTokenProviderTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/IdentifierTokenProviderTest.java
new file mode 100644
index 00000000..abff8d9c
--- /dev/null
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/IdentifierTokenProviderTest.java
@@ -0,0 +1,39 @@
1package tools.refinery.language.tests.parser.antlr;
2
3import com.google.inject.Inject;
4import org.eclipse.xtext.testing.InjectWith;
5import org.eclipse.xtext.testing.extensions.InjectionExtension;
6import org.junit.jupiter.api.extension.ExtendWith;
7import org.junit.jupiter.params.ParameterizedTest;
8import org.junit.jupiter.params.provider.Arguments;
9import org.junit.jupiter.params.provider.MethodSource;
10import tools.refinery.language.parser.antlr.IdentifierTokenProvider;
11import tools.refinery.language.parser.antlr.internal.InternalProblemParser;
12import tools.refinery.language.tests.ProblemInjectorProvider;
13
14import java.util.stream.Stream;
15
16import static org.hamcrest.MatcherAssert.assertThat;
17import static org.hamcrest.Matchers.equalTo;
18
19@ExtendWith(InjectionExtension.class)
20@InjectWith(ProblemInjectorProvider.class)
21class IdentifierTokenProviderTest {
22 @Inject
23 private IdentifierTokenProvider identifierTokenProvider;
24
25 @ParameterizedTest(name = "{0} is identifier: {2}")
26 @MethodSource
27 void isIdentifierTokenTest(String ignoredTokenName, int tokenId, boolean expected) {
28 assertThat(identifierTokenProvider.isIdentifierToken(tokenId), equalTo(expected));
29 }
30
31 static Stream<Arguments> isIdentifierTokenTest() {
32 return Stream.of(
33 Arguments.of("RULE_ID", InternalProblemParser.RULE_ID, true),
34 Arguments.of("contained", InternalProblemParser.Contained, true),
35 Arguments.of("contains", InternalProblemParser.Contains, true),
36 Arguments.of("(", InternalProblemParser.LeftParenthesis, false)
37 );
38 }
39}
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/ProblemTokenSourceTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/ProblemTokenSourceTest.java
new file mode 100644
index 00000000..cb42d5d0
--- /dev/null
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/ProblemTokenSourceTest.java
@@ -0,0 +1,134 @@
1package tools.refinery.language.tests.parser.antlr;
2
3import com.google.inject.Inject;
4import com.google.inject.Provider;
5import com.google.inject.name.Named;
6import org.antlr.runtime.ANTLRStringStream;
7import org.antlr.runtime.Token;
8import org.eclipse.xtext.parser.antlr.Lexer;
9import org.eclipse.xtext.parser.antlr.LexerBindings;
10import org.eclipse.xtext.testing.InjectWith;
11import org.eclipse.xtext.testing.extensions.InjectionExtension;
12import org.hamcrest.Matcher;
13import org.junit.jupiter.api.extension.ExtendWith;
14import org.junit.jupiter.params.ParameterizedTest;
15import org.junit.jupiter.params.provider.Arguments;
16import org.junit.jupiter.params.provider.MethodSource;
17import org.junit.jupiter.params.provider.ValueSource;
18import tools.refinery.language.parser.antlr.IdentifierTokenProvider;
19import tools.refinery.language.parser.antlr.ProblemTokenSource;
20import tools.refinery.language.parser.antlr.internal.InternalProblemParser;
21import tools.refinery.language.tests.ProblemInjectorProvider;
22
23import java.util.ArrayList;
24import java.util.List;
25import java.util.stream.Stream;
26
27import static org.hamcrest.MatcherAssert.assertThat;
28import static org.hamcrest.Matchers.*;
29
30@ExtendWith(InjectionExtension.class)
31@InjectWith(ProblemInjectorProvider.class)
32class ProblemTokenSourceTest {
33 @Inject
34 @Named(LexerBindings.RUNTIME)
35 private Provider<Lexer> lexerProvider;
36
37 @Inject
38 private IdentifierTokenProvider identifierTokenProvider;
39
40 @ParameterizedTest
41 @ValueSource(strings = {
42 "a+b",
43 "a+(b)",
44 "a+(b(x, y), x)",
45 "a + (b)",
46 "a+(b::x)",
47 "c+(a+(b)",
48 "a+(1, b)",
49 // These are never valid expressions, so we do try to peek at the inner plus sign
50 // to limit recursion depth in the token source:
51 "c+(equals+(a, b))",
52 "equals+(equals+(a, b), c)",
53 })
54 void plusSignInTokenStreamTest(String text) {
55 var tokenList = createTokenList(text);
56 assertThat(tokenList, hasTokenOfType(InternalProblemParser.PlusSign));
57 assertThat(tokenList, not(hasTokenOfType(InternalProblemParser.RULE_TRANSITIVE_CLOSURE)));
58 }
59
60 @ParameterizedTest
61 @ValueSource(strings = {
62 "equals+(a, b)",
63 "equals + (a, b)",
64 "equals+(a::x, b)"
65 })
66 void transitiveClosureInTokenStreamTest(String text) {
67 var tokenList = createTokenList(text);
68 assertThat(tokenList, not(hasTokenOfType(InternalProblemParser.PlusSign)));
69 assertThat(tokenList, hasTokenOfType(InternalProblemParser.RULE_TRANSITIVE_CLOSURE));
70 }
71
72 @ParameterizedTest
73 @MethodSource
74 void plusAndTransitiveClosureInSameTokenStreamTest(String text, boolean recursive) {
75 var tokenSource = createTokenSource(text);
76 tokenSource.setRecursive(recursive);
77 Token token;
78 int i = 0;
79 int plusIndex = -1;
80 int transitiveClosureIndex = -1;
81 do {
82 token = tokenSource.nextToken();
83 switch (token.getType()) {
84 case InternalProblemParser.PlusSign -> {
85 assertThat("multiple plus signs", plusIndex, equalTo(-1));
86 plusIndex = i;
87 }
88 case InternalProblemParser.RULE_TRANSITIVE_CLOSURE -> {
89 assertThat("multiple transitive closures", transitiveClosureIndex, equalTo(-1));
90 transitiveClosureIndex = i;
91 }
92 }
93 i++;
94 } while (token.getType() != InternalProblemParser.EOF);
95 assertThat("no plus sign", plusIndex, not(equalTo(-1)));
96 assertThat("no transitive closure", transitiveClosureIndex, not(equalTo(-1)));
97 assertThat("transitive closure before plus", transitiveClosureIndex, greaterThan(plusIndex));
98 }
99
100 static Stream<Arguments> plusAndTransitiveClosureInSameTokenStreamTest() {
101 return Stream.of(
102 Arguments.of("c+(d), equals+(a, b)", false),
103 Arguments.of("foo+(bar baz+(a, b))", false),
104 // Here we can peek at the inner plus sign without recursion:
105 Arguments.of("c+(1, equals+(a, b))", false),
106 // But these cases need recursion:
107 Arguments.of("c+(equals+(a, b))", true),
108 Arguments.of("equals+(equals+(a, b), c)", true)
109 );
110 }
111
112 private ProblemTokenSource createTokenSource(String text) {
113 var lexer = lexerProvider.get();
114 lexer.setCharStream(new ANTLRStringStream(text));
115 var tokenSource = new ProblemTokenSource(lexer);
116 tokenSource.setIdentifierTokenProvider(identifierTokenProvider);
117 return tokenSource;
118 }
119
120 private List<Token> createTokenList(String text) {
121 var tokenSource = createTokenSource(text);
122 var tokens = new ArrayList<Token>();
123 Token token;
124 do {
125 token = tokenSource.nextToken();
126 tokens.add(token);
127 } while (token.getType() != InternalProblemParser.EOF);
128 return tokens;
129 }
130
131 private Matcher<Iterable<? super Token>> hasTokenOfType(int tokenId) {
132 return hasItem(hasProperty("type", equalTo(tokenId)));
133 }
134}
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java
new file mode 100644
index 00000000..96d12edf
--- /dev/null
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java
@@ -0,0 +1,49 @@
1package tools.refinery.language.tests.parser.antlr;
2
3import com.google.inject.Inject;
4import org.eclipse.xtext.testing.InjectWith;
5import org.eclipse.xtext.testing.extensions.InjectionExtension;
6import org.junit.jupiter.api.Test;
7import org.junit.jupiter.api.extension.ExtendWith;
8import tools.refinery.language.model.problem.ArithmeticBinaryExpr;
9import tools.refinery.language.model.problem.Atom;
10import tools.refinery.language.model.problem.BinaryOp;
11import tools.refinery.language.model.problem.ComparisonExpr;
12import tools.refinery.language.model.tests.utils.ProblemParseHelper;
13import tools.refinery.language.tests.ProblemInjectorProvider;
14
15import static org.hamcrest.MatcherAssert.assertThat;
16import static org.hamcrest.Matchers.*;
17
18@ExtendWith(InjectionExtension.class)
19@InjectWith(ProblemInjectorProvider.class)
20class TransitiveClosureParserTest {
21 @Inject
22 private ProblemParseHelper parseHelper;
23
24 @Test
25 void binaryAddOperatorTest() {
26 var problem = parseHelper.parse("""
27 pred foo(int a, int b) <-> a + (b) > 10.
28 """);
29 assertThat(problem.errors(), empty());
30 var literal = problem.pred("foo").conj(0).lit(0).get();
31 assertThat(literal, instanceOf(ComparisonExpr.class));
32 var left = ((ComparisonExpr) literal).getLeft();
33 assertThat(left, instanceOf(ArithmeticBinaryExpr.class));
34 var binary = (ArithmeticBinaryExpr) left;
35 assertThat(binary.getOp(), equalTo(BinaryOp.ADD));
36 }
37
38 @Test
39 void transitiveClosureTest() {
40 var problem = parseHelper.parse("""
41 pred foo(a, b) <-> equals+(a, b).
42 """);
43 assertThat(problem.errors(), empty());
44 var literal = problem.pred("foo").conj(0).lit(0).get();
45 assertThat(literal, instanceOf(Atom.class));
46 var atom = (Atom) literal;
47 assertThat(atom.isTransitiveClosure(), equalTo(true));
48 }
49}
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java
index 5c905ede..9049b8ec 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java
@@ -1,13 +1,6 @@
1package tools.refinery.language.tests.scoping; 1package tools.refinery.language.tests.scoping;
2 2
3import static org.hamcrest.MatcherAssert.assertThat; 3import com.google.inject.Inject;
4import static org.hamcrest.Matchers.empty;
5import static org.hamcrest.Matchers.equalTo;
6import static org.hamcrest.Matchers.hasItems;
7import static org.hamcrest.Matchers.not;
8
9import java.util.stream.Stream;
10
11import org.eclipse.xtext.testing.InjectWith; 4import org.eclipse.xtext.testing.InjectWith;
12import org.eclipse.xtext.testing.extensions.InjectionExtension; 5import org.eclipse.xtext.testing.extensions.InjectionExtension;
13import org.junit.jupiter.api.Test; 6import org.junit.jupiter.api.Test;
@@ -16,13 +9,15 @@ import org.junit.jupiter.params.ParameterizedTest;
16import org.junit.jupiter.params.provider.Arguments; 9import org.junit.jupiter.params.provider.Arguments;
17import org.junit.jupiter.params.provider.MethodSource; 10import org.junit.jupiter.params.provider.MethodSource;
18import org.junit.jupiter.params.provider.ValueSource; 11import org.junit.jupiter.params.provider.ValueSource;
19
20import com.google.inject.Inject;
21
22import tools.refinery.language.model.tests.utils.ProblemParseHelper; 12import tools.refinery.language.model.tests.utils.ProblemParseHelper;
23import tools.refinery.language.model.tests.utils.WrappedProblem; 13import tools.refinery.language.model.tests.utils.WrappedProblem;
24import tools.refinery.language.tests.ProblemInjectorProvider; 14import tools.refinery.language.tests.ProblemInjectorProvider;
25 15
16import java.util.stream.Stream;
17
18import static org.hamcrest.MatcherAssert.assertThat;
19import static org.hamcrest.Matchers.*;
20
26@ExtendWith(InjectionExtension.class) 21@ExtendWith(InjectionExtension.class)
27@InjectWith(ProblemInjectorProvider.class) 22@InjectWith(ProblemInjectorProvider.class)
28class NodeScopingTest { 23class NodeScopingTest {
@@ -85,7 +80,7 @@ class NodeScopingTest {
85 @MethodSource("individualNodeReferenceSource") 80 @MethodSource("individualNodeReferenceSource")
86 void individualNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { 81 void individualNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) {
87 var problem = parse(""" 82 var problem = parse("""
88 indiv a, b. 83 individual a, b.
89 pred predicate(node x, node y) <-> node(x). 84 pred predicate(node x, node y) <-> node(x).
90 predicate({PARAM}a, {PARAM}a). 85 predicate({PARAM}a, {PARAM}a).
91 ?predicate({PARAM}a, {PARAM}b). 86 ?predicate({PARAM}a, {PARAM}b).
@@ -102,7 +97,7 @@ class NodeScopingTest {
102 @MethodSource("individualNodeReferenceSource") 97 @MethodSource("individualNodeReferenceSource")
103 void individualNodeInNodeValueAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { 98 void individualNodeInNodeValueAssertionTest(String qualifiedNamePrefix, boolean namedProblem) {
104 var problem = parse(""" 99 var problem = parse("""
105 indiv a. 100 individual a.
106 {PARAM}a: 16. 101 {PARAM}a: 16.
107 """, qualifiedNamePrefix, namedProblem); 102 """, qualifiedNamePrefix, namedProblem);
108 assertThat(problem.errors(), empty()); 103 assertThat(problem.errors(), empty());
@@ -114,7 +109,7 @@ class NodeScopingTest {
114 @MethodSource("individualNodeReferenceSource") 109 @MethodSource("individualNodeReferenceSource")
115 void individualNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) { 110 void individualNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) {
116 var problem = parse(""" 111 var problem = parse("""
117 indiv b. 112 individual b.
118 pred predicate(node a) <-> node({PARAM}b). 113 pred predicate(node a) <-> node({PARAM}b).
119 """); 114 """);
120 assertThat(problem.errors(), empty()); 115 assertThat(problem.errors(), empty());
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java
index ea858e92..150e47a4 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java
@@ -1,13 +1,6 @@
1package tools.refinery.language.tests.serializer; 1package tools.refinery.language.tests.serializer;
2 2
3import static org.hamcrest.MatcherAssert.assertThat; 3import com.google.inject.Inject;
4import static org.hamcrest.Matchers.equalTo;
5
6import java.io.ByteArrayOutputStream;
7import java.io.IOException;
8import java.util.Map;
9import java.util.stream.Stream;
10
11import org.eclipse.emf.common.util.URI; 4import org.eclipse.emf.common.util.URI;
12import org.eclipse.emf.ecore.resource.Resource; 5import org.eclipse.emf.ecore.resource.Resource;
13import org.eclipse.emf.ecore.resource.ResourceSet; 6import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -19,20 +12,18 @@ import org.junit.jupiter.api.extension.ExtendWith;
19import org.junit.jupiter.params.ParameterizedTest; 12import org.junit.jupiter.params.ParameterizedTest;
20import org.junit.jupiter.params.provider.Arguments; 13import org.junit.jupiter.params.provider.Arguments;
21import org.junit.jupiter.params.provider.MethodSource; 14import org.junit.jupiter.params.provider.MethodSource;
22 15import tools.refinery.language.model.problem.*;
23import com.google.inject.Inject;
24
25import tools.refinery.language.model.problem.Atom;
26import tools.refinery.language.model.problem.LogicValue;
27import tools.refinery.language.model.problem.Node;
28import tools.refinery.language.model.problem.PredicateDefinition;
29import tools.refinery.language.model.problem.Problem;
30import tools.refinery.language.model.problem.ProblemFactory;
31import tools.refinery.language.model.problem.Relation;
32import tools.refinery.language.model.problem.VariableOrNode;
33import tools.refinery.language.model.tests.utils.WrappedProblem; 16import tools.refinery.language.model.tests.utils.WrappedProblem;
34import tools.refinery.language.tests.ProblemInjectorProvider; 17import tools.refinery.language.tests.ProblemInjectorProvider;
35 18
19import java.io.ByteArrayOutputStream;
20import java.io.IOException;
21import java.util.Map;
22import java.util.stream.Stream;
23
24import static org.hamcrest.MatcherAssert.assertThat;
25import static org.hamcrest.Matchers.equalTo;
26
36@ExtendWith(InjectionExtension.class) 27@ExtendWith(InjectionExtension.class)
37@InjectWith(ProblemInjectorProvider.class) 28@InjectWith(ProblemInjectorProvider.class)
38class ProblemSerializerTest { 29class ProblemSerializerTest {
@@ -68,7 +59,7 @@ class ProblemSerializerTest {
68 assertSerializedResult(""" 59 assertSerializedResult("""
69 pred foo(node p). 60 pred foo(node p).
70 61
71 indiv a. 62 individual a.
72 """ + serializedAssertion + "\n"); 63 """ + serializedAssertion + "\n");
73 } 64 }
74 65
@@ -166,10 +157,10 @@ class ProblemSerializerTest {
166 private Atom createAtom(Relation relation, VariableOrNode variable1, VariableOrNode variable2) { 157 private Atom createAtom(Relation relation, VariableOrNode variable1, VariableOrNode variable2) {
167 var atom = ProblemFactory.eINSTANCE.createAtom(); 158 var atom = ProblemFactory.eINSTANCE.createAtom();
168 atom.setRelation(relation); 159 atom.setRelation(relation);
169 var arg1 = ProblemFactory.eINSTANCE.createVariableOrNodeArgument(); 160 var arg1 = ProblemFactory.eINSTANCE.createVariableOrNodeExpr();
170 arg1.setVariableOrNode(variable1); 161 arg1.setVariableOrNode(variable1);
171 atom.getArguments().add(arg1); 162 atom.getArguments().add(arg1);
172 var arg2 = ProblemFactory.eINSTANCE.createVariableOrNodeArgument(); 163 var arg2 = ProblemFactory.eINSTANCE.createVariableOrNodeExpr();
173 arg2.setVariableOrNode(variable2); 164 arg2.setVariableOrNode(variable2);
174 atom.getArguments().add(arg2); 165 atom.getArguments().add(arg2);
175 return atom; 166 return atom;
@@ -188,10 +179,10 @@ class ProblemSerializerTest {
188 var atom = ProblemFactory.eINSTANCE.createAtom(); 179 var atom = ProblemFactory.eINSTANCE.createAtom();
189 var equals = nodeType.reference("equals"); 180 var equals = nodeType.reference("equals");
190 atom.setRelation(equals); 181 atom.setRelation(equals);
191 var arg1 = ProblemFactory.eINSTANCE.createVariableOrNodeArgument(); 182 var arg1 = ProblemFactory.eINSTANCE.createVariableOrNodeExpr();
192 arg1.setVariableOrNode(parameter); 183 arg1.setVariableOrNode(parameter);
193 atom.getArguments().add(arg1); 184 atom.getArguments().add(arg1);
194 var arg2 = ProblemFactory.eINSTANCE.createVariableOrNodeArgument(); 185 var arg2 = ProblemFactory.eINSTANCE.createVariableOrNodeExpr();
195 var variable = ProblemFactory.eINSTANCE.createImplicitVariable(); 186 var variable = ProblemFactory.eINSTANCE.createImplicitVariable();
196 variable.setName("_q"); 187 variable.setName("_q");
197 arg2.setSingletonVariable(variable); 188 arg2.setSingletonVariable(variable);
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java
index a05f3335..98c16352 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java
@@ -44,7 +44,7 @@ class SymbolCollectorTest {
44 @Test 44 @Test
45 void individualNodeTest() { 45 void individualNodeTest() {
46 var problem = parseHelper.parse(""" 46 var problem = parseHelper.parse("""
47 indiv a. 47 individual a.
48 """); 48 """);
49 var collectedSymbols = desugarer.collectSymbols(problem.get()); 49 var collectedSymbols = desugarer.collectSymbols(problem.get());
50 var node = problem.individualNode("a"); 50 var node = problem.individualNode("a");
@@ -161,7 +161,7 @@ class SymbolCollectorTest {
161 161
162 static Stream<Arguments> predicateTest() { 162 static Stream<Arguments> predicateTest() {
163 return Stream.of(Arguments.of("pred", ContainmentRole.NONE), Arguments.of("error", ContainmentRole.NONE), 163 return Stream.of(Arguments.of("pred", ContainmentRole.NONE), Arguments.of("error", ContainmentRole.NONE),
164 Arguments.of("contained", ContainmentRole.CONTAINED), Arguments.of("containment", 164 Arguments.of("contained pred", ContainmentRole.CONTAINED), Arguments.of("containment pred",
165 ContainmentRole.CONTAINMENT)); 165 ContainmentRole.CONTAINMENT));
166 } 166 }
167 167