1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.lang3.function;
19
20 import static org.apache.commons.lang3.LangAssertions.assertNullPointerException;
21 import static org.junit.jupiter.api.Assertions.assertEquals;
22 import static org.junit.jupiter.api.Assertions.assertFalse;
23 import static org.junit.jupiter.api.Assertions.assertThrows;
24 import static org.junit.jupiter.api.Assertions.assertTrue;
25
26 import java.io.IOException;
27
28 import org.apache.commons.lang3.AbstractLangTest;
29 import org.junit.jupiter.api.Test;
30
31
32
33
34 class FailableBiPredicateTest extends AbstractLangTest {
35
36 @Test
37 void testAnd_bothTrue_returnsTrue() throws IOException {
38 final FailableBiPredicate<String, String, IOException> p = (a, b) -> true;
39 assertTrue(p.and((a, b) -> true).test("x", "y"));
40 }
41
42 @Test
43 void testAnd_firstFalse_returnsFalse() throws IOException {
44 final FailableBiPredicate<String, String, IOException> p = (a, b) -> false;
45 assertFalse(p.and((a, b) -> true).test("x", "y"));
46 }
47
48 @Test
49 void testAnd_nullOther_throwsNullPointerException() throws Throwable {
50 final FailableBiPredicate<String, String, IOException> p = (a, b) -> true;
51 assertNullPointerException(() -> p.and(null));
52 }
53
54 @Test
55 void testFalsePredicate_returnsFalse() throws Throwable {
56 assertFalse(FailableBiPredicate.falsePredicate().test("a", "b"));
57 }
58
59 @Test
60 void testNegate_invertsResult() throws IOException {
61 final FailableBiPredicate<String, String, IOException> p = (a, b) -> true;
62 assertFalse(p.negate().test("x", "y"));
63 assertTrue(p.negate().negate().test("x", "y"));
64 }
65
66 @Test
67 void testOr_bothFalse_returnsFalse() throws IOException {
68 final FailableBiPredicate<String, String, IOException> p = (a, b) -> false;
69 assertFalse(p.or((a, b) -> false).test("x", "y"));
70 }
71
72 @Test
73 void testOr_nullOther_throwsNullPointerException() throws Throwable {
74 final FailableBiPredicate<String, String, IOException> p = (a, b) -> false;
75 assertNullPointerException(() -> p.or(null));
76 }
77
78 @Test
79 void testOr_oneTrue_returnsTrue() throws IOException {
80 final FailableBiPredicate<String, String, IOException> p = (a, b) -> false;
81 assertTrue(p.or((a, b) -> true).test("x", "y"));
82 }
83
84 @Test
85 void testTest_evaluatesCorrectly() throws IOException {
86 final FailableBiPredicate<String, String, IOException> eq = String::equals;
87 assertTrue(eq.test("x", "x"));
88 assertFalse(eq.test("x", "y"));
89 }
90
91 @Test
92 void testTest_throwsException() {
93 final IOException expected = new IOException("fail");
94 final FailableBiPredicate<String, String, IOException> p = (a, b) -> {
95 throw expected;
96 };
97 final IOException thrown = assertThrows(IOException.class, () -> p.test("a", "b"));
98 assertEquals(expected, thrown);
99 }
100
101 @Test
102 void testTruePredicate_returnsTrue() throws Throwable {
103 assertTrue(FailableBiPredicate.truePredicate().test("a", "b"));
104 }
105 }