View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.io.filefilter;
18  
19  import java.util.ArrayList;
20  import java.util.List;
21  
22  import org.junit.jupiter.api.BeforeEach;
23  
24  /**
25   * Tests {@link IOFileFilter}.
26   */
27  public class OrFileFilterTest extends AbstractConditionalFileFilterTest {
28  
29    private static final String DEFAULT_WORKING_PATH = "./OrFileFilterTestCase/";
30    private static final String WORKING_PATH_NAME_PROPERTY_KEY = OrFileFilterTest.class.getName() + ".workingDirectory";
31  
32    private List<List<IOFileFilter>> testFilters;
33    private List<boolean[]> testTrueResults;
34    private List<boolean[]> testFalseResults;
35    private List<Boolean> testFileResults;
36    private List<Boolean> testFilenameResults;
37  
38    @Override
39    protected IOFileFilter buildFilterUsingAdd(final List<IOFileFilter> filters) {
40      final OrFileFilter filter = new OrFileFilter();
41      filters.forEach(filter::addFileFilter);
42      return filter;
43    }
44  
45    @Override
46    protected IOFileFilter buildFilterUsingConstructor(final List<IOFileFilter> filters) {
47      return new OrFileFilter(filters);
48    }
49  
50    @Override
51    protected ConditionalFileFilter getConditionalFileFilter() {
52      return new OrFileFilter();
53    }
54  
55    @Override
56    protected String getDefaultWorkingPath() {
57      return DEFAULT_WORKING_PATH;
58    }
59  
60    @Override
61    protected List<boolean[]> getFalseResults() {
62      return this.testFalseResults;
63    }
64  
65    @Override
66    protected List<Boolean> getFilenameResults() {
67      return this.testFilenameResults;
68    }
69  
70    @Override
71    protected List<Boolean> getFileResults() {
72      return this.testFileResults;
73    }
74  
75    @Override
76    protected List<List<IOFileFilter>>  getTestFilters() {
77      return this.testFilters;
78    }
79  
80    @Override
81    protected List<boolean[]> getTrueResults() {
82      return this.testTrueResults;
83    }
84  
85    @Override
86    protected String getWorkingPathNamePropertyKey() {
87      return WORKING_PATH_NAME_PROPERTY_KEY;
88    }
89  
90    @BeforeEach
91    public void setUpTestFilters() {
92      // filters
93      //tests
94      this.testFilters = new ArrayList<>();
95      this.testTrueResults = new ArrayList<>();
96      this.testFalseResults = new ArrayList<>();
97      this.testFileResults = new ArrayList<>();
98      this.testFilenameResults = new ArrayList<>();
99  
100     // test 0 - add empty elements
101     {
102       testFilters.add(0, null);
103       testTrueResults.add(0, null);
104       testFalseResults.add(0, null);
105       testFileResults.add(0, null);
106       testFilenameResults.add(0, null);
107     }
108 
109     // test 1 - Test conditional or with all filters returning true
110     {
111       // test 1 filters
112       final List<IOFileFilter> filters = new ArrayList<>();
113       filters.add(trueFilters[1]);
114       filters.add(trueFilters[2]);
115       filters.add(trueFilters[3]);
116       // test 1 true results
117       final boolean[] trueResults = {true, false, false};
118       // test 1 false results
119       final boolean[] falseResults = {false, false, false};
120 
121       testFilters.add(1, filters);
122       testTrueResults.add(1, trueResults);
123       testFalseResults.add(1, falseResults);
124       testFileResults.add(1, Boolean.TRUE);
125       testFilenameResults.add(1, Boolean.TRUE);
126     }
127 
128     // test 2 - Test conditional or with first filter returning false
129     {
130       // test 2 filters
131       final List<IOFileFilter> filters = new ArrayList<>();
132       filters.add(falseFilters[1]);
133       filters.add(trueFilters[1]);
134       filters.add(trueFilters[2]);
135       filters.add(trueFilters[3]);
136       filters.add(falseFilters[2]);
137       filters.add(falseFilters[3]);
138       // test 2 true results
139       final boolean[] trueResults = {true, false, false};
140       // test 2 false results
141       final boolean[] falseResults = {true, false, false};
142 
143       testFilters.add(2, filters);
144       testTrueResults.add(2, trueResults);
145       testFalseResults.add(2, falseResults);
146       testFileResults.add(2, Boolean.TRUE);
147       testFilenameResults.add(2, Boolean.TRUE);
148     }
149 
150     // test 3 - Test conditional or with second filter returning false
151     {
152       // test 3 filters
153       final List<IOFileFilter> filters = new ArrayList<>();
154       filters.add(trueFilters[1]);
155       filters.add(falseFilters[1]);
156       filters.add(trueFilters[2]);
157       filters.add(trueFilters[3]);
158       filters.add(falseFilters[2]);
159       filters.add(falseFilters[3]);
160       // test 3 true results
161       final boolean[] trueResults = {true, false, false};
162       // test 3 false results
163       final boolean[] falseResults = {false, false, false};
164 
165       testFilters.add(3, filters);
166       testTrueResults.add(3, trueResults);
167       testFalseResults.add(3, falseResults);
168       testFileResults.add(3, Boolean.TRUE);
169       testFilenameResults.add(3, Boolean.TRUE);
170     }
171 
172     // test 4 - Test conditional or with third filter returning false
173     {
174       // test 4 filters
175       final List<IOFileFilter> filters = new ArrayList<>();
176       filters.add(trueFilters[1]);
177       filters.add(trueFilters[2]);
178       filters.add(falseFilters[1]);
179       filters.add(trueFilters[3]);
180       filters.add(falseFilters[2]);
181       filters.add(falseFilters[3]);
182       // test 4 true results
183       final boolean[] trueResults = {true, false, false};
184       // test 4 false results
185       final boolean[] falseResults = {false, false, false};
186 
187       testFilters.add(4, filters);
188       testTrueResults.add(4, trueResults);
189       testFalseResults.add(4, falseResults);
190       testFileResults.add(4, Boolean.TRUE);
191       testFilenameResults.add(4, Boolean.TRUE);
192     }
193 
194     // test 5 - Test conditional or with first and third filters returning false
195     {
196       // test 5 filters
197       final List<IOFileFilter> filters = new ArrayList<>();
198       filters.add(falseFilters[1]);
199       filters.add(trueFilters[1]);
200       filters.add(falseFilters[2]);
201       filters.add(falseFilters[3]);
202       filters.add(trueFilters[2]);
203       filters.add(trueFilters[3]);
204       // test 5 true results
205       final boolean[] trueResults = {true, false, false};
206       // test 5 false results
207       final boolean[] falseResults = {true, false, false};
208 
209       testFilters.add(5, filters);
210       testTrueResults.add(5, trueResults);
211       testFalseResults.add(5, falseResults);
212       testFileResults.add(5, Boolean.TRUE);
213       testFilenameResults.add(5, Boolean.TRUE);
214     }
215 
216     // test 6 - Test conditional or with second and third filters returning false
217     {
218       final List<IOFileFilter> filters = new ArrayList<>();
219       filters.add(trueFilters[1]);
220       filters.add(falseFilters[1]);
221       filters.add(falseFilters[2]);
222       filters.add(trueFilters[2]);
223       filters.add(trueFilters[3]);
224       filters.add(falseFilters[3]);
225       // test 6 true results
226       final boolean[] trueResults = {true, false, false};
227       // test 6 false results
228       final boolean[] falseResults = {false, false, false};
229 
230       testFilters.add(6, filters);
231       testTrueResults.add(6, trueResults);
232       testFalseResults.add(6, falseResults);
233       testFileResults.add(6, Boolean.TRUE);
234       testFilenameResults.add(6, Boolean.TRUE);
235     }
236 
237     // test 7 - Test conditional or with first and second filters returning false
238     {
239       final List<IOFileFilter> filters = new ArrayList<>();
240       filters.add(falseFilters[1]);
241       filters.add(falseFilters[2]);
242       filters.add(trueFilters[1]);
243       filters.add(falseFilters[3]);
244       filters.add(trueFilters[2]);
245       filters.add(trueFilters[3]);
246       // test 7 true results
247       final boolean[] trueResults = {true, false, false};
248       // test 7 false results
249       final boolean[] falseResults = {true, true, false};
250 
251       testFilters.add(7, filters);
252       testTrueResults.add(7, trueResults);
253       testFalseResults.add(7, falseResults);
254       testFileResults.add(7, Boolean.TRUE);
255       testFilenameResults.add(7, Boolean.TRUE);
256     }
257 
258     // test 8 - Test conditional or with fourth filter returning false
259     {
260       final List<IOFileFilter> filters = new ArrayList<>();
261       filters.add(trueFilters[1]);
262       filters.add(trueFilters[2]);
263       filters.add(trueFilters[3]);
264       filters.add(falseFilters[1]);
265       // test 8 true results
266       final boolean[] trueResults = {true, false, false};
267       // test 8 false results
268       final boolean[] falseResults = {false, false, false};
269 
270       testFilters.add(8, filters);
271       testTrueResults.add(8, trueResults);
272       testFalseResults.add(8, falseResults);
273       testFileResults.add(8, Boolean.TRUE);
274       testFilenameResults.add(8, Boolean.TRUE);
275     }
276 
277     // test 9 - Test conditional or with all filters returning false
278     {
279       final List<IOFileFilter> filters = new ArrayList<>();
280       filters.add(falseFilters[1]);
281       filters.add(falseFilters[2]);
282       filters.add(falseFilters[3]);
283       // test 9 true results
284       final boolean[] trueResults = {false, false, false};
285       // test 9 false results
286       final boolean[] falseResults = {true, true, true};
287 
288       testFilters.add(9, filters);
289       testTrueResults.add(9, trueResults);
290       testFalseResults.add(9, falseResults);
291       testFileResults.add(9, Boolean.FALSE);
292       testFilenameResults.add(9, Boolean.FALSE);
293     }
294   }
295 }