/* * RHQ Management Platform * Copyright (C) 2005-2009 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, as * published by the Free Software Foundation, and/or the GNU Lesser * General Public License, version 2.1, also as published by the Free * Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License and the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU General Public License * and the GNU Lesser General Public License along with this program; * if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.rhq.augeas.util.test; import static org.testng.Assert.assertEqualsNoOrder; import java.io.File; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.testng.annotations.Test; import org.rhq.augeas.util.GlobFilter; /** * Tests for glob implementation. * * The tests are based on the glob pattern documentation found * <a href="http://www.debian.org/doc/manuals/debian-reference/ch01.en.html#_shell_glob">here</a>. * * * @author Lukas Krejci */ @Test public class GlobFilterTest { private static class Test { String glob; String[] testFileNames; Set<String> expectedResults; Test() { } Test(String glob, String[] testFileNames, String[] expectedResults) { this.glob = glob; this.testFileNames = testFileNames; this.expectedResults = new HashSet<String>(Arrays.asList(expectedResults)); } void execute() { Set<String> collectedResults = new HashSet<String>(); GlobFilter filter = new GlobFilter(glob); for (String fileName : testFileNames) { File f = new File(fileName); if (filter.accept(f)) { collectedResults.add(fileName); } } assertEqualsNoOrder(collectedResults.toArray(), expectedResults.toArray(), "The glob '" + glob + "' didn't match as expected."); } } public static final String[] defaultTestFileNames = { "/a", "/A", "/b", "/B", "/c", "/C", "/aa", "/aA", "/Aa", "/AA", "/.a", "/-", "/*" }; public void testStar() { //this shouldn't match the ".a" file new Test("/*", defaultTestFileNames, new String[] { "/a", "/A", "/b", "/B", "/c", "/C", "/aa", "/aA", "/Aa", "/AA", "/-", "/*" }).execute(); } public void testQuestionMark() { new Test("/?", defaultTestFileNames, new String[] { "/a", "/A", "/b", "/B", "/c", "/C", "/-", "/*" }).execute(); } public void testDotFilesMatch() { new Test("/.*", defaultTestFileNames, new String[] { "/.a" }).execute(); } public void testRanges() { new Test("/[a-c]*", defaultTestFileNames, new String[] { "/a", "/b", "/c", "/aa", "/aA" }); new Test("/[-a]", defaultTestFileNames, new String[] { "/a", "/-" }); new Test("/[*]", defaultTestFileNames, new String[] { "/*" }); } }