aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language/src/test
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-08-01 01:44:06 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-08-01 01:44:06 +0200
commite86447b4d74677d86271336727e0bbff9f4c54b5 (patch)
tree5f32aa78c8aa8a72ec0303cb5675eb83877b3700 /subprojects/language/src/test
parentchore(deps): bump dependencies (diff)
downloadrefinery-e86447b4d74677d86271336727e0bbff9f4c54b5.tar.gz
refinery-e86447b4d74677d86271336727e0bbff9f4c54b5.tar.zst
refinery-e86447b4d74677d86271336727e0bbff9f4c54b5.zip
refactor: direct predicates
* Remove the direct keyword because it can be inferred * Use may/must/current instead of value literals * Transformation rule changes
Diffstat (limited to 'subprojects/language/src/test')
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/rules/RuleParsingTest.java (renamed from subprojects/language/src/test/java/tools/refinery/language/tests/rules/DirectRuleParsingTest.java)31
1 files changed, 17 insertions, 14 deletions
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/rules/DirectRuleParsingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/rules/RuleParsingTest.java
index d5ee722b..3700dcc1 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/rules/DirectRuleParsingTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/rules/RuleParsingTest.java
@@ -19,20 +19,23 @@ import tools.refinery.language.tests.ProblemInjectorProvider;
19 19
20@ExtendWith(InjectionExtension.class) 20@ExtendWith(InjectionExtension.class)
21@InjectWith(ProblemInjectorProvider.class) 21@InjectWith(ProblemInjectorProvider.class)
22class DirectRuleParsingTest { 22class RuleParsingTest {
23 @Inject 23 @Inject
24 private ProblemParseHelper parseHelper; 24 private ProblemParseHelper parseHelper;
25 25
26 @ParameterizedTest 26 @ParameterizedTest
27 @ValueSource(strings = { """ 27 @ValueSource(strings = { """
28 pred Person(p). 28 pred Person(p).
29 direct rule r(p1): Person(p1) = true ~> Person(p1) = false. 29 rule r(p1): must Person(p1) ==> Person(p1) = false.
30 """, """ 30 """, """
31 pred Person(p). 31 pred Person(p).
32 direct rule r(p1): Person(p1) = true ~> Person(p1): false. 32 rule r(p1): must Person(p1) ==> Person(p1): false.
33 """, """ 33 """, """
34 pred Person(p). 34 pred Person(p).
35 direct rule r(p1): Person(p1): false ~> delete p1. 35 rule r(p1): must Person(p1) ==> !Person(p1).
36 """, """
37 pred Person(p).
38 rule r(p1): must Person(p1) ==> delete p1.
36 """ }) 39 """ })
37 void simpleTest(String text) { 40 void simpleTest(String text) {
38 var problem = parseHelper.parse(text); 41 var problem = parseHelper.parse(text);
@@ -43,41 +46,41 @@ class DirectRuleParsingTest {
43 void newNodeTest() { 46 void newNodeTest() {
44 var problem = parseHelper.parse(""" 47 var problem = parseHelper.parse("""
45 pred Person(p). 48 pred Person(p).
46 direct rule r(p1): Person(p1) = true ~> new p2, Person(p2) = unknown. 49 rule r(p1): must Person(p1) ==> new p2, Person(p2) = unknown.
47 """); 50 """);
48 assertThat(problem.errors(), empty()); 51 assertThat(problem.errors(), empty());
49 assertThat(problem.rule("r").param(0), equalTo(problem.rule("r").conj(0).lit(0).valueAtom().arg(0).variable())); 52 assertThat(problem.rule("r").param(0), equalTo(problem.rule("r").conj(0).lit(0).arg(0).variable()));
50 assertThat(problem.rule("r").actionLit(0).newVar(), 53 assertThat(problem.rule("r").consequent(0).action(0).newVar(),
51 equalTo(problem.rule("r").actionLit(1).valueAtom().arg(0).variable())); 54 equalTo(problem.rule("r").consequent(0).action(1).assertedAtom().arg(0).variable()));
52 } 55 }
53 56
54 @Test 57 @Test
55 void differentScopeTest() { 58 void differentScopeTest() {
56 var problem = parseHelper.parse(""" 59 var problem = parseHelper.parse("""
57 pred Friend(a, b). 60 pred Friend(a, b).
58 direct rule r(p1): Friend(p1, p2) = false ~> new p2, Friend(p1, p2) = true. 61 rule r(p1): !may Friend(p1, p2) ==> new p2, Friend(p1, p2) = true.
59 """); 62 """);
60 assertThat(problem.errors(), empty()); 63 assertThat(problem.errors(), empty());
61 assertThat(problem.rule("r").conj(0).lit(0).valueAtom().arg(1).variable(), 64 assertThat(problem.rule("r").conj(0).lit(0).negated().arg(1).variable(),
62 not(equalTo(problem.rule("r").actionLit(1).valueAtom().arg(1).variable()))); 65 not(equalTo(problem.rule("r").consequent(0).action(1).assertedAtom().arg(1).variable())));
63 } 66 }
64 67
65 @Test 68 @Test
66 void parameterShadowingTest() { 69 void parameterShadowingTest() {
67 var problem = parseHelper.parse(""" 70 var problem = parseHelper.parse("""
68 pred Friend(a, b). 71 pred Friend(a, b).
69 direct rule r(p1, p2): Friend(p1, p2) = false ~> new p2, Friend(p1, p2) = true. 72 rule r(p1, p2): !may Friend(p1, p2) ==> new p2, Friend(p1, p2) = true.
70 """); 73 """);
71 assertThat(problem.errors(), empty()); 74 assertThat(problem.errors(), empty());
72 assertThat(problem.rule("r").param(1), 75 assertThat(problem.rule("r").param(1),
73 not(equalTo(problem.rule("r").actionLit(1).valueAtom().arg(1).variable()))); 76 not(equalTo(problem.rule("r").consequent(0).action(1).assertedAtom().arg(1).variable())));
74 } 77 }
75 78
76 @Test 79 @Test
77 void deleteDifferentScopeNodeTest() { 80 void deleteDifferentScopeNodeTest() {
78 var problem = parseHelper.parse(""" 81 var problem = parseHelper.parse("""
79 pred Person(p). 82 pred Person(p).
80 direct rule r(p1): Friend(p1, p2) = true ~> delete p2. 83 rule r(p1): must Friend(p1, p2) ==> delete p2.
81 """); 84 """);
82 assertThat(problem.errors(), not(empty())); 85 assertThat(problem.errors(), not(empty()));
83 } 86 }