diff options
author | Kristóf Marussy <kristof@marussy.com> | 2024-01-31 02:00:09 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2024-01-31 18:45:13 +0100 |
commit | c63126d2f1ce5f571c316b37e00fb43d2da7c7d3 (patch) | |
tree | 16e9dd04624565f7c9ccedd17749a9f264e89cb0 /subprojects/language/src/test | |
parent | fix(build): avoid cyclic dependency (diff) | |
download | refinery-c63126d2f1ce5f571c316b37e00fb43d2da7c7d3.tar.gz refinery-c63126d2f1ce5f571c316b37e00fb43d2da7c7d3.tar.zst refinery-c63126d2f1ce5f571c316b37e00fb43d2da7c7d3.zip |
refactor(language): module and node declarations
* New default file extension: .refinery (.problem is also supported).
* Add module keyword for self-contained modules.
* Rename indiv declarations to atom declaration.
* Add node and multi declarations for explicitly declared nodes and
multi-objects, respectively.
Diffstat (limited to 'subprojects/language/src/test')
4 files changed, 28 insertions, 26 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 72d57f54..17ae5fbb 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 | |||
@@ -42,7 +42,7 @@ class ProblemParsingTest { | |||
42 | error invalidTaxStatus(Person p) <-> | 42 | error invalidTaxStatus(Person p) <-> |
43 | taxStatus(p, CHILD), children(p, _q). | 43 | taxStatus(p, CHILD), children(p, _q). |
44 | 44 | ||
45 | indiv family. | 45 | atom family. |
46 | Family(family). | 46 | Family(family). |
47 | members(family, anne): true. | 47 | members(family, anne): true. |
48 | members(family, bob). | 48 | 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 f688d970..4a15f9de 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 | |||
@@ -183,8 +183,8 @@ class ProblemFormatterTest { | |||
183 | } | 183 | } |
184 | 184 | ||
185 | @Test | 185 | @Test |
186 | void individualDeclarationTest() { | 186 | void atomDeclarationTest() { |
187 | testFormatter(" indiv a , b . ", "indiv a, b.\n"); | 187 | testFormatter(" atom a , b . ", "atom a, b.\n"); |
188 | } | 188 | } |
189 | 189 | ||
190 | @Test | 190 | @Test |
@@ -194,7 +194,7 @@ class ProblemFormatterTest { | |||
194 | pred foo(node a). | 194 | pred foo(node a). |
195 | class Foo. | 195 | class Foo. |
196 | foo(n1, n2). | 196 | foo(n1, n2). |
197 | indiv i1. | 197 | atom i1. |
198 | !foo(i1, n1). | 198 | !foo(i1, n1). |
199 | pred bar(node a, node b). | 199 | pred bar(node a, node b). |
200 | pred quux(). | 200 | pred quux(). |
@@ -207,7 +207,7 @@ class ProblemFormatterTest { | |||
207 | class Foo. | 207 | class Foo. |
208 | 208 | ||
209 | foo(n1, n2). | 209 | foo(n1, n2). |
210 | indiv i1. | 210 | atom i1. |
211 | !foo(i1, n1). | 211 | !foo(i1, n1). |
212 | 212 | ||
213 | pred bar(node a, node b). | 213 | pred bar(node a, node b). |
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 e76d2993..bc0320a6 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 | |||
@@ -69,35 +69,35 @@ class NodeScopingTest { | |||
69 | } | 69 | } |
70 | 70 | ||
71 | @ParameterizedTest | 71 | @ParameterizedTest |
72 | @MethodSource("individualNodeReferenceSource") | 72 | @MethodSource("atomNodeReferenceSource") |
73 | void individualNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { | 73 | void atomNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { |
74 | var problem = parse(""" | 74 | var problem = parse(""" |
75 | indiv a, b. | 75 | atom a, b. |
76 | pred predicate(node x, node y) <-> node(x). | 76 | pred predicate(node x, node y) <-> node(x). |
77 | predicate({PARAM}a, {PARAM}a). | 77 | predicate({PARAM}a, {PARAM}a). |
78 | ?predicate({PARAM}a, {PARAM}b). | 78 | ?predicate({PARAM}a, {PARAM}b). |
79 | """, qualifiedNamePrefix, namedProblem); | 79 | """, qualifiedNamePrefix, namedProblem); |
80 | assertThat(problem.getResourceErrors(), empty()); | 80 | assertThat(problem.getResourceErrors(), empty()); |
81 | assertThat(problem.nodeNames(), empty()); | 81 | assertThat(problem.nodeNames(), empty()); |
82 | assertThat(problem.assertion(0).arg(0).node(), equalTo(problem.individualNode("a"))); | 82 | assertThat(problem.assertion(0).arg(0).node(), equalTo(problem.atomNode("a"))); |
83 | assertThat(problem.assertion(0).arg(1).node(), equalTo(problem.individualNode("a"))); | 83 | assertThat(problem.assertion(0).arg(1).node(), equalTo(problem.atomNode("a"))); |
84 | assertThat(problem.assertion(1).arg(0).node(), equalTo(problem.individualNode("a"))); | 84 | assertThat(problem.assertion(1).arg(0).node(), equalTo(problem.atomNode("a"))); |
85 | assertThat(problem.assertion(1).arg(1).node(), equalTo(problem.individualNode("b"))); | 85 | assertThat(problem.assertion(1).arg(1).node(), equalTo(problem.atomNode("b"))); |
86 | } | 86 | } |
87 | 87 | ||
88 | @ParameterizedTest | 88 | @ParameterizedTest |
89 | @MethodSource("individualNodeReferenceSource") | 89 | @MethodSource("atomNodeReferenceSource") |
90 | void individualNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) { | 90 | void atomNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) { |
91 | var problem = parse(""" | 91 | var problem = parse(""" |
92 | indiv b. | 92 | atom b. |
93 | pred predicate(node a) <-> node({PARAM}b). | 93 | pred predicate(node a) <-> node({PARAM}b). |
94 | """); | 94 | """, qualifiedNamePrefix, namedProblem); |
95 | assertThat(problem.getResourceErrors(), empty()); | 95 | assertThat(problem.getResourceErrors(), empty()); |
96 | assertThat(problem.nodeNames(), empty()); | 96 | assertThat(problem.nodeNames(), empty()); |
97 | assertThat(problem.pred("predicate").conj(0).lit(0).arg(0).node(), equalTo(problem.individualNode("b"))); | 97 | assertThat(problem.pred("predicate").conj(0).lit(0).arg(0).node(), equalTo(problem.atomNode("b"))); |
98 | } | 98 | } |
99 | 99 | ||
100 | static Stream<Arguments> individualNodeReferenceSource() { | 100 | static Stream<Arguments> atomNodeReferenceSource() { |
101 | return Stream.of(Arguments.of("", false), Arguments.of("", true), Arguments.of("test::", true)); | 101 | return Stream.of(Arguments.of("", false), Arguments.of("", true), Arguments.of("test::", true)); |
102 | } | 102 | } |
103 | 103 | ||
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 65675b6b..ad583f8e 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 | |||
@@ -56,15 +56,16 @@ class ProblemSerializerTest { | |||
56 | var pred = createPred(); | 56 | var pred = createPred(); |
57 | var node = ProblemFactory.eINSTANCE.createNode(); | 57 | var node = ProblemFactory.eINSTANCE.createNode(); |
58 | node.setName("a"); | 58 | node.setName("a"); |
59 | var individualDeclaration = ProblemFactory.eINSTANCE.createIndividualDeclaration(); | 59 | var atomDeclaration = ProblemFactory.eINSTANCE.createNodeDeclaration(); |
60 | individualDeclaration.getNodes().add(node); | 60 | atomDeclaration.setKind(NodeKind.ATOM); |
61 | problem.getStatements().add(individualDeclaration); | 61 | atomDeclaration.getNodes().add(node); |
62 | problem.getStatements().add(atomDeclaration); | ||
62 | createAssertion(pred, node, value); | 63 | createAssertion(pred, node, value); |
63 | 64 | ||
64 | assertSerializedResult(""" | 65 | assertSerializedResult(""" |
65 | pred foo(node p). | 66 | pred foo(node p). |
66 | 67 | ||
67 | indiv a. | 68 | atom a. |
68 | """ + serializedAssertion + "\n"); | 69 | """ + serializedAssertion + "\n"); |
69 | } | 70 | } |
70 | 71 | ||
@@ -79,15 +80,16 @@ class ProblemSerializerTest { | |||
79 | var pred = createPred(); | 80 | var pred = createPred(); |
80 | var node = ProblemFactory.eINSTANCE.createNode(); | 81 | var node = ProblemFactory.eINSTANCE.createNode(); |
81 | node.setName("a"); | 82 | node.setName("a"); |
82 | var individualDeclaration = ProblemFactory.eINSTANCE.createIndividualDeclaration(); | 83 | var atomDeclaration = ProblemFactory.eINSTANCE.createNodeDeclaration(); |
83 | individualDeclaration.getNodes().add(node); | 84 | atomDeclaration.setKind(NodeKind.ATOM); |
84 | problem.getStatements().add(individualDeclaration); | 85 | atomDeclaration.getNodes().add(node); |
86 | problem.getStatements().add(atomDeclaration); | ||
85 | createAssertion(pred, node, value, true); | 87 | createAssertion(pred, node, value, true); |
86 | 88 | ||
87 | assertSerializedResult(""" | 89 | assertSerializedResult(""" |
88 | pred foo(node p). | 90 | pred foo(node p). |
89 | 91 | ||
90 | indiv a. | 92 | atom a. |
91 | default\040""" + serializedAssertion + "\n"); | 93 | default\040""" + serializedAssertion + "\n"); |
92 | } | 94 | } |
93 | 95 | ||