/* * 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 org.junit.Before; import java.util.ArrayList; import java.util.List; public class OrFileFilterTestCase extends ConditionalFileFilterAbstractTestCase { private static final String DEFAULT_WORKING_PATH = "./OrFileFilterTestCase/"; private static final String WORKING_PATH_NAME_PROPERTY_KEY = OrFileFilterTestCase.class.getName() + ".workingDirectory"; private List<List<IOFileFilter>> testFilters; private List<boolean[]> testTrueResults; private List<boolean[]> testFalseResults; private List<Boolean> testFileResults; private List<Boolean> testFilenameResults; @Override protected IOFileFilter buildFilterUsingAdd(final List<IOFileFilter> filters) { final OrFileFilter filter = new OrFileFilter(); for (IOFileFilter filter1 : filters) { filter.addFileFilter(filter1); } return filter; } @Override protected IOFileFilter buildFilterUsingConstructor(final List<IOFileFilter> filters) { return new OrFileFilter(filters); } @Override protected ConditionalFileFilter getConditionalFileFilter() { return new OrFileFilter(); } @Override protected String getDefaultWorkingPath() { return DEFAULT_WORKING_PATH; } @Override protected List<boolean[]> getFalseResults() { return this.testFalseResults; } @Override protected List<Boolean> getFileResults() { return this.testFileResults; } @Override protected List<Boolean> getFilenameResults() { return this.testFilenameResults; } @Override protected List<List<IOFileFilter>> getTestFilters() { return this.testFilters; } @Override protected List<boolean[]> getTrueResults() { return this.testTrueResults; } @Override protected String getWorkingPathNamePropertyKey() { return WORKING_PATH_NAME_PROPERTY_KEY; } @Before public void setUpTestFilters() { // filters //tests this.testFilters = new ArrayList<>(); this.testTrueResults = new ArrayList<>(); this.testFalseResults = new ArrayList<>(); this.testFileResults = new ArrayList<>(); this.testFilenameResults = new ArrayList<>(); // test 0 - add empty elements { testFilters.add(0, null); testTrueResults.add(0, null); testFalseResults.add(0, null); testFileResults.add(0, null); testFilenameResults.add(0, null); } // test 1 - Test conditional or with all filters returning true { // test 1 filters final List<IOFileFilter> filters = new ArrayList<>(); filters.add(trueFilters[1]); filters.add(trueFilters[2]); filters.add(trueFilters[3]); // test 1 true results final boolean[] trueResults = new boolean[] {true, false, false}; // test 1 false results final boolean[] falseResults = new boolean[] {false, false, false}; testFilters.add(1, filters); testTrueResults.add(1, trueResults); testFalseResults.add(1, falseResults); testFileResults.add(1, Boolean.TRUE); testFilenameResults.add(1, Boolean.TRUE); } // test 2 - Test conditional or with first filter returning false { // test 2 filters final List<IOFileFilter> filters = new ArrayList<>(); filters.add(falseFilters[1]); filters.add(trueFilters[1]); filters.add(trueFilters[2]); filters.add(trueFilters[3]); filters.add(falseFilters[2]); filters.add(falseFilters[3]); // test 2 true results final boolean[] trueResults = new boolean[] {true, false, false}; // test 2 false results final boolean[] falseResults = new boolean[] {true, false, false}; testFilters.add(2, filters); testTrueResults.add(2, trueResults); testFalseResults.add(2, falseResults); testFileResults.add(2, Boolean.TRUE); testFilenameResults.add(2, Boolean.TRUE); } // test 3 - Test conditional or with second filter returning false { // test 3 filters final List<IOFileFilter> filters = new ArrayList<>(); filters.add(trueFilters[1]); filters.add(falseFilters[1]); filters.add(trueFilters[2]); filters.add(trueFilters[3]); filters.add(falseFilters[2]); filters.add(falseFilters[3]); // test 3 true results final boolean[] trueResults = new boolean[] {true, false, false}; // test 3 false results final boolean[] falseResults = new boolean[] {false, false, false}; testFilters.add(3, filters); testTrueResults.add(3, trueResults); testFalseResults.add(3, falseResults); testFileResults.add(3, Boolean.TRUE); testFilenameResults.add(3, Boolean.TRUE); } // test 4 - Test conditional or with third filter returning false { // test 4 filters final List<IOFileFilter> filters = new ArrayList<>(); filters.add(trueFilters[1]); filters.add(trueFilters[2]); filters.add(falseFilters[1]); filters.add(trueFilters[3]); filters.add(falseFilters[2]); filters.add(falseFilters[3]); // test 4 true results final boolean[] trueResults = new boolean[] {true, false, false}; // test 4 false results final boolean[] falseResults = new boolean[] {false, false, false}; testFilters.add(4, filters); testTrueResults.add(4, trueResults); testFalseResults.add(4, falseResults); testFileResults.add(4, Boolean.TRUE); testFilenameResults.add(4, Boolean.TRUE); } // test 5 - Test conditional or with first and third filters returning false { // test 5 filters final List<IOFileFilter> filters = new ArrayList<>(); filters.add(falseFilters[1]); filters.add(trueFilters[1]); filters.add(falseFilters[2]); filters.add(falseFilters[3]); filters.add(trueFilters[2]); filters.add(trueFilters[3]); // test 5 true results final boolean[] trueResults = new boolean[] {true, false, false}; // test 5 false results final boolean[] falseResults = new boolean[] {true, false, false}; testFilters.add(5, filters); testTrueResults.add(5, trueResults); testFalseResults.add(5, falseResults); testFileResults.add(5, Boolean.TRUE); testFilenameResults.add(5, Boolean.TRUE); } // test 6 - Test conditional or with second and third filters returning false { final List<IOFileFilter> filters = new ArrayList<>(); filters.add(trueFilters[1]); filters.add(falseFilters[1]); filters.add(falseFilters[2]); filters.add(trueFilters[2]); filters.add(trueFilters[3]); filters.add(falseFilters[3]); // test 6 true results final boolean[] trueResults = new boolean[] {true, false, false}; // test 6 false results final boolean[] falseResults = new boolean[] {false, false, false}; testFilters.add(6, filters); testTrueResults.add(6, trueResults); testFalseResults.add(6, falseResults); testFileResults.add(6, Boolean.TRUE); testFilenameResults.add(6, Boolean.TRUE); } // test 7 - Test conditional or with first and second filters returning false { final List<IOFileFilter> filters = new ArrayList<>(); filters.add(falseFilters[1]); filters.add(falseFilters[2]); filters.add(trueFilters[1]); filters.add(falseFilters[3]); filters.add(trueFilters[2]); filters.add(trueFilters[3]); // test 7 true results final boolean[] trueResults = new boolean[] {true, false, false}; // test 7 false results final boolean[] falseResults = new boolean[] {true, true, false}; testFilters.add(7, filters); testTrueResults.add(7, trueResults); testFalseResults.add(7, falseResults); testFileResults.add(7, Boolean.TRUE); testFilenameResults.add(7, Boolean.TRUE); } // test 8 - Test conditional or with fourth filter returning false { final List<IOFileFilter> filters = new ArrayList<>(); filters.add(trueFilters[1]); filters.add(trueFilters[2]); filters.add(trueFilters[3]); filters.add(falseFilters[1]); // test 8 true results final boolean[] trueResults = new boolean[] {true, false, false}; // test 8 false results final boolean[] falseResults = new boolean[] {false, false, false}; testFilters.add(8, filters); testTrueResults.add(8, trueResults); testFalseResults.add(8, falseResults); testFileResults.add(8, Boolean.TRUE); testFilenameResults.add(8, Boolean.TRUE); } // test 9 - Test conditional or with all filters returning false { final List<IOFileFilter> filters = new ArrayList<>(); filters.add(falseFilters[1]); filters.add(falseFilters[2]); filters.add(falseFilters[3]); // test 9 true results final boolean[] trueResults = new boolean[] {false, false, false}; // test 9 false results final boolean[] falseResults = new boolean[] {true, true, true}; testFilters.add(9, filters); testTrueResults.add(9, trueResults); testFalseResults.add(9, falseResults); testFileResults.add(9, Boolean.FALSE); testFilenameResults.add(9, Boolean.FALSE); } } }