From c63126d2f1ce5f571c316b37e00fb43d2da7c7d3 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Wed, 31 Jan 2024 02:00:09 +0100 Subject: 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. --- .../language/tests/ProblemParsingTest.java | 2 +- .../tests/formatting2/ProblemFormatterTest.java | 8 +++---- .../language/tests/scoping/NodeScopingTest.java | 26 +++++++++++----------- .../tests/serializer/ProblemSerializerTest.java | 18 ++++++++------- 4 files changed, 28 insertions(+), 26 deletions(-) (limited to 'subprojects/language/src/test') 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 { error invalidTaxStatus(Person p) <-> taxStatus(p, CHILD), children(p, _q). - indiv family. + atom family. Family(family). members(family, anne): true. 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 { } @Test - void individualDeclarationTest() { - testFormatter(" indiv a , b . ", "indiv a, b.\n"); + void atomDeclarationTest() { + testFormatter(" atom a , b . ", "atom a, b.\n"); } @Test @@ -194,7 +194,7 @@ class ProblemFormatterTest { pred foo(node a). class Foo. foo(n1, n2). - indiv i1. + atom i1. !foo(i1, n1). pred bar(node a, node b). pred quux(). @@ -207,7 +207,7 @@ class ProblemFormatterTest { class Foo. foo(n1, n2). - indiv i1. + atom i1. !foo(i1, n1). 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 { } @ParameterizedTest - @MethodSource("individualNodeReferenceSource") - void individualNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { + @MethodSource("atomNodeReferenceSource") + void atomNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { var problem = parse(""" - indiv a, b. + atom a, b. pred predicate(node x, node y) <-> node(x). predicate({PARAM}a, {PARAM}a). ?predicate({PARAM}a, {PARAM}b). """, qualifiedNamePrefix, namedProblem); assertThat(problem.getResourceErrors(), empty()); assertThat(problem.nodeNames(), empty()); - assertThat(problem.assertion(0).arg(0).node(), equalTo(problem.individualNode("a"))); - assertThat(problem.assertion(0).arg(1).node(), equalTo(problem.individualNode("a"))); - assertThat(problem.assertion(1).arg(0).node(), equalTo(problem.individualNode("a"))); - assertThat(problem.assertion(1).arg(1).node(), equalTo(problem.individualNode("b"))); + assertThat(problem.assertion(0).arg(0).node(), equalTo(problem.atomNode("a"))); + assertThat(problem.assertion(0).arg(1).node(), equalTo(problem.atomNode("a"))); + assertThat(problem.assertion(1).arg(0).node(), equalTo(problem.atomNode("a"))); + assertThat(problem.assertion(1).arg(1).node(), equalTo(problem.atomNode("b"))); } @ParameterizedTest - @MethodSource("individualNodeReferenceSource") - void individualNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) { + @MethodSource("atomNodeReferenceSource") + void atomNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) { var problem = parse(""" - indiv b. + atom b. pred predicate(node a) <-> node({PARAM}b). - """); + """, qualifiedNamePrefix, namedProblem); assertThat(problem.getResourceErrors(), empty()); assertThat(problem.nodeNames(), empty()); - assertThat(problem.pred("predicate").conj(0).lit(0).arg(0).node(), equalTo(problem.individualNode("b"))); + assertThat(problem.pred("predicate").conj(0).lit(0).arg(0).node(), equalTo(problem.atomNode("b"))); } - static Stream individualNodeReferenceSource() { + static Stream atomNodeReferenceSource() { return Stream.of(Arguments.of("", false), Arguments.of("", true), Arguments.of("test::", true)); } 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 { var pred = createPred(); var node = ProblemFactory.eINSTANCE.createNode(); node.setName("a"); - var individualDeclaration = ProblemFactory.eINSTANCE.createIndividualDeclaration(); - individualDeclaration.getNodes().add(node); - problem.getStatements().add(individualDeclaration); + var atomDeclaration = ProblemFactory.eINSTANCE.createNodeDeclaration(); + atomDeclaration.setKind(NodeKind.ATOM); + atomDeclaration.getNodes().add(node); + problem.getStatements().add(atomDeclaration); createAssertion(pred, node, value); assertSerializedResult(""" pred foo(node p). - indiv a. + atom a. """ + serializedAssertion + "\n"); } @@ -79,15 +80,16 @@ class ProblemSerializerTest { var pred = createPred(); var node = ProblemFactory.eINSTANCE.createNode(); node.setName("a"); - var individualDeclaration = ProblemFactory.eINSTANCE.createIndividualDeclaration(); - individualDeclaration.getNodes().add(node); - problem.getStatements().add(individualDeclaration); + var atomDeclaration = ProblemFactory.eINSTANCE.createNodeDeclaration(); + atomDeclaration.setKind(NodeKind.ATOM); + atomDeclaration.getNodes().add(node); + problem.getStatements().add(atomDeclaration); createAssertion(pred, node, value, true); assertSerializedResult(""" pred foo(node p). - indiv a. + atom a. default\040""" + serializedAssertion + "\n"); } -- cgit v1.2.3-54-g00ecf