diff options
author | 2022-08-01 01:44:06 +0200 | |
---|---|---|
committer | 2022-08-01 01:44:06 +0200 | |
commit | e86447b4d74677d86271336727e0bbff9f4c54b5 (patch) | |
tree | 5f32aa78c8aa8a72ec0303cb5675eb83877b3700 /subprojects/language/src/test/java/tools | |
parent | chore(deps): bump dependencies (diff) | |
download | refinery-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/java/tools')
-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) |
22 | class DirectRuleParsingTest { | 22 | class 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 | } |