001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.commons.io.filefilter;
018:
019: import java.util.ArrayList;
020: import java.util.List;
021: import junit.framework.TestSuite;
022: import junit.textui.TestRunner;
023:
024: public class OrFileFilterTestCase extends
025: ConditionalFileFilterAbstractTestCase {
026:
027: private static final String DEFAULT_WORKING_PATH = "./OrFileFilterTestCase/";
028: private static final String WORKING_PATH_NAME_PROPERTY_KEY = OrFileFilterTestCase.class
029: .getName()
030: + ".workingDirectory";
031:
032: public static void main(final String[] args) {
033: TestRunner.run(suite());
034: }
035:
036: public static TestSuite suite() {
037: return new TestSuite(OrFileFilterTestCase.class);
038: }
039:
040: private List testFilters;
041: private List testTrueResults;
042: private List testFalseResults;
043: private List testFileResults;
044: private List testFilenameResults;
045:
046: public OrFileFilterTestCase(final String name) {
047: super (name);
048: }
049:
050: public void setUp() throws Exception {
051: super .setUp();
052: this .setUpTestFilters();
053: }
054:
055: protected IOFileFilter buildFilterUsingAdd(final List filters) {
056: OrFileFilter filter = new OrFileFilter();
057: for (int i = 0; i < filters.size(); i++) {
058: filter.addFileFilter((IOFileFilter) filters.get(i));
059: }
060: return filter;
061: }
062:
063: protected IOFileFilter buildFilterUsingConstructor(
064: final List filters) {
065: return new OrFileFilter(filters);
066: }
067:
068: protected ConditionalFileFilter getConditionalFileFilter() {
069: return new OrFileFilter();
070: }
071:
072: protected String getDefaultWorkingPath() {
073: return DEFAULT_WORKING_PATH;
074: }
075:
076: protected List getFalseResults() {
077: return this .testFalseResults;
078: }
079:
080: protected List getFileResults() {
081: return this .testFileResults;
082: }
083:
084: protected List getFilenameResults() {
085: return this .testFilenameResults;
086: }
087:
088: protected List getTestFilters() {
089: return this .testFilters;
090: }
091:
092: protected List getTrueResults() {
093: return this .testTrueResults;
094: }
095:
096: protected String getWorkingPathNamePropertyKey() {
097: return WORKING_PATH_NAME_PROPERTY_KEY;
098: }
099:
100: private void setUpTestFilters() {
101: // filters
102: //tests
103: this .testFilters = new ArrayList();
104: this .testTrueResults = new ArrayList();
105: this .testFalseResults = new ArrayList();
106: this .testFileResults = new ArrayList();
107: this .testFilenameResults = new ArrayList();
108:
109: // test 0 - add empty elements
110: {
111: testFilters.add(0, null);
112: testTrueResults.add(0, null);
113: testFalseResults.add(0, null);
114: testFileResults.add(0, null);
115: testFilenameResults.add(0, null);
116: }
117:
118: // test 1 - Test conditional or with all filters returning true
119: {
120: // test 1 filters
121: List filters = new ArrayList();
122: filters.add(trueFilters[1]);
123: filters.add(trueFilters[2]);
124: filters.add(trueFilters[3]);
125: // test 1 true results
126: boolean[] trueResults = new boolean[] { true, false, false };
127: // test 1 false results
128: boolean[] falseResults = new boolean[] { false, false,
129: false };
130:
131: testFilters.add(1, filters);
132: testTrueResults.add(1, trueResults);
133: testFalseResults.add(1, falseResults);
134: testFileResults.add(1, Boolean.TRUE);
135: testFilenameResults.add(1, Boolean.TRUE);
136: }
137:
138: // test 2 - Test conditional or with first filter returning false
139: {
140: // test 2 filters
141: List filters = new ArrayList();
142: filters.add(falseFilters[1]);
143: filters.add(trueFilters[1]);
144: filters.add(trueFilters[2]);
145: filters.add(trueFilters[3]);
146: filters.add(falseFilters[2]);
147: filters.add(falseFilters[3]);
148: // test 2 true results
149: boolean[] trueResults = new boolean[] { true, false, false };
150: // test 2 false results
151: boolean[] falseResults = new boolean[] { true, false, false };
152:
153: testFilters.add(2, filters);
154: testTrueResults.add(2, trueResults);
155: testFalseResults.add(2, falseResults);
156: testFileResults.add(2, Boolean.TRUE);
157: testFilenameResults.add(2, Boolean.TRUE);
158: }
159:
160: // test 3 - Test conditional or with second filter returning false
161: {
162: // test 3 filters
163: List filters = new ArrayList();
164: filters.add(trueFilters[1]);
165: filters.add(falseFilters[1]);
166: filters.add(trueFilters[2]);
167: filters.add(trueFilters[3]);
168: filters.add(falseFilters[2]);
169: filters.add(falseFilters[3]);
170: // test 3 true results
171: boolean[] trueResults = new boolean[] { true, false, false };
172: // test 3 false results
173: boolean[] falseResults = new boolean[] { false, false,
174: false };
175:
176: testFilters.add(3, filters);
177: testTrueResults.add(3, trueResults);
178: testFalseResults.add(3, falseResults);
179: testFileResults.add(3, Boolean.TRUE);
180: testFilenameResults.add(3, Boolean.TRUE);
181: }
182:
183: // test 4 - Test conditional or with third filter returning false
184: {
185: // test 4 filters
186: List filters = new ArrayList();
187: filters.add(trueFilters[1]);
188: filters.add(trueFilters[2]);
189: filters.add(falseFilters[1]);
190: filters.add(trueFilters[3]);
191: filters.add(falseFilters[2]);
192: filters.add(falseFilters[3]);
193: // test 4 true results
194: boolean[] trueResults = new boolean[] { true, false, false };
195: // test 4 false results
196: boolean[] falseResults = new boolean[] { false, false,
197: false };
198:
199: testFilters.add(4, filters);
200: testTrueResults.add(4, trueResults);
201: testFalseResults.add(4, falseResults);
202: testFileResults.add(4, Boolean.TRUE);
203: testFilenameResults.add(4, Boolean.TRUE);
204: }
205:
206: // test 5 - Test conditional or with first and third filters returning false
207: {
208: // test 5 filters
209: List filters = new ArrayList();
210: filters.add(falseFilters[1]);
211: filters.add(trueFilters[1]);
212: filters.add(falseFilters[2]);
213: filters.add(falseFilters[3]);
214: filters.add(trueFilters[2]);
215: filters.add(trueFilters[3]);
216: // test 5 true results
217: boolean[] trueResults = new boolean[] { true, false, false };
218: // test 5 false results
219: boolean[] falseResults = new boolean[] { true, false, false };
220:
221: testFilters.add(5, filters);
222: testTrueResults.add(5, trueResults);
223: testFalseResults.add(5, falseResults);
224: testFileResults.add(5, Boolean.TRUE);
225: testFilenameResults.add(5, Boolean.TRUE);
226: }
227:
228: // test 6 - Test conditional or with second and third filters returning false
229: {
230: List filters = new ArrayList();
231: filters.add(trueFilters[1]);
232: filters.add(falseFilters[1]);
233: filters.add(falseFilters[2]);
234: filters.add(trueFilters[2]);
235: filters.add(trueFilters[3]);
236: filters.add(falseFilters[3]);
237: // test 6 true results
238: boolean[] trueResults = new boolean[] { true, false, false };
239: // test 6 false results
240: boolean[] falseResults = new boolean[] { false, false,
241: false };
242:
243: testFilters.add(6, filters);
244: testTrueResults.add(6, trueResults);
245: testFalseResults.add(6, falseResults);
246: testFileResults.add(6, Boolean.TRUE);
247: testFilenameResults.add(6, Boolean.TRUE);
248: }
249:
250: // test 7 - Test conditional or with first and second filters returning false
251: {
252: List filters = new ArrayList();
253: filters.add(falseFilters[1]);
254: filters.add(falseFilters[2]);
255: filters.add(trueFilters[1]);
256: filters.add(falseFilters[3]);
257: filters.add(trueFilters[2]);
258: filters.add(trueFilters[3]);
259: // test 7 true results
260: boolean[] trueResults = new boolean[] { true, false, false };
261: // test 7 false results
262: boolean[] falseResults = new boolean[] { true, true, false };
263:
264: testFilters.add(7, filters);
265: testTrueResults.add(7, trueResults);
266: testFalseResults.add(7, falseResults);
267: testFileResults.add(7, Boolean.TRUE);
268: testFilenameResults.add(7, Boolean.TRUE);
269: }
270:
271: // test 8 - Test conditional or with fourth filter returning false
272: {
273: List filters = new ArrayList();
274: filters.add(trueFilters[1]);
275: filters.add(trueFilters[2]);
276: filters.add(trueFilters[3]);
277: filters.add(falseFilters[1]);
278: // test 8 true results
279: boolean[] trueResults = new boolean[] { true, false, false };
280: // test 8 false results
281: boolean[] falseResults = new boolean[] { false, false,
282: false };
283:
284: testFilters.add(8, filters);
285: testTrueResults.add(8, trueResults);
286: testFalseResults.add(8, falseResults);
287: testFileResults.add(8, Boolean.TRUE);
288: testFilenameResults.add(8, Boolean.TRUE);
289: }
290:
291: // test 9 - Test conditional or with all filters returning false
292: {
293: List filters = new ArrayList();
294: filters.add(falseFilters[1]);
295: filters.add(falseFilters[2]);
296: filters.add(falseFilters[3]);
297: // test 9 true results
298: boolean[] trueResults = new boolean[] { false, false, false };
299: // test 9 false results
300: boolean[] falseResults = new boolean[] { true, true, true };
301:
302: testFilters.add(9, filters);
303: testTrueResults.add(9, trueResults);
304: testFalseResults.add(9, falseResults);
305: testFileResults.add(9, Boolean.FALSE);
306: testFilenameResults.add(9, Boolean.FALSE);
307: }
308: }
309: }
|