aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/logic/src/test/java/tools/refinery/logic/term/bool/BoolTermsEvaluateTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/logic/src/test/java/tools/refinery/logic/term/bool/BoolTermsEvaluateTest.java')
-rw-r--r--subprojects/logic/src/test/java/tools/refinery/logic/term/bool/BoolTermsEvaluateTest.java76
1 files changed, 76 insertions, 0 deletions
diff --git a/subprojects/logic/src/test/java/tools/refinery/logic/term/bool/BoolTermsEvaluateTest.java b/subprojects/logic/src/test/java/tools/refinery/logic/term/bool/BoolTermsEvaluateTest.java
new file mode 100644
index 00000000..7f65591f
--- /dev/null
+++ b/subprojects/logic/src/test/java/tools/refinery/logic/term/bool/BoolTermsEvaluateTest.java
@@ -0,0 +1,76 @@
1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.logic.term.bool;
7
8import org.junit.jupiter.params.ParameterizedTest;
9import org.junit.jupiter.params.provider.CsvSource;
10import tools.refinery.logic.term.bool.BoolTerms;
11import tools.refinery.logic.valuation.Valuation;
12
13import static org.hamcrest.MatcherAssert.assertThat;
14import static org.hamcrest.Matchers.is;
15
16class BoolTermsEvaluateTest {
17 @ParameterizedTest(name = "!{0} == {1}")
18 @CsvSource(value = {
19 "false, true",
20 "true, false",
21 "null, null"
22 }, nullValues = "null")
23 void notTest(Boolean a, Boolean result) {
24 var term = BoolTerms.not(BoolTerms.constant(a));
25 assertThat(term.getType(), is(Boolean.class));
26 assertThat(term.evaluate(Valuation.empty()), is(result));
27 }
28
29 @ParameterizedTest(name = "{0} && {1} == {2}")
30 @CsvSource(value = {
31 "false, false, false",
32 "false, true, false",
33 "true, false, false",
34 "true, true, true",
35 "false, null, null",
36 "null, false, null",
37 "null, null, null"
38 }, nullValues = "null")
39 void andTest(Boolean a, Boolean b, Boolean result) {
40 var term = BoolTerms.and(BoolTerms.constant(a), BoolTerms.constant(b));
41 assertThat(term.getType(), is(Boolean.class));
42 assertThat(term.evaluate(Valuation.empty()), is(result));
43 }
44
45 @ParameterizedTest(name = "{0} || {1} == {2}")
46 @CsvSource(value = {
47 "false, false, false",
48 "false, true, true",
49 "true, false, true",
50 "true, true, true",
51 "true, null, null",
52 "null, true, null",
53 "null, null, null"
54 }, nullValues = "null")
55 void orTest(Boolean a, Boolean b, Boolean result) {
56 var term = BoolTerms.or(BoolTerms.constant(a), BoolTerms.constant(b));
57 assertThat(term.getType(), is(Boolean.class));
58 assertThat(term.evaluate(Valuation.empty()), is(result));
59 }
60
61 @ParameterizedTest(name = "{0} ^^ {1} == {2}")
62 @CsvSource(value = {
63 "false, false, false",
64 "false, true, true",
65 "true, false, true",
66 "true, true, false",
67 "false, null, null",
68 "null, false, null",
69 "null, null, null"
70 }, nullValues = "null")
71 void xorTest(Boolean a, Boolean b, Boolean result) {
72 var term = BoolTerms.xor(BoolTerms.constant(a), BoolTerms.constant(b));
73 assertThat(term.getType(), is(Boolean.class));
74 assertThat(term.evaluate(Valuation.empty()), is(result));
75 }
76}