~ubuntu-branches/ubuntu/karmic/commons-io/karmic

« back to all changes in this revision

Viewing changes to src/test/org/apache/commons/io/filefilter/ConditionalFileFilterAbstractTestCase.java

  • Committer: Bazaar Package Importer
  • Author(s): Arnaud Vandyck
  • Date: 2007-04-13 08:20:49 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20070413082049-2hd3s5ixtxsgvnvm
Tags: 1.3.1.dfsg.1-1
* New upstream (closes: #418973)
* java-gcj-compat-dev and cdbs transition
* Removed junit at the moment (closes: #397567)
* No javadoc at the moment

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.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
      // Test conditional AND filter created by passing filters to the constructor
 
108
      IOFileFilter filter = this.buildFilterUsingConstructor(filters);
 
109
      
 
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);
 
116
 
 
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);
 
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
      // Test conditional AND filter created by passing filters to the constructor
 
141
      IOFileFilter filter = this.buildFilterUsingAdd(filters);
 
142
      
 
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);
 
149
 
 
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);
 
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
}