View Javadoc
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.vfs2.filter;
18  
19  import java.io.File;
20  import java.io.IOException;
21  
22  import org.apache.commons.io.FileUtils;
23  import org.apache.commons.vfs2.FileFilterSelector;
24  import org.apache.commons.vfs2.FileObject;
25  import org.apache.commons.vfs2.FileSelectInfo;
26  import org.apache.commons.vfs2.FileSystemException;
27  import org.junit.AfterClass;
28  import org.junit.Assert;
29  import org.junit.BeforeClass;
30  import org.junit.Test;
31  
32  /**
33   * Test for {@link SizeFileFilter}.
34   */
35  // CHECKSTYLE:OFF Test code
36  public class SizeFileFilterTest extends BaseFilterTest {
37  
38      private static File testDir;
39  
40      private static File minFile;
41  
42      private static FileSelectInfo minFileInfo;
43  
44      private static File optFile;
45  
46      private static FileSelectInfo optFileInfo;
47  
48      private static File maxFile;
49  
50      private static FileSelectInfo maxFileInfo;
51  
52      private static File zipFile;
53  
54      private static FileObject zipFileObj;
55  
56      @AfterClass
57      public static void afterClass() throws IOException {
58  
59          minFileInfo = null;
60          minFile = null;
61  
62          optFileInfo = null;
63          optFile = null;
64  
65          maxFileInfo = null;
66          maxFile = null;
67  
68          zipFileObj.close();
69          FileUtils.deleteQuietly(zipFile);
70          zipFile = null;
71  
72          FileUtils.deleteDirectory(testDir);
73          testDir = null;
74      }
75  
76      @BeforeClass
77      public static void beforeClass() throws IOException {
78          testDir = getTestDir(SizeFileFilterTest.class.getName());
79  
80          // 2 characters
81          minFile = new File(testDir, "min.txt");
82          FileUtils.write(minFile, "12");
83          minFileInfo = createFileSelectInfo(minFile);
84  
85          // 4 characters
86          optFile = new File(testDir, "opt.txt");
87          FileUtils.write(optFile, "1234");
88          optFileInfo = createFileSelectInfo(optFile);
89  
90          // 6 characters
91          maxFile = new File(testDir, "max.txt");
92          FileUtils.write(maxFile, "123456");
93          maxFileInfo = createFileSelectInfo(maxFile);
94  
95          // Zip the test directory
96          zipFile = new File(getTempDir(), SizeFileFilterTest.class.getName() + ".zip");
97          zipDir(testDir, "", zipFile);
98          zipFileObj = getZipFileObject(zipFile);
99  
100     }
101 
102     @Test
103     public void testSizeFileFilterLong() throws FileSystemException {
104 
105         final SizeFileFilter testee = new SizeFileFilter(4);
106         Assert.assertFalse(testee.accept(minFileInfo));
107         Assert.assertTrue(testee.accept(optFileInfo));
108         Assert.assertTrue(testee.accept(maxFileInfo));
109 
110     }
111 
112     @Test
113     public void testSizeFileFilterLongBoolean() throws FileSystemException {
114 
115         SizeFileFilter testee;
116 
117         testee = new SizeFileFilter(4, true);
118         Assert.assertFalse(testee.accept(minFileInfo));
119         Assert.assertTrue(testee.accept(optFileInfo));
120         Assert.assertTrue(testee.accept(maxFileInfo));
121 
122         testee = new SizeFileFilter(4, false);
123         Assert.assertTrue(testee.accept(minFileInfo));
124         Assert.assertFalse(testee.accept(optFileInfo));
125         Assert.assertFalse(testee.accept(maxFileInfo));
126 
127     }
128 
129     @Test
130     public void testSizeFileFilterZipDir() throws FileSystemException {
131 
132         // Same test with ZIP file
133         FileObject[] files;
134 
135         files = zipFileObj.findFiles(new FileFilterSelector(new SizeFileFilter(4, true)));
136         assertContains(files, optFile.getName(), maxFile.getName());
137         Assert.assertEquals(2, files.length);
138 
139         files = zipFileObj.findFiles(new FileFilterSelector(new SizeFileFilter(4, false)));
140         assertContains(files, minFile.getName());
141         Assert.assertEquals(1, files.length);
142 
143         files = zipFileObj.findFiles(new FileFilterSelector(new SizeRangeFileFilter(2, 6)));
144         assertContains(files, minFile.getName(), optFile.getName(), maxFile.getName());
145         Assert.assertEquals(3, files.length);
146 
147         files = zipFileObj.findFiles(new FileFilterSelector(new SizeRangeFileFilter(3, 6)));
148         assertContains(files, optFile.getName(), maxFile.getName());
149         Assert.assertEquals(2, files.length);
150 
151         files = zipFileObj.findFiles(new FileFilterSelector(new SizeRangeFileFilter(2, 5)));
152         assertContains(files, minFile.getName(), optFile.getName());
153         Assert.assertEquals(2, files.length);
154 
155         files = zipFileObj.findFiles(new FileFilterSelector(new SizeRangeFileFilter(3, 5)));
156         assertContains(files, optFile.getName());
157         Assert.assertEquals(1, files.length);
158 
159         files = zipFileObj.findFiles(new FileFilterSelector(new SizeRangeFileFilter(4, 4)));
160         assertContains(files, optFile.getName());
161         Assert.assertEquals(1, files.length);
162 
163     }
164 
165     @Test
166     public void testSizeRangeFileFilter() throws FileSystemException {
167 
168         SizeRangeFileFilter testee;
169 
170         testee = new SizeRangeFileFilter(2, 6);
171         Assert.assertTrue(testee.accept(minFileInfo));
172         Assert.assertTrue(testee.accept(optFileInfo));
173         Assert.assertTrue(testee.accept(maxFileInfo));
174 
175         testee = new SizeRangeFileFilter(3, 6);
176         Assert.assertFalse(testee.accept(minFileInfo));
177         Assert.assertTrue(testee.accept(optFileInfo));
178         Assert.assertTrue(testee.accept(maxFileInfo));
179 
180         testee = new SizeRangeFileFilter(2, 5);
181         Assert.assertTrue(testee.accept(minFileInfo));
182         Assert.assertTrue(testee.accept(optFileInfo));
183         Assert.assertFalse(testee.accept(maxFileInfo));
184 
185         testee = new SizeRangeFileFilter(3, 5);
186         Assert.assertFalse(testee.accept(minFileInfo));
187         Assert.assertTrue(testee.accept(optFileInfo));
188         Assert.assertFalse(testee.accept(maxFileInfo));
189 
190         testee = new SizeRangeFileFilter(4, 4);
191         Assert.assertFalse(testee.accept(minFileInfo));
192         Assert.assertTrue(testee.accept(optFileInfo));
193         Assert.assertFalse(testee.accept(maxFileInfo));
194 
195     }
196 
197 }
198 // CHECKSTYLE:ON