📄 filefiltertestcase.java
字号:
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.io.filefilter;
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOCase;
import org.apache.commons.io.testtools.FileBasedTestCase;
/**
* Used to test FileFilterUtils.
*/
public class FileFilterTestCase extends FileBasedTestCase {
/**
* The subversion directory name.
*/
static final String SVN_DIR_NAME = ".svn";
private static final boolean WINDOWS = (File.separatorChar == '\\');
public FileFilterTestCase(String name) {
super(name);
}
public static void main(String[] args) {
TestRunner.run(suite());
}
public static TestSuite suite() {
return new TestSuite(FileFilterTestCase.class);
}
public void setUp() {
getTestDirectory().mkdirs();
}
public void tearDown() throws Exception {
FileUtils.deleteDirectory(getTestDirectory());
}
public void assertFiltering(IOFileFilter filter, File file, boolean expected) throws Exception {
// Note. This only tests the (File, String) version if the parent of
// the File passed in is not null
assertTrue(
"Filter(File) " + filter.getClass().getName() + " not " + expected + " for " + file,
(filter.accept(file) == expected));
if (file != null && file.getParentFile() != null) {
assertTrue(
"Filter(File, String) " + filter.getClass().getName() + " not " + expected + " for " + file,
(filter.accept(file.getParentFile(), file.getName()) == expected));
} else if (file == null) {
assertTrue(
"Filter(File, String) " + filter.getClass().getName() + " not " + expected + " for null",
filter.accept(file) == expected);
}
}
public void testSuffix() throws Exception {
IOFileFilter filter = new SuffixFileFilter(new String[] { "tes", "est" });
File testFile = new File( "test" );
File fredFile = new File( "fred" );
assertFiltering(filter, new File("fred.tes"), true);
assertFiltering(filter, new File("fred.est"), true);
assertFiltering(filter, new File("fred.EST"), false); //case-sensitive
assertFiltering(filter, new File("fred.exe"), false);
filter = FileFilterUtils.orFileFilter(
FileFilterUtils.suffixFileFilter( "tes" ),
FileFilterUtils.suffixFileFilter( "est" ) );
assertFiltering(filter, new File("fred"), false);
assertFiltering(filter, new File(".tes"), true);
assertFiltering(filter, new File("fred.test"), true);
filter = new SuffixFileFilter("est");
assertFiltering(filter, new File("test"), true);
assertFiltering(filter, new File("fred"), false);
assertTrue( filter.accept( testFile.getParentFile(), testFile.getName() ) );
assertTrue( !filter.accept( fredFile.getParentFile(), fredFile.getName() ) );
List prefixes = Arrays.asList( new String[] { "ood", "red" } );
IOFileFilter listFilter = new SuffixFileFilter( prefixes );
assertTrue( !listFilter.accept( testFile.getParentFile(), testFile.getName() ) );
assertTrue( listFilter.accept( fredFile.getParentFile(), fredFile.getName() ) );
try {
new SuffixFileFilter((String) null);
fail();
} catch (IllegalArgumentException ex) {
}
try {
new SuffixFileFilter((String[]) null);
fail();
} catch (IllegalArgumentException ex) {
}
try {
new SuffixFileFilter((List) null);
fail();
} catch (IllegalArgumentException ex) {
}
}
public void testSuffixCaseInsensitive() throws Exception {
IOFileFilter filter = new SuffixFileFilter(new String[] { "tes", "est" }, IOCase.INSENSITIVE);
assertFiltering(filter, new File("foo.tes"), true);
assertFiltering(filter, new File("foo.est"), true);
assertFiltering(filter, new File("foo.EST"), true); //case-sensitive
assertFiltering(filter, new File("foo.TES"), true); //case-sensitive
assertFiltering(filter, new File("foo.exe"), false);
filter = new SuffixFileFilter("est", IOCase.INSENSITIVE);
assertFiltering(filter, new File("test"), true);
assertFiltering(filter, new File("TEST"), true);
List suffixes = Arrays.asList( new String[] { "tes", "est" } );
filter = new SuffixFileFilter(suffixes, IOCase.INSENSITIVE);
assertFiltering(filter, new File("bar.tes"), true);
assertFiltering(filter, new File("bar.est"), true);
assertFiltering(filter, new File("bar.EST"), true); //case-sensitive
assertFiltering(filter, new File("bar.TES"), true); //case-sensitive
assertFiltering(filter, new File("bar.exe"), false);
try {
new SuffixFileFilter((String) null, IOCase.INSENSITIVE);
fail();
} catch (IllegalArgumentException ex) {
}
try {
new SuffixFileFilter((String[]) null, IOCase.INSENSITIVE);
fail();
} catch (IllegalArgumentException ex) {
}
try {
new SuffixFileFilter((List) null, IOCase.INSENSITIVE);
fail();
} catch (IllegalArgumentException ex) {
}
}
public void testDirectory() throws Exception {
// XXX: This test presumes the current working dir is the base dir of the source checkout.
IOFileFilter filter = new DirectoryFileFilter();
assertFiltering(filter, new File("src/"), true);
assertFiltering(filter, new File("src/java/"), true);
assertFiltering(filter, new File("project.xml"), false);
assertFiltering(filter, new File("imaginary"), false);
assertFiltering(filter, new File("imaginary/"), false);
assertFiltering(filter, new File("LICENSE.txt"), false);
assertSame(DirectoryFileFilter.DIRECTORY, DirectoryFileFilter.INSTANCE);
}
public void testFiles() throws Exception {
// XXX: This test presumes the current working dir is the base dir of the source checkout.
IOFileFilter filter = FileFileFilter.FILE;
assertFiltering(filter, new File("src/"), false);
assertFiltering(filter, new File("src/java/"), false);
assertFiltering(filter, new File("project.xml"), true);
assertFiltering(filter, new File("imaginary"), false);
assertFiltering(filter, new File("imaginary/"), false);
assertFiltering(filter, new File("LICENSE.txt"), true);
}
public void testPrefix() throws Exception {
IOFileFilter filter = new PrefixFileFilter(new String[] { "foo", "bar" });
File testFile = new File( "test" );
File fredFile = new File( "fred" );
assertFiltering(filter, new File("foo.test"), true);
assertFiltering(filter, new File("FOO.test"), false); //case-sensitive
assertFiltering(filter, new File("foo"), true);
assertFiltering(filter, new File("bar"), true);
assertFiltering(filter, new File("food/"), true);
filter = FileFilterUtils.prefixFileFilter( "bar" );
assertFiltering(filter, new File("barred\\"), true);
assertFiltering(filter, new File("test"), false);
assertFiltering(filter, new File("fo_o.test"), false);
assertFiltering(filter, new File("abar.exe"), false);
filter = new PrefixFileFilter("tes");
assertFiltering(filter, new File("test"), true);
assertFiltering(filter, new File("fred"), false);
assertTrue( filter.accept( testFile.getParentFile(), testFile.getName() ) );
assertTrue( !filter.accept( fredFile.getParentFile(), fredFile.getName() ) );
List prefixes = Arrays.asList( new String[] { "foo", "fre" } );
IOFileFilter listFilter = new PrefixFileFilter( prefixes );
assertTrue( !listFilter.accept( testFile.getParentFile(), testFile.getName() ) );
assertTrue( listFilter.accept( fredFile.getParentFile(), fredFile.getName() ) );
try {
new PrefixFileFilter((String) null);
fail();
} catch (IllegalArgumentException ex) {
}
try {
new PrefixFileFilter((String[]) null);
fail();
} catch (IllegalArgumentException ex) {
}
try {
new PrefixFileFilter((List) null);
fail();
} catch (IllegalArgumentException ex) {
}
}
public void testPrefixCaseInsensitive() throws Exception {
IOFileFilter filter = new PrefixFileFilter(new String[] { "foo", "bar" }, IOCase.INSENSITIVE);
assertFiltering(filter, new File("foo.test1"), true);
assertFiltering(filter, new File("bar.test1"), true);
assertFiltering(filter, new File("FOO.test1"), true); //case-sensitive
assertFiltering(filter, new File("BAR.test1"), true); //case-sensitive
filter = new PrefixFileFilter("bar", IOCase.INSENSITIVE);
assertFiltering(filter, new File("foo.test2"), false);
assertFiltering(filter, new File("bar.test2"), true);
assertFiltering(filter, new File("FOO.test2"), false); //case-sensitive
assertFiltering(filter, new File("BAR.test2"), true); //case-sensitive
List prefixes = Arrays.asList( new String[] { "foo", "bar" } );
filter = new PrefixFileFilter(prefixes, IOCase.INSENSITIVE);
assertFiltering(filter, new File("foo.test3"), true);
assertFiltering(filter, new File("bar.test3"), true);
assertFiltering(filter, new File("FOO.test3"), true); //case-sensitive
assertFiltering(filter, new File("BAR.test3"), true); //case-sensitive
try {
new PrefixFileFilter((String) null, IOCase.INSENSITIVE);
fail();
} catch (IllegalArgumentException ex) {
}
try {
new PrefixFileFilter((String[]) null, IOCase.INSENSITIVE);
fail();
} catch (IllegalArgumentException ex) {
}
try {
new PrefixFileFilter((List) null, IOCase.INSENSITIVE);
fail();
} catch (IllegalArgumentException ex) {
}
}
public void testNameFilter() throws Exception {
IOFileFilter filter = new NameFileFilter(new String[] { "foo", "bar" });
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -