1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.io.filefilter;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.List;
24
25 import org.junit.jupiter.api.BeforeEach;
26 import org.junit.jupiter.api.Test;
27
28
29
30
31 public class AndFileFilterTest extends AbstractConditionalFileFilterTest {
32
33 private static final String DEFAULT_WORKING_PATH = "./AndFileFilterTestCase/";
34 private static final String WORKING_PATH_NAME_PROPERTY_KEY = AndFileFilterTest.class.getName() + ".workingDirectory";
35
36 private List<List<IOFileFilter>> testFilters;
37 private List<boolean[]> testTrueResults;
38 private List<boolean[]> testFalseResults;
39 private List<Boolean> testFileResults;
40 private List<Boolean> testFilenameResults;
41
42 @Override
43 protected IOFileFilter buildFilterUsingAdd(final List<IOFileFilter> filters) {
44 final AndFileFilter filter = new AndFileFilter();
45 filters.forEach(filter::addFileFilter);
46 return filter;
47 }
48
49 @Override
50 protected IOFileFilter buildFilterUsingConstructor(final List<IOFileFilter> filters) {
51 return new AndFileFilter(filters);
52 }
53
54 @Override
55 protected ConditionalFileFilter getConditionalFileFilter() {
56 return new AndFileFilter();
57 }
58
59 @Override
60 protected String getDefaultWorkingPath() {
61 return DEFAULT_WORKING_PATH;
62 }
63
64 @Override
65 protected List<boolean[]> getFalseResults() {
66 return this.testFalseResults;
67 }
68
69 @Override
70 protected List<Boolean> getFilenameResults() {
71 return this.testFilenameResults;
72 }
73
74 @Override
75 protected List<Boolean> getFileResults() {
76 return this.testFileResults;
77 }
78
79 @Override
80 protected List<List<IOFileFilter>> getTestFilters() {
81 return this.testFilters;
82 }
83
84 @Override
85 protected List<boolean[]> getTrueResults() {
86 return this.testTrueResults;
87 }
88
89 @Override
90 protected String getWorkingPathNamePropertyKey() {
91 return WORKING_PATH_NAME_PROPERTY_KEY;
92 }
93
94 @BeforeEach
95 public void setUpTestFilters() {
96
97
98 this.testFilters = new ArrayList<>();
99 this.testTrueResults = new ArrayList<>();
100 this.testFalseResults = new ArrayList<>();
101 this.testFileResults = new ArrayList<>();
102 this.testFilenameResults = new ArrayList<>();
103
104
105 {
106 testFilters.add(0, null);
107 testTrueResults.add(0, null);
108 testFalseResults.add(0, null);
109 testFileResults.add(0, null);
110 testFilenameResults.add(0, null);
111 }
112
113
114 {
115
116 final List<IOFileFilter> filters = new ArrayList<>();
117 filters.add(trueFilters[1]);
118 filters.add(trueFilters[2]);
119 filters.add(trueFilters[3]);
120
121 final boolean[] trueResults = {true, true, true};
122
123 final boolean[] falseResults = {false, false, false};
124
125 testFilters.add(1, filters);
126 testTrueResults.add(1, trueResults);
127 testFalseResults.add(1, falseResults);
128 testFileResults.add(1, Boolean.TRUE);
129 testFilenameResults.add(1, Boolean.TRUE);
130 }
131
132
133 {
134
135 final List<IOFileFilter> filters = new ArrayList<>();
136 filters.add(falseFilters[1]);
137 filters.add(trueFilters[1]);
138 filters.add(trueFilters[2]);
139 filters.add(trueFilters[3]);
140 filters.add(falseFilters[2]);
141 filters.add(falseFilters[3]);
142
143 final boolean[] trueResults = {false, false, false};
144
145 final boolean[] falseResults = {true, false, false};
146
147 testFilters.add(2, filters);
148 testTrueResults.add(2, trueResults);
149 testFalseResults.add(2, falseResults);
150 testFileResults.add(2, Boolean.FALSE);
151 testFilenameResults.add(2, Boolean.FALSE);
152 }
153
154
155 {
156
157 final List<IOFileFilter> filters = new ArrayList<>();
158 filters.add(trueFilters[1]);
159 filters.add(falseFilters[1]);
160 filters.add(trueFilters[2]);
161 filters.add(trueFilters[3]);
162 filters.add(falseFilters[2]);
163 filters.add(falseFilters[3]);
164
165 final boolean[] trueResults = {true, false, false};
166
167 final boolean[] falseResults = {true, false, false};
168
169 testFilters.add(3, filters);
170 testTrueResults.add(3, trueResults);
171 testFalseResults.add(3, falseResults);
172 testFileResults.add(3, Boolean.FALSE);
173 testFilenameResults.add(3, Boolean.FALSE);
174 }
175
176
177 {
178
179 final List<IOFileFilter> filters = new ArrayList<>();
180 filters.add(trueFilters[1]);
181 filters.add(trueFilters[2]);
182 filters.add(falseFilters[1]);
183 filters.add(trueFilters[3]);
184 filters.add(falseFilters[2]);
185 filters.add(falseFilters[3]);
186
187 final boolean[] trueResults = {true, true, false};
188
189 final boolean[] falseResults = {true, false, false};
190
191 testFilters.add(4, filters);
192 testTrueResults.add(4, trueResults);
193 testFalseResults.add(4, falseResults);
194 testFileResults.add(4, Boolean.FALSE);
195 testFilenameResults.add(4, Boolean.FALSE);
196 }
197
198
199 {
200
201 final List<IOFileFilter> filters = new ArrayList<>();
202 filters.add(falseFilters[1]);
203 filters.add(trueFilters[1]);
204 filters.add(falseFilters[2]);
205 filters.add(falseFilters[3]);
206 filters.add(trueFilters[2]);
207 filters.add(trueFilters[3]);
208
209 final boolean[] trueResults = {false, false, false};
210
211 final boolean[] falseResults = {true, false, false};
212
213 testFilters.add(5, filters);
214 testTrueResults.add(5, trueResults);
215 testFalseResults.add(5, falseResults);
216 testFileResults.add(5, Boolean.FALSE);
217 testFilenameResults.add(5, Boolean.FALSE);
218 }
219
220
221 {
222 final List<IOFileFilter> filters = new ArrayList<>();
223 filters.add(trueFilters[1]);
224 filters.add(falseFilters[1]);
225 filters.add(falseFilters[2]);
226 filters.add(trueFilters[2]);
227 filters.add(trueFilters[3]);
228 filters.add(falseFilters[3]);
229
230 final boolean[] trueResults = {true, false, false};
231
232 final boolean[] falseResults = {true, false, false};
233
234 testFilters.add(6, filters);
235 testTrueResults.add(6, trueResults);
236 testFalseResults.add(6, falseResults);
237 testFileResults.add(6, Boolean.FALSE);
238 testFilenameResults.add(6, Boolean.FALSE);
239 }
240
241
242 {
243 final List<IOFileFilter> filters = new ArrayList<>();
244 filters.add(falseFilters[1]);
245 filters.add(falseFilters[2]);
246 filters.add(trueFilters[3]);
247 filters.add(falseFilters[3]);
248 filters.add(trueFilters[2]);
249 filters.add(trueFilters[3]);
250
251 final boolean[] trueResults = {false, false, false};
252
253 final boolean[] falseResults = {true, false, false};
254
255 testFilters.add(7, filters);
256 testTrueResults.add(7, trueResults);
257 testFalseResults.add(7, falseResults);
258 testFileResults.add(7, Boolean.FALSE);
259 testFilenameResults.add(7, Boolean.FALSE);
260 }
261
262
263 {
264 final List<IOFileFilter> filters = new ArrayList<>();
265 filters.add(trueFilters[1]);
266 filters.add(trueFilters[2]);
267 filters.add(trueFilters[3]);
268 filters.add(falseFilters[1]);
269
270 final boolean[] trueResults = {true, true, true};
271
272 final boolean[] falseResults = {true, false, false};
273
274 testFilters.add(8, filters);
275 testTrueResults.add(8, trueResults);
276 testFalseResults.add(8, falseResults);
277 testFileResults.add(8, Boolean.FALSE);
278 testFilenameResults.add(8, Boolean.FALSE);
279 }
280
281
282 {
283 final List<IOFileFilter> filters = new ArrayList<>();
284 filters.add(falseFilters[1]);
285 filters.add(falseFilters[2]);
286 filters.add(falseFilters[3]);
287
288 final boolean[] trueResults = {false, false, false};
289
290 final boolean[] falseResults = {true, false, false};
291
292 testFilters.add(9, filters);
293 testTrueResults.add(9, trueResults);
294 testFalseResults.add(9, falseResults);
295 testFileResults.add(9, Boolean.FALSE);
296 testFilenameResults.add(9, Boolean.FALSE);
297 }
298 }
299
300 @Test
301 public void testSetTestFiltersClearsOld() {
302
303 final List<IOFileFilter> simpleEmptyFileFilter = Collections.singletonList(EmptyFileFilter.EMPTY);
304 final AndFileFilter andFileFilter = new AndFileFilter(simpleEmptyFileFilter);
305
306 assertEquals(simpleEmptyFileFilter, andFileFilter.getFileFilters());
307
308 final List<IOFileFilter> simpleNonEmptyFilter = Collections.singletonList(EmptyFileFilter.NOT_EMPTY);
309
310 andFileFilter.setFileFilters(simpleNonEmptyFilter);
311 assertEquals(simpleNonEmptyFilter, andFileFilter.getFileFilters());
312 }
313 }