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
9
* http://www.apache.org/licenses/LICENSE-2.0
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.
17
package org.apache.commons.io.filefilter;
20
import java.util.ArrayList;
21
import java.util.Iterator;
22
import java.util.List;
24
public abstract class ConditionalFileFilterAbstractTestCase
25
extends IOFileFilterAbstractTestCase {
27
private static final String TEST_FILE_NAME_PREFIX = "TestFile";
28
private static final String TEST_FILE_TYPE = ".tst";
30
protected TesterTrueFileFilter[] trueFilters;
31
protected TesterFalseFileFilter[] falseFilters;
34
private File workingPath;
36
public ConditionalFileFilterAbstractTestCase(final String name) {
40
public void setUp() throws Exception {
41
this.workingPath = this.determineWorkingDirectoryPath(this.getWorkingPathNamePropertyKey(), this.getDefaultWorkingPath());
42
this.file = new File(this.workingPath, TEST_FILE_NAME_PREFIX + 1 + TEST_FILE_TYPE);
43
this.trueFilters = new TesterTrueFileFilter[4];
44
this.falseFilters = new TesterFalseFileFilter[4];
45
this.trueFilters[1] = new TesterTrueFileFilter();
46
this.trueFilters[2] = new TesterTrueFileFilter();
47
this.trueFilters[3] = new TesterTrueFileFilter();
48
this.falseFilters[1] = new TesterFalseFileFilter();
49
this.falseFilters[2] = new TesterFalseFileFilter();
50
this.falseFilters[3] = new TesterFalseFileFilter();
53
public void testAdd() {
54
List filters = new ArrayList();
55
ConditionalFileFilter fileFilter = this.getConditionalFileFilter();
56
filters.add(new TesterTrueFileFilter());
57
filters.add(new TesterTrueFileFilter());
58
filters.add(new TesterTrueFileFilter());
59
filters.add(new TesterTrueFileFilter());
60
for(int i = 0; i < filters.size(); i++) {
61
assertEquals("file filters count: ", i, fileFilter.getFileFilters().size());
62
fileFilter.addFileFilter((IOFileFilter) filters.get(i));
63
assertEquals("file filters count: ", i+1, fileFilter.getFileFilters().size());
65
for(Iterator iter = fileFilter.getFileFilters().iterator(); iter.hasNext();) {
66
IOFileFilter filter = (IOFileFilter) iter.next();
67
assertTrue("found file filter", filters.contains(filter));
69
assertEquals("file filters count", filters.size(), fileFilter.getFileFilters().size());
72
public void testRemove() {
73
List filters = new ArrayList();
74
ConditionalFileFilter fileFilter = this.getConditionalFileFilter();
75
filters.add(new TesterTrueFileFilter());
76
filters.add(new TesterTrueFileFilter());
77
filters.add(new TesterTrueFileFilter());
78
filters.add(new TesterTrueFileFilter());
79
for(int i = 0; i < filters.size(); i++) {
80
fileFilter.removeFileFilter((IOFileFilter) filters.get(i));
81
assertTrue("file filter removed", !fileFilter.getFileFilters().contains((IOFileFilter) filters.get(i)));
83
assertEquals("file filters count", 0, fileFilter.getFileFilters().size());
86
public void testNoFilters() throws Exception {
87
ConditionalFileFilter fileFilter = this.getConditionalFileFilter();
88
File file = new File(this.workingPath, TEST_FILE_NAME_PREFIX + 1 + TEST_FILE_TYPE);
89
assertFileFiltering(1, (IOFileFilter) fileFilter, file, false);
90
assertFilenameFiltering(1, (IOFileFilter) fileFilter, file, false);
93
public void testFilterBuiltUsingConstructor() throws Exception {
94
List testFilters = this.getTestFilters();
95
List testTrueResults = this.getTrueResults();
96
List testFalseResults = this.getFalseResults();
97
List testFileResults = this.getFileResults();
98
List testFilenameResults = this.getFilenameResults();
100
for(int i = 1; i < testFilters.size(); i++) {
101
List filters = (List) testFilters.get(i);
102
boolean[] trueResults = (boolean []) testTrueResults.get(i);
103
boolean[] falseResults = (boolean []) testFalseResults.get(i);
104
boolean fileResults = ((Boolean) testFileResults.get(i)).booleanValue();
105
boolean filenameResults = ((Boolean) testFilenameResults.get(i)).booleanValue();
107
// Test conditional AND filter created by passing filters to the constructor
108
IOFileFilter filter = this.buildFilterUsingConstructor(filters);
110
// Test as a file filter
111
this.resetTrueFilters(this.trueFilters);
112
this.resetFalseFilters(this.falseFilters);
113
this.assertFileFiltering(i, filter, this.file, fileResults);
114
this.assertTrueFiltersInvoked(i, trueFilters, trueResults);
115
this.assertFalseFiltersInvoked(i, falseFilters, falseResults);
117
// Test as a filename filter
118
this.resetTrueFilters(this.trueFilters);
119
this.resetFalseFilters(this.falseFilters);
120
this.assertFilenameFiltering(i, filter, this.file, filenameResults);
121
this.assertTrueFiltersInvoked(i, trueFilters, trueResults);
122
this.assertFalseFiltersInvoked(i, falseFilters, falseResults);
126
public void testFilterBuiltUsingAdd() throws Exception {
127
List testFilters = this.getTestFilters();
128
List testTrueResults = this.getTrueResults();
129
List testFalseResults = this.getFalseResults();
130
List testFileResults = this.getFileResults();
131
List testFilenameResults = this.getFilenameResults();
133
for(int i = 1; i < testFilters.size(); i++) {
134
List filters = (List) testFilters.get(i);
135
boolean[] trueResults = (boolean []) testTrueResults.get(i);
136
boolean[] falseResults = (boolean []) testFalseResults.get(i);
137
boolean fileResults = ((Boolean) testFileResults.get(i)).booleanValue();
138
boolean filenameResults = ((Boolean) testFilenameResults.get(i)).booleanValue();
140
// Test conditional AND filter created by passing filters to the constructor
141
IOFileFilter filter = this.buildFilterUsingAdd(filters);
143
// Test as a file filter
144
this.resetTrueFilters(this.trueFilters);
145
this.resetFalseFilters(this.falseFilters);
146
this.assertFileFiltering(i, filter, this.file, fileResults);
147
this.assertTrueFiltersInvoked(i, trueFilters, trueResults);
148
this.assertFalseFiltersInvoked(i, falseFilters, falseResults);
150
// Test as a filename filter
151
this.resetTrueFilters(this.trueFilters);
152
this.resetFalseFilters(this.falseFilters);
153
this.assertFilenameFiltering(i, filter, this.file, filenameResults);
154
this.assertTrueFiltersInvoked(i, trueFilters, trueResults);
155
this.assertFalseFiltersInvoked(i, falseFilters, falseResults);
159
protected abstract ConditionalFileFilter getConditionalFileFilter();
160
protected abstract IOFileFilter buildFilterUsingAdd(List filters);
161
protected abstract IOFileFilter buildFilterUsingConstructor(List filters);
162
protected abstract List getTestFilters();
163
protected abstract List getTrueResults();
164
protected abstract List getFalseResults();
165
protected abstract List getFileResults();
166
protected abstract List getFilenameResults();
167
protected abstract String getWorkingPathNamePropertyKey();
168
protected abstract String getDefaultWorkingPath();