@Test public void testFiles() throws Exception { // XXX: This test presumes the current working dir is the base dir of the source checkout. final IOFileFilter filter = FileFileFilter.FILE; assertFiltering(filter, new File("src/"), false); assertFiltering(filter, new File("src/java/"), false); assertFiltering(filter, new File("pom.xml"), true); assertFiltering(filter, new File("imaginary"), false); assertFiltering(filter, new File("imaginary/"), false); assertFiltering(filter, new File("LICENSE.txt"), true); }
@Test public void testDirectory() throws Exception { // XXX: This test presumes the current working dir is the base dir of the source checkout. final IOFileFilter filter = new DirectoryFileFilter(); assertFiltering(filter, new File("src/"), true); assertFiltering(filter, new File("src/main/java/"), true); assertFiltering(filter, new File("pom.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); }
@Test public void testHidden() throws Exception { final File hiddenDir = new File(SVN_DIR_NAME); if (hiddenDir.exists()) { assertFiltering(HiddenFileFilter.HIDDEN, hiddenDir, hiddenDir.isHidden()); assertFiltering(HiddenFileFilter.VISIBLE, hiddenDir, !hiddenDir.isHidden()); } assertFiltering(HiddenFileFilter.HIDDEN, getTestDirectory(), false); assertFiltering(HiddenFileFilter.VISIBLE, getTestDirectory(), true); }
@Test public void testTrue() throws Exception { final IOFileFilter filter = FileFilterUtils.trueFileFilter(); assertFiltering(filter, new File("foo.test"), true); assertFiltering(filter, new File("foo"), true); assertFiltering(filter, null, true); assertSame(TrueFileFilter.TRUE, TrueFileFilter.INSTANCE); }
@Test public void testFalse() throws Exception { final IOFileFilter filter = FileFilterUtils.falseFileFilter(); assertFiltering(filter, new File("foo.test"), false); assertFiltering(filter, new File("foo"), false); assertFiltering(filter, null, false); assertSame(FalseFileFilter.FALSE, FalseFileFilter.INSTANCE); }
@Test public void testFileFilterUtils_and() throws Exception { final IOFileFilter trueFilter = TrueFileFilter.INSTANCE; final IOFileFilter falseFilter = FalseFileFilter.INSTANCE; assertFiltering(FileFilterUtils.and(trueFilter, trueFilter, trueFilter), new File("foo.test"), true); assertFiltering(FileFilterUtils.and(trueFilter, falseFilter, trueFilter), new File("foo.test"), false); assertFiltering(FileFilterUtils.and(falseFilter, trueFilter), new File("foo.test"), false); assertFiltering(FileFilterUtils.and(falseFilter, falseFilter), new File("foo.test"), false); }
@Test(expected = IllegalArgumentException.class) public void testNot() throws Exception { final IOFileFilter filter = FileFilterUtils.notFileFilter(FileFilterUtils.trueFileFilter()); assertFiltering(filter, new File("foo.test"), false); assertFiltering(filter, new File("foo"), false); assertFiltering(filter, null, false); new NotFileFilter(null); }
@Test public void testFileFilterUtils_or() throws Exception { final IOFileFilter trueFilter = TrueFileFilter.INSTANCE; final IOFileFilter falseFilter = FalseFileFilter.INSTANCE; final File testFile = new File( "foo.test" ); assertFiltering(FileFilterUtils.or(trueFilter, trueFilter), testFile, true); assertFiltering(FileFilterUtils.or(trueFilter, trueFilter, falseFilter), testFile, true); assertFiltering(FileFilterUtils.or(falseFilter, trueFilter), testFile, true); assertFiltering(FileFilterUtils.or(falseFilter, falseFilter, falseFilter), testFile, false); }
@Test public void testCanRead() throws Exception { final File readOnlyFile = new File(getTestDirectory(), "read-only-file1.txt"); if (!readOnlyFile.getParentFile().exists()) { throw new IOException("Cannot create file " + readOnlyFile + " as the parent directory does not exist"); } try (final BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(readOnlyFile))){ TestUtils.generateTestData(output, 32); } readOnlyFile.setReadOnly(); assertFiltering(CanReadFileFilter.CAN_READ, readOnlyFile, true); assertFiltering(CanReadFileFilter.CANNOT_READ, readOnlyFile, false); assertFiltering(CanReadFileFilter.READ_ONLY, readOnlyFile, true); readOnlyFile.delete(); }
@Test public void testCanWrite() throws Exception { final File readOnlyFile = new File(getTestDirectory(), "read-only-file2.txt"); if (!readOnlyFile.getParentFile().exists()) { throw new IOException("Cannot create file " + readOnlyFile + " as the parent directory does not exist"); } try (final BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(readOnlyFile))){ TestUtils.generateTestData(output, 32); } readOnlyFile.setReadOnly(); assertFiltering(CanWriteFileFilter.CAN_WRITE, getTestDirectory(), true); assertFiltering(CanWriteFileFilter.CANNOT_WRITE, getTestDirectory(), false); assertFiltering(CanWriteFileFilter.CAN_WRITE, readOnlyFile, false); assertFiltering(CanWriteFileFilter.CANNOT_WRITE, readOnlyFile, true); readOnlyFile.delete(); }
@Test public void testMagicNumberFileFilterBytes() throws Exception { final byte[] classFileMagicNumber = new byte[] {(byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE}; final String xmlFileContent = "<?xml version=\"1.0\" encoding=\"UTF-8\">\n" + "<element>text</element>"; final File classFileA = new File(getTestDirectory(), "A.class"); final File xmlFileB = new File(getTestDirectory(), "B.xml"); final File emptyFile = new File(getTestDirectory(), "C.xml"); final File dir = new File(getTestDirectory(), "D"); dir.mkdirs(); final OutputStream classFileAStream = FileUtils.openOutputStream(classFileA); IOUtils.write(classFileMagicNumber, classFileAStream); TestUtils.generateTestData(classFileAStream, 32); classFileAStream.close(); FileUtils.write(xmlFileB, xmlFileContent, StandardCharsets.UTF_8); FileUtils.touch(emptyFile); IOFileFilter filter = new MagicNumberFileFilter(classFileMagicNumber); assertFiltering(filter, classFileA, true); assertFiltering(filter, xmlFileB, false); assertFiltering(filter, emptyFile, false); assertFiltering(filter, dir, false); filter = FileFilterUtils.magicNumberFileFilter(classFileMagicNumber); assertFiltering(filter, classFileA, true); assertFiltering(filter, xmlFileB, false); assertFiltering(filter, emptyFile, false); assertFiltering(filter, dir, false); }
@Test public void testMagicNumberFileFilterString() throws Exception { final byte[] classFileMagicNumber = new byte[] {(byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE}; final String xmlFileContent = "<?xml version=\"1.0\" encoding=\"UTF-8\">\n" + "<element>text</element>"; final String xmlMagicNumber = "<?xml version=\"1.0\""; final File classFileA = new File(getTestDirectory(), "A.class"); final File xmlFileB = new File(getTestDirectory(), "B.xml"); final File dir = new File(getTestDirectory(), "D"); dir.mkdirs(); final OutputStream classFileAStream = FileUtils.openOutputStream(classFileA); IOUtils.write(classFileMagicNumber, classFileAStream); TestUtils.generateTestData(classFileAStream, 32); classFileAStream.close(); FileUtils.write(xmlFileB, xmlFileContent, StandardCharsets.UTF_8); IOFileFilter filter = new MagicNumberFileFilter(xmlMagicNumber); assertFiltering(filter, classFileA, false); assertFiltering(filter, xmlFileB, true); assertFiltering(filter, dir, false); filter = FileFilterUtils.magicNumberFileFilter(xmlMagicNumber); assertFiltering(filter, classFileA, false); assertFiltering(filter, xmlFileB, true); assertFiltering(filter, dir, false); }
new MagicNumberFileFilter(tarMagicNumber, tarMagicNumberOffset); assertFiltering(filter, tarFileA, true); assertFiltering(filter, randomFileB, false); assertFiltering(filter, dir, false); assertFiltering(filter, tarFileA, true); assertFiltering(filter, randomFileB, false); assertFiltering(filter, dir, false);
new MagicNumberFileFilter(tarMagicNumber, tarMagicNumberOffset); assertFiltering(filter, tarFileA, true); assertFiltering(filter, randomFileB, false); assertFiltering(filter, dir, false); assertFiltering(filter, tarFileA, true); assertFiltering(filter, randomFileB, false); assertFiltering(filter, dir, false);
final 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); 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); assertFiltering(filter, new File("test"), true); assertFiltering(filter, new File("fred"), false);
fileB.mkdirs(); assertFiltering(filter, fileA, false); assertFiltering(filter, fileB, false); assertFiltering(filter, fileA, false); assertFiltering(filter, fileB, true);
fileB.mkdirs(); assertFiltering(filter, fileA, false); assertFiltering(filter, fileB, true); assertFiltering(filter, fileA, false); assertFiltering(filter, fileB, false);
final IOFileFilter falseFilter = FalseFileFilter.INSTANCE; final File testFile = new File( "foo.test" ); assertFiltering(new OrFileFilter(trueFilter, trueFilter), testFile, true); assertFiltering(new OrFileFilter(trueFilter, falseFilter), testFile, true); assertFiltering(new OrFileFilter(falseFilter, trueFilter), testFile, true); assertFiltering(new OrFileFilter(falseFilter, falseFilter), testFile, false); assertFiltering(new OrFileFilter(), testFile, false); assertFiltering(orFilter, testFile, true); assertEquals( orFilter.getFileFilters(), filters ); orFilter.removeFileFilter( trueFilter ); assertFiltering(orFilter, testFile, false); orFilter.setFileFilters( filters ); assertFiltering(orFilter, testFile, true);
@Test public void testAnd() throws Exception { final IOFileFilter trueFilter = TrueFileFilter.INSTANCE; final IOFileFilter falseFilter = FalseFileFilter.INSTANCE; assertFiltering(new AndFileFilter(trueFilter, trueFilter), new File("foo.test"), true); assertFiltering(new AndFileFilter(trueFilter, falseFilter), new File("foo.test"), false); assertFiltering(new AndFileFilter(falseFilter, trueFilter), new File("foo.test"), false); assertFiltering(new AndFileFilter(falseFilter, falseFilter), new File("foo.test"), false); final List<IOFileFilter> filters = new ArrayList<>(); assertFiltering( new AndFileFilter( filters ), new File( "test" ), false ); assertFiltering( new AndFileFilter(), new File( "test" ), false ); try { new AndFileFilter(falseFilter, null); fail(); } catch (final IllegalArgumentException ignore) { } try { new AndFileFilter(null, falseFilter); fail(); } catch (final IllegalArgumentException ignore) { } final AndFileFilter f = new AndFileFilter(null); assertTrue(f.getFileFilters().isEmpty()); assertNotNull(f.toString()); // TODO better tests }
@Test public void testDelegateFileFilter() throws Exception { final OrFileFilter orFilter = new OrFileFilter(); final File testFile = new File( "test.txt" ); IOFileFilter filter = new DelegateFileFilter((FileFilter) orFilter); assertFiltering( filter, testFile, false ); assertNotNull(filter.toString()); // TODO better test filter = new DelegateFileFilter((FilenameFilter) orFilter); assertFiltering( filter, testFile, false ); assertNotNull(filter.toString()); // TODO better test try { new DelegateFileFilter((FileFilter) null); fail(); } catch( final IllegalArgumentException ignore ) { } try { new DelegateFileFilter((FilenameFilter) null); fail(); } catch( final IllegalArgumentException ignore ) { } }