1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.io.function;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertFalse;
22 import static org.junit.jupiter.api.Assertions.assertSame;
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 import java.io.UncheckedIOException;
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.List;
33 import java.util.function.Predicate;
34
35 import org.junit.jupiter.api.Test;
36 import org.junit.jupiter.api.function.Executable;
37
38
39
40
41 public class IOPredicateTest {
42
43
44 private static final IOPredicate<Path> IS_HIDDEN = Files::isHidden;
45
46 private static final Path PATH_FIXTURE = Paths.get("src/test/resources/org/apache/commons/io/abitmorethan16k.txt");
47
48 private static final Object THROWING_EQUALS = new Object() {
49 @Override
50 public boolean equals(final Object obj) {
51 throw Erase.rethrow(new IOException("Expected"));
52 }
53 };
54
55 private static final Predicate<Object> THROWING_UNCHECKED_PREDICATE = TestConstants.THROWING_IO_PREDICATE.asPredicate();
56
57 private void assertThrowsChecked(final Executable executable) {
58 assertThrows(IOException.class, executable);
59 }
60
61 private void assertThrowsUnchecked(final Executable executable) {
62 assertThrows(UncheckedIOException.class, executable);
63 }
64
65 @Test
66 public void testAndChecked() throws IOException {
67 assertFalse(IS_HIDDEN.and(IS_HIDDEN).test(PATH_FIXTURE));
68 assertTrue(IOPredicate.alwaysTrue().and(IOPredicate.alwaysTrue()).test(PATH_FIXTURE));
69 assertFalse(IOPredicate.alwaysFalse().and(IOPredicate.alwaysTrue()).test(PATH_FIXTURE));
70 assertFalse(IOPredicate.alwaysTrue().and(IOPredicate.alwaysFalse()).test(PATH_FIXTURE));
71 assertFalse(IOPredicate.alwaysFalse().and(IOPredicate.alwaysFalse()).test(PATH_FIXTURE));
72 }
73
74 @Test
75 public void testAndUnchecked() {
76 assertThrowsUnchecked(() -> THROWING_UNCHECKED_PREDICATE.and(THROWING_UNCHECKED_PREDICATE).test(PATH_FIXTURE));
77 }
78
79 @Test
80 public void testAsPredicate() throws IOException {
81 new ArrayList<>().removeIf(THROWING_UNCHECKED_PREDICATE);
82 final List<String> list = new ArrayList<>();
83 list.add("A");
84 list.add("B");
85 list.removeIf(Predicate.isEqual("A"));
86 assertFalse(list.contains("A"));
87 list.removeIf(IOPredicate.isEqual("B").asPredicate());
88 assertFalse(list.contains("B"));
89 assertFalse(IS_HIDDEN.test(PATH_FIXTURE));
90 }
91
92 @Test
93 public void testFalse() throws IOException {
94 assertFalse(Constants.IO_PREDICATE_FALSE.test("A"));
95
96 final IOPredicate<String> alwaysFalse = IOPredicate.alwaysFalse();
97 assertFalse(alwaysFalse.test("A"));
98 assertEquals(IOPredicate.alwaysFalse(), IOPredicate.alwaysFalse());
99 assertSame(IOPredicate.alwaysFalse(), IOPredicate.alwaysFalse());
100 }
101
102 @Test
103 public void testIsEqualChecked() throws IOException {
104 assertThrowsChecked(() -> IOPredicate.isEqual(THROWING_EQUALS).test("B"));
105 assertFalse(IOPredicate.isEqual(null).test("A"));
106 assertTrue(IOPredicate.isEqual("B").test("B"));
107 assertFalse(IOPredicate.isEqual("A").test("B"));
108 assertFalse(IOPredicate.isEqual("B").test("A"));
109 }
110
111 @Test
112 public void testIsEqualUnchecked() {
113 assertThrowsUnchecked(() -> IOPredicate.isEqual(THROWING_EQUALS).asPredicate().test("B"));
114 assertFalse(IOPredicate.isEqual(null).asPredicate().test("A"));
115 assertTrue(IOPredicate.isEqual("B").asPredicate().test("B"));
116 assertFalse(IOPredicate.isEqual("A").asPredicate().test("B"));
117 assertFalse(IOPredicate.isEqual("B").asPredicate().test("A"));
118 }
119
120 @Test
121 public void testNegateChecked() throws IOException {
122 assertTrue(IS_HIDDEN.negate().test(PATH_FIXTURE));
123 assertFalse(IOPredicate.alwaysTrue().negate().test(PATH_FIXTURE));
124 }
125
126 @Test
127 public void testNegateUnchecked() {
128 assertTrue(IS_HIDDEN.negate().asPredicate().test(PATH_FIXTURE));
129 assertTrue(IS_HIDDEN.asPredicate().negate().test(PATH_FIXTURE));
130 assertThrowsUnchecked(() -> THROWING_UNCHECKED_PREDICATE.negate().test(PATH_FIXTURE));
131 }
132
133 @Test
134 public void testOrChecked() throws IOException {
135 assertFalse(IS_HIDDEN.or(IS_HIDDEN).test(PATH_FIXTURE));
136 assertTrue(IOPredicate.alwaysTrue().or(IOPredicate.alwaysFalse()).test(PATH_FIXTURE));
137 assertTrue(IOPredicate.alwaysFalse().or(IOPredicate.alwaysTrue()).test(PATH_FIXTURE));
138 }
139
140 @Test
141 public void testOrUnchecked() {
142 assertFalse(IS_HIDDEN.asPredicate().or(e -> false).test(PATH_FIXTURE));
143 assertThrowsUnchecked(() -> THROWING_UNCHECKED_PREDICATE.or(THROWING_UNCHECKED_PREDICATE).test(PATH_FIXTURE));
144 }
145
146 @Test
147 public void testTestChecked() throws IOException {
148 assertThrowsChecked(() -> TestConstants.THROWING_IO_PREDICATE.test(null));
149 assertTrue(Constants.IO_PREDICATE_TRUE.test("A"));
150 }
151
152 @Test
153 public void testTestUnchecked() {
154 assertThrowsUnchecked(() -> THROWING_UNCHECKED_PREDICATE.test(null));
155 assertTrue(Constants.IO_PREDICATE_TRUE.asPredicate().test("A"));
156 }
157
158 @Test
159 public void testTrue() throws IOException {
160 assertTrue(Constants.IO_PREDICATE_TRUE.test("A"));
161
162 final IOPredicate<String> alwaysTrue = IOPredicate.alwaysTrue();
163 assertTrue(alwaysTrue.test("A"));
164 assertEquals(IOPredicate.alwaysTrue(), IOPredicate.alwaysTrue());
165 assertSame(IOPredicate.alwaysTrue(), IOPredicate.alwaysTrue());
166 }
167
168 }