@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 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 testFilterSet() throws Exception { final File fileA = TestUtils.newFile(getTestDirectory(), "A"); final File fileB = TestUtils.newFile(getTestDirectory(), "B"); final Set<File> fileList = new HashSet<>(Arrays.asList(fileA, fileB)); final IOFileFilter filter = FileFilterUtils.nameFileFilter("A"); final Set<File> filteredSet = FileFilterUtils.filterSet(filter, fileList); assertTrue(filteredSet.contains(fileA)); assertFalse(filteredSet.contains(fileB)); }
@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 testFilterList() throws Exception { final File fileA = TestUtils.newFile(getTestDirectory(), "A"); final File fileB = TestUtils.newFile(getTestDirectory(), "B"); final List<File> fileList = Arrays.asList(fileA, fileB); final IOFileFilter filter = FileFilterUtils.nameFileFilter("A"); final List<File> filteredList = FileFilterUtils.filterList(filter, fileList); assertTrue(filteredList.contains(fileA)); assertFalse(filteredList.contains(fileB)); }
@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 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 testFilterList_fromArray() throws Exception { final File fileA = TestUtils.newFile(getTestDirectory(), "A"); final File fileB = TestUtils.newFile(getTestDirectory(), "B"); final IOFileFilter filter = FileFilterUtils.nameFileFilter("A"); final List<File> filteredList = FileFilterUtils.filterList(filter, fileA, fileB); assertTrue(filteredList.contains(fileA)); assertFalse(filteredList.contains(fileB)); }
@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 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 testFilterSet_fromArray() throws Exception { final File fileA = TestUtils.newFile(getTestDirectory(), "A"); final File fileB = TestUtils.newFile(getTestDirectory(), "B"); final IOFileFilter filter = FileFilterUtils.nameFileFilter("A"); final Set<File> filteredSet = FileFilterUtils.filterSet(filter, fileA, fileB); assertTrue(filteredSet.contains(fileA)); assertFalse(filteredSet.contains(fileB)); }
@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 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 public void testFilterArray_fromList() throws Exception { final File fileA = TestUtils.newFile(getTestDirectory(), "A"); final File fileB = TestUtils.newFile(getTestDirectory(), "B"); final List<File> fileList = Arrays.asList(fileA, fileB); final IOFileFilter filter = FileFilterUtils.nameFileFilter("A"); final File[] filtered = FileFilterUtils.filter(filter, fileList); assertEquals(1, filtered.length); assertEquals(fileA, filtered[0]); }
@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); }
@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 testFilterArray() throws Exception { final File fileA = TestUtils.newFile(getTestDirectory(), "A"); final File fileB = TestUtils.newFile(getTestDirectory(), "B"); final IOFileFilter filter = FileFilterUtils.nameFileFilter("A"); final File[] filtered = FileFilterUtils.filter(filter, fileA, fileB); assertEquals(1, filtered.length); assertEquals(fileA, filtered[0]); }
final File emptyDir = new File(getTestDirectory(), "empty-dir"); emptyDir.mkdirs(); assertFiltering(EmptyFileFilter.EMPTY, emptyDir, true); assertFiltering(EmptyFileFilter.NOT_EMPTY, emptyDir, false); TestUtils.generateTestData(output1, 0); assertFiltering(EmptyFileFilter.EMPTY, emptyFile, true); assertFiltering(EmptyFileFilter.NOT_EMPTY, emptyFile, false); assertFiltering(EmptyFileFilter.EMPTY, emptyDir, false); assertFiltering(EmptyFileFilter.NOT_EMPTY, emptyDir, true); TestUtils.generateTestData(output, 32); assertFiltering(EmptyFileFilter.EMPTY, notEmptyFile, false); assertFiltering(EmptyFileFilter.NOT_EMPTY, notEmptyFile, true); FileUtils.forceDelete(emptyDir);
@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 testFilterArrayNullParameters() throws Exception { final File fileA = TestUtils.newFile(getTestDirectory(), "A"); final File fileB = TestUtils.newFile(getTestDirectory(), "B"); try { FileFilterUtils.filter(null, fileA, fileB); fail(); } catch (final IllegalArgumentException iae) { // Test passes, exception thrown for null filter } final IOFileFilter filter = FileFilterUtils.trueFileFilter(); try { FileFilterUtils.filter(filter, fileA, null); fail(); } catch (final IllegalArgumentException iae) { // Test passes, exception thrown for list containing null } final File[] filtered = FileFilterUtils.filter(filter, (File[])null); assertEquals(0, filtered.length); }