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 AndFileFilterTestCase extends
025: ConditionalFileFilterAbstractTestCase {
026:
027: private static final String DEFAULT_WORKING_PATH = "./AndFileFilterTestCase/";
028: private static final String WORKING_PATH_NAME_PROPERTY_KEY = AndFileFilterTestCase.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(AndFileFilterTestCase.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 AndFileFilterTestCase(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: AndFileFilter filter = new AndFileFilter();
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 AndFileFilter(filters);
066: }
067:
068: protected ConditionalFileFilter getConditionalFileFilter() {
069: return new AndFileFilter();
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 and 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, true, true };
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 and 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[] { false, 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.FALSE);
157: testFilenameResults.add(2, Boolean.FALSE);
158: }
159:
160: // test 3 - Test conditional and 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[] { true, false, false };
174:
175: testFilters.add(3, filters);
176: testTrueResults.add(3, trueResults);
177: testFalseResults.add(3, falseResults);
178: testFileResults.add(3, Boolean.FALSE);
179: testFilenameResults.add(3, Boolean.FALSE);
180: }
181:
182: // test 4 - Test conditional and with third filter returning false
183: {
184: // test 4 filters
185: List filters = new ArrayList();
186: filters.add(trueFilters[1]);
187: filters.add(trueFilters[2]);
188: filters.add(falseFilters[1]);
189: filters.add(trueFilters[3]);
190: filters.add(falseFilters[2]);
191: filters.add(falseFilters[3]);
192: // test 4 true results
193: boolean[] trueResults = new boolean[] { true, true, false };
194: // test 4 false results
195: boolean[] falseResults = new boolean[] { true, false, false };
196:
197: testFilters.add(4, filters);
198: testTrueResults.add(4, trueResults);
199: testFalseResults.add(4, falseResults);
200: testFileResults.add(4, Boolean.FALSE);
201: testFilenameResults.add(4, Boolean.FALSE);
202: }
203:
204: // test 5 - Test conditional and with first and third filters returning false
205: {
206: // test 5 filters
207: List filters = new ArrayList();
208: filters.add(falseFilters[1]);
209: filters.add(trueFilters[1]);
210: filters.add(falseFilters[2]);
211: filters.add(falseFilters[3]);
212: filters.add(trueFilters[2]);
213: filters.add(trueFilters[3]);
214: // test 5 true results
215: boolean[] trueResults = new boolean[] { false, false, false };
216: // test 5 false results
217: boolean[] falseResults = new boolean[] { true, false, false };
218:
219: testFilters.add(5, filters);
220: testTrueResults.add(5, trueResults);
221: testFalseResults.add(5, falseResults);
222: testFileResults.add(5, Boolean.FALSE);
223: testFilenameResults.add(5, Boolean.FALSE);
224: }
225:
226: // test 6 - Test conditional and with second and third filters returning false
227: {
228: List filters = new ArrayList();
229: filters.add(trueFilters[1]);
230: filters.add(falseFilters[1]);
231: filters.add(falseFilters[2]);
232: filters.add(trueFilters[2]);
233: filters.add(trueFilters[3]);
234: filters.add(falseFilters[3]);
235: // test 6 true results
236: boolean[] trueResults = new boolean[] { true, false, false };
237: // test 6 false results
238: boolean[] falseResults = new boolean[] { true, false, false };
239:
240: testFilters.add(6, filters);
241: testTrueResults.add(6, trueResults);
242: testFalseResults.add(6, falseResults);
243: testFileResults.add(6, Boolean.FALSE);
244: testFilenameResults.add(6, Boolean.FALSE);
245: }
246:
247: // test 7 - Test conditional and with first and second filters returning false
248: {
249: List filters = new ArrayList();
250: filters.add(falseFilters[1]);
251: filters.add(falseFilters[2]);
252: filters.add(trueFilters[3]);
253: filters.add(falseFilters[3]);
254: filters.add(trueFilters[2]);
255: filters.add(trueFilters[3]);
256: // test 7 true results
257: boolean[] trueResults = new boolean[] { false, false, false };
258: // test 7 false results
259: boolean[] falseResults = new boolean[] { true, false, false };
260:
261: testFilters.add(7, filters);
262: testTrueResults.add(7, trueResults);
263: testFalseResults.add(7, falseResults);
264: testFileResults.add(7, Boolean.FALSE);
265: testFilenameResults.add(7, Boolean.FALSE);
266: }
267:
268: // test 8 - Test conditional and with fourth filters returning false
269: {
270: List filters = new ArrayList();
271: filters.add(trueFilters[1]);
272: filters.add(trueFilters[2]);
273: filters.add(trueFilters[3]);
274: filters.add(falseFilters[1]);
275: // test 8 true results
276: boolean[] trueResults = new boolean[] { true, true, true };
277: // test 8 false results
278: boolean[] falseResults = new boolean[] { true, false, false };
279:
280: testFilters.add(8, filters);
281: testTrueResults.add(8, trueResults);
282: testFalseResults.add(8, falseResults);
283: testFileResults.add(8, Boolean.FALSE);
284: testFilenameResults.add(8, Boolean.FALSE);
285: }
286:
287: // test 9 - Test conditional and with all filters returning false
288: {
289: List filters = new ArrayList();
290: filters.add(falseFilters[1]);
291: filters.add(falseFilters[2]);
292: filters.add(falseFilters[3]);
293: // test 9 true results
294: boolean[] trueResults = new boolean[] { false, false, false };
295: // test 9 false results
296: boolean[] falseResults = new boolean[] { true, false, false };
297:
298: testFilters.add(9, filters);
299: testTrueResults.add(9, trueResults);
300: testFalseResults.add(9, falseResults);
301: testFileResults.add(9, Boolean.FALSE);
302: testFilenameResults.add(9, Boolean.FALSE);
303: }
304: }
305: }
|