diff options
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.java | 76 |
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 | */ | ||
6 | package tools.refinery.logic.term.bool; | ||
7 | |||
8 | import org.junit.jupiter.params.ParameterizedTest; | ||
9 | import org.junit.jupiter.params.provider.CsvSource; | ||
10 | import tools.refinery.logic.term.bool.BoolTerms; | ||
11 | import tools.refinery.logic.valuation.Valuation; | ||
12 | |||
13 | import static org.hamcrest.MatcherAssert.assertThat; | ||
14 | import static org.hamcrest.Matchers.is; | ||
15 | |||
16 | class 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 | } | ||