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 java.io.File;
20 import java.util.ArrayList;
21 import java.util.Iterator;
22 import java.util.List;
23
24 public abstract class ConditionalFileFilterAbstractTestCase
25 extends IOFileFilterAbstractTestCase {
26
27 private static final String TEST_FILE_NAME_PREFIX = "TestFile";
28 private static final String TEST_FILE_TYPE = ".tst";
29
30 protected TesterTrueFileFilter[] trueFilters;
31 protected TesterFalseFileFilter[] falseFilters;
32
33 private File file;
34 private File workingPath;
35
36 public ConditionalFileFilterAbstractTestCase(final String name) {
37 super(name);
38 }
39
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();
51 }
52
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());
64 }
65 for(Iterator iter = fileFilter.getFileFilters().iterator(); iter.hasNext();) {
66 IOFileFilter filter = (IOFileFilter) iter.next();
67 assertTrue("found file filter", filters.contains(filter));
68 }
69 assertEquals("file filters count", filters.size(), fileFilter.getFileFilters().size());
70 }
71
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)));
82 }
83 assertEquals("file filters count", 0, fileFilter.getFileFilters().size());
84 }
85
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);
91 }
92
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();
99
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();
106
107
108 IOFileFilter filter = this.buildFilterUsingConstructor(filters);
109
110
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);
116
117
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);
123 }
124 }
125
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();
132
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();
139
140
141 IOFileFilter filter = this.buildFilterUsingAdd(filters);
142
143
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);
149
150
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);
156 }
157 }
158
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();
169 }