diff options
author | 2022-11-19 14:00:12 +0100 | |
---|---|---|
committer | 2022-11-22 16:40:03 +0100 | |
commit | 383137c190cab040d2609f8295ef822c3917b88d (patch) | |
tree | d0d88528de2020da51cb6e92459b84cf63609feb /subprojects/language/src/test | |
parent | chore(deps): bump dependencies (diff) | |
download | refinery-383137c190cab040d2609f8295ef822c3917b88d.tar.gz refinery-383137c190cab040d2609f8295ef822c3917b88d.tar.zst refinery-383137c190cab040d2609f8295ef822c3917b88d.zip |
feat(language): numeric expressions
Diffstat (limited to 'subprojects/language/src/test')
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 @@ | |||
1 | package tools.refinery.language.tests; | 1 | package tools.refinery.language.tests; |
2 | 2 | ||
3 | import static org.hamcrest.MatcherAssert.assertThat; | 3 | import com.google.inject.Inject; |
4 | import static org.hamcrest.Matchers.empty; | ||
5 | |||
6 | import org.eclipse.xtext.testing.InjectWith; | 4 | import org.eclipse.xtext.testing.InjectWith; |
7 | import org.eclipse.xtext.testing.extensions.InjectionExtension; | 5 | import org.eclipse.xtext.testing.extensions.InjectionExtension; |
8 | import org.junit.jupiter.api.Test; | 6 | import org.junit.jupiter.api.Test; |
9 | import org.junit.jupiter.api.extension.ExtendWith; | 7 | import org.junit.jupiter.api.extension.ExtendWith; |
10 | |||
11 | import com.google.inject.Inject; | ||
12 | |||
13 | import tools.refinery.language.model.tests.utils.ProblemParseHelper; | 8 | import tools.refinery.language.model.tests.utils.ProblemParseHelper; |
14 | 9 | ||
10 | import static org.hamcrest.MatcherAssert.assertThat; | ||
11 | import static org.hamcrest.Matchers.empty; | ||
12 | |||
15 | @ExtendWith(InjectionExtension.class) | 13 | @ExtendWith(InjectionExtension.class) |
16 | @InjectWith(ProblemInjectorProvider.class) | 14 | @InjectWith(ProblemInjectorProvider.class) |
17 | class ProblemParsingTest { | 15 | class 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 @@ | |||
1 | package tools.refinery.language.tests.formatting2; | 1 | package tools.refinery.language.tests.formatting2; |
2 | 2 | ||
3 | import static org.hamcrest.MatcherAssert.assertThat; | 3 | import com.google.inject.Inject; |
4 | import static org.hamcrest.Matchers.equalTo; | 4 | import com.google.inject.Provider; |
5 | |||
6 | import java.util.List; | ||
7 | |||
8 | import org.eclipse.xtext.formatting2.FormatterRequest; | 5 | import org.eclipse.xtext.formatting2.FormatterRequest; |
9 | import org.eclipse.xtext.formatting2.IFormatter2; | 6 | import org.eclipse.xtext.formatting2.IFormatter2; |
10 | import org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess; | 7 | import org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess; |
@@ -16,13 +13,14 @@ import org.eclipse.xtext.testing.extensions.InjectionExtension; | |||
16 | import org.eclipse.xtext.testing.util.ParseHelper; | 13 | import org.eclipse.xtext.testing.util.ParseHelper; |
17 | import org.junit.jupiter.api.Test; | 14 | import org.junit.jupiter.api.Test; |
18 | import org.junit.jupiter.api.extension.ExtendWith; | 15 | import org.junit.jupiter.api.extension.ExtendWith; |
19 | |||
20 | import com.google.inject.Inject; | ||
21 | import com.google.inject.Provider; | ||
22 | |||
23 | import tools.refinery.language.model.problem.Problem; | 16 | import tools.refinery.language.model.problem.Problem; |
24 | import tools.refinery.language.tests.ProblemInjectorProvider; | 17 | import tools.refinery.language.tests.ProblemInjectorProvider; |
25 | 18 | ||
19 | import java.util.List; | ||
20 | |||
21 | import static org.hamcrest.MatcherAssert.assertThat; | ||
22 | import static org.hamcrest.Matchers.equalTo; | ||
23 | |||
26 | @ExtendWith(InjectionExtension.class) | 24 | @ExtendWith(InjectionExtension.class) |
27 | @InjectWith(ProblemInjectorProvider.class) | 25 | @InjectWith(ProblemInjectorProvider.class) |
28 | class ProblemFormatterTest { | 26 | class 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 @@ | |||
1 | package tools.refinery.language.tests.parser.antlr; | ||
2 | |||
3 | import com.google.inject.Inject; | ||
4 | import org.eclipse.xtext.testing.InjectWith; | ||
5 | import org.eclipse.xtext.testing.extensions.InjectionExtension; | ||
6 | import org.junit.jupiter.api.extension.ExtendWith; | ||
7 | import org.junit.jupiter.params.ParameterizedTest; | ||
8 | import org.junit.jupiter.params.provider.Arguments; | ||
9 | import org.junit.jupiter.params.provider.MethodSource; | ||
10 | import tools.refinery.language.parser.antlr.IdentifierTokenProvider; | ||
11 | import tools.refinery.language.parser.antlr.internal.InternalProblemParser; | ||
12 | import tools.refinery.language.tests.ProblemInjectorProvider; | ||
13 | |||
14 | import java.util.stream.Stream; | ||
15 | |||
16 | import static org.hamcrest.MatcherAssert.assertThat; | ||
17 | import static org.hamcrest.Matchers.equalTo; | ||
18 | |||
19 | @ExtendWith(InjectionExtension.class) | ||
20 | @InjectWith(ProblemInjectorProvider.class) | ||
21 | class 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 @@ | |||
1 | package tools.refinery.language.tests.parser.antlr; | ||
2 | |||
3 | import com.google.inject.Inject; | ||
4 | import com.google.inject.Provider; | ||
5 | import com.google.inject.name.Named; | ||
6 | import org.antlr.runtime.ANTLRStringStream; | ||
7 | import org.antlr.runtime.Token; | ||
8 | import org.eclipse.xtext.parser.antlr.Lexer; | ||
9 | import org.eclipse.xtext.parser.antlr.LexerBindings; | ||
10 | import org.eclipse.xtext.testing.InjectWith; | ||
11 | import org.eclipse.xtext.testing.extensions.InjectionExtension; | ||
12 | import org.hamcrest.Matcher; | ||
13 | import org.junit.jupiter.api.extension.ExtendWith; | ||
14 | import org.junit.jupiter.params.ParameterizedTest; | ||
15 | import org.junit.jupiter.params.provider.Arguments; | ||
16 | import org.junit.jupiter.params.provider.MethodSource; | ||
17 | import org.junit.jupiter.params.provider.ValueSource; | ||
18 | import tools.refinery.language.parser.antlr.IdentifierTokenProvider; | ||
19 | import tools.refinery.language.parser.antlr.ProblemTokenSource; | ||
20 | import tools.refinery.language.parser.antlr.internal.InternalProblemParser; | ||
21 | import tools.refinery.language.tests.ProblemInjectorProvider; | ||
22 | |||
23 | import java.util.ArrayList; | ||
24 | import java.util.List; | ||
25 | import java.util.stream.Stream; | ||
26 | |||
27 | import static org.hamcrest.MatcherAssert.assertThat; | ||
28 | import static org.hamcrest.Matchers.*; | ||
29 | |||
30 | @ExtendWith(InjectionExtension.class) | ||
31 | @InjectWith(ProblemInjectorProvider.class) | ||
32 | class 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 @@ | |||
1 | package tools.refinery.language.tests.parser.antlr; | ||
2 | |||
3 | import com.google.inject.Inject; | ||
4 | import org.eclipse.xtext.testing.InjectWith; | ||
5 | import org.eclipse.xtext.testing.extensions.InjectionExtension; | ||
6 | import org.junit.jupiter.api.Test; | ||
7 | import org.junit.jupiter.api.extension.ExtendWith; | ||
8 | import tools.refinery.language.model.problem.ArithmeticBinaryExpr; | ||
9 | import tools.refinery.language.model.problem.Atom; | ||
10 | import tools.refinery.language.model.problem.BinaryOp; | ||
11 | import tools.refinery.language.model.problem.ComparisonExpr; | ||
12 | import tools.refinery.language.model.tests.utils.ProblemParseHelper; | ||
13 | import tools.refinery.language.tests.ProblemInjectorProvider; | ||
14 | |||
15 | import static org.hamcrest.MatcherAssert.assertThat; | ||
16 | import static org.hamcrest.Matchers.*; | ||
17 | |||
18 | @ExtendWith(InjectionExtension.class) | ||
19 | @InjectWith(ProblemInjectorProvider.class) | ||
20 | class 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 @@ | |||
1 | package tools.refinery.language.tests.scoping; | 1 | package tools.refinery.language.tests.scoping; |
2 | 2 | ||
3 | import static org.hamcrest.MatcherAssert.assertThat; | 3 | import com.google.inject.Inject; |
4 | import static org.hamcrest.Matchers.empty; | ||
5 | import static org.hamcrest.Matchers.equalTo; | ||
6 | import static org.hamcrest.Matchers.hasItems; | ||
7 | import static org.hamcrest.Matchers.not; | ||
8 | |||
9 | import java.util.stream.Stream; | ||
10 | |||
11 | import org.eclipse.xtext.testing.InjectWith; | 4 | import org.eclipse.xtext.testing.InjectWith; |
12 | import org.eclipse.xtext.testing.extensions.InjectionExtension; | 5 | import org.eclipse.xtext.testing.extensions.InjectionExtension; |
13 | import org.junit.jupiter.api.Test; | 6 | import org.junit.jupiter.api.Test; |
@@ -16,13 +9,15 @@ import org.junit.jupiter.params.ParameterizedTest; | |||
16 | import org.junit.jupiter.params.provider.Arguments; | 9 | import org.junit.jupiter.params.provider.Arguments; |
17 | import org.junit.jupiter.params.provider.MethodSource; | 10 | import org.junit.jupiter.params.provider.MethodSource; |
18 | import org.junit.jupiter.params.provider.ValueSource; | 11 | import org.junit.jupiter.params.provider.ValueSource; |
19 | |||
20 | import com.google.inject.Inject; | ||
21 | |||
22 | import tools.refinery.language.model.tests.utils.ProblemParseHelper; | 12 | import tools.refinery.language.model.tests.utils.ProblemParseHelper; |
23 | import tools.refinery.language.model.tests.utils.WrappedProblem; | 13 | import tools.refinery.language.model.tests.utils.WrappedProblem; |
24 | import tools.refinery.language.tests.ProblemInjectorProvider; | 14 | import tools.refinery.language.tests.ProblemInjectorProvider; |
25 | 15 | ||
16 | import java.util.stream.Stream; | ||
17 | |||
18 | import static org.hamcrest.MatcherAssert.assertThat; | ||
19 | import static org.hamcrest.Matchers.*; | ||
20 | |||
26 | @ExtendWith(InjectionExtension.class) | 21 | @ExtendWith(InjectionExtension.class) |
27 | @InjectWith(ProblemInjectorProvider.class) | 22 | @InjectWith(ProblemInjectorProvider.class) |
28 | class NodeScopingTest { | 23 | class 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 @@ | |||
1 | package tools.refinery.language.tests.serializer; | 1 | package tools.refinery.language.tests.serializer; |
2 | 2 | ||
3 | import static org.hamcrest.MatcherAssert.assertThat; | 3 | import com.google.inject.Inject; |
4 | import static org.hamcrest.Matchers.equalTo; | ||
5 | |||
6 | import java.io.ByteArrayOutputStream; | ||
7 | import java.io.IOException; | ||
8 | import java.util.Map; | ||
9 | import java.util.stream.Stream; | ||
10 | |||
11 | import org.eclipse.emf.common.util.URI; | 4 | import org.eclipse.emf.common.util.URI; |
12 | import org.eclipse.emf.ecore.resource.Resource; | 5 | import org.eclipse.emf.ecore.resource.Resource; |
13 | import org.eclipse.emf.ecore.resource.ResourceSet; | 6 | import org.eclipse.emf.ecore.resource.ResourceSet; |
@@ -19,20 +12,18 @@ import org.junit.jupiter.api.extension.ExtendWith; | |||
19 | import org.junit.jupiter.params.ParameterizedTest; | 12 | import org.junit.jupiter.params.ParameterizedTest; |
20 | import org.junit.jupiter.params.provider.Arguments; | 13 | import org.junit.jupiter.params.provider.Arguments; |
21 | import org.junit.jupiter.params.provider.MethodSource; | 14 | import org.junit.jupiter.params.provider.MethodSource; |
22 | 15 | import tools.refinery.language.model.problem.*; | |
23 | import com.google.inject.Inject; | ||
24 | |||
25 | import tools.refinery.language.model.problem.Atom; | ||
26 | import tools.refinery.language.model.problem.LogicValue; | ||
27 | import tools.refinery.language.model.problem.Node; | ||
28 | import tools.refinery.language.model.problem.PredicateDefinition; | ||
29 | import tools.refinery.language.model.problem.Problem; | ||
30 | import tools.refinery.language.model.problem.ProblemFactory; | ||
31 | import tools.refinery.language.model.problem.Relation; | ||
32 | import tools.refinery.language.model.problem.VariableOrNode; | ||
33 | import tools.refinery.language.model.tests.utils.WrappedProblem; | 16 | import tools.refinery.language.model.tests.utils.WrappedProblem; |
34 | import tools.refinery.language.tests.ProblemInjectorProvider; | 17 | import tools.refinery.language.tests.ProblemInjectorProvider; |
35 | 18 | ||
19 | import java.io.ByteArrayOutputStream; | ||
20 | import java.io.IOException; | ||
21 | import java.util.Map; | ||
22 | import java.util.stream.Stream; | ||
23 | |||
24 | import static org.hamcrest.MatcherAssert.assertThat; | ||
25 | import static org.hamcrest.Matchers.equalTo; | ||
26 | |||
36 | @ExtendWith(InjectionExtension.class) | 27 | @ExtendWith(InjectionExtension.class) |
37 | @InjectWith(ProblemInjectorProvider.class) | 28 | @InjectWith(ProblemInjectorProvider.class) |
38 | class ProblemSerializerTest { | 29 | class 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 | ||