@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 }