001    package org.hackystat.sensorbase.uripattern;
002    
003    
004    import static org.junit.Assert.assertFalse;
005    import static org.junit.Assert.assertTrue;
006    
007    import org.junit.Test;
008    
009    /**
010     * Test suite for <code>PatternMatcher</code>.
011     *
012     * @author Qin Zhang
013     * @version $Id: TestPatternMatcher.java,v 1.1.1.1 2005/10/20 23:56:40 johnson Exp $
014     */
015    public class TestPatternMatcher {
016      
017      private String testStarJava = "**/*.java";
018      private String testBJava = "a/TestB.java";
019      private String src = "src/";
020      private String starStarTestClass = "org.**.Test*Class";
021      private String testClass = "org.src.hackystat.TestClass";
022      private String testAClass = "org.src.hackystat.TestAClass";
023      private String testABClass = "org.src.hackystat.TestABClass";
024      private String testQuestionClass = "org.**.Test?Class";
025      //private String testClass2 = starStarTestClass;
026      //private String testClass3 = testQuestionClass;
027      private String testStarJava2 = "**/Test*.java";
028      
029    
030      /**
031       * Tests <code>matchesFilePath()</code>.
032       */
033      @Test
034      public void testMatchesFilePath() {
035        //file names
036        assertTrue("01", PatternMatcher.matchesFilePath(testStarJava, "c:/src/a/B.java", true));
037        assertTrue("02", PatternMatcher.matchesFilePath(testStarJava, "B.java", true));
038        assertTrue("03", PatternMatcher.matchesFilePath("**/a/**/*.java", "c:/src/a/B.java", true));
039        assertTrue("04", 
040            PatternMatcher.matchesFilePath("**/a/**/*.java", "c:/src/a/c/B.java", true));
041        assertTrue("05", PatternMatcher.matchesFilePath("a/**/*.java", "a/d/e/B.java", true));
042        assertTrue("06", PatternMatcher.matchesFilePath("a/**/*.java", "a/B.java", true));
043        assertTrue("07", 
044            PatternMatcher.matchesFilePath(testStarJava2, "c:/src/a/TestB.java", true));
045        assertTrue("08", PatternMatcher.matchesFilePath(testStarJava2, testBJava, true));
046        assertTrue("09", PatternMatcher.matchesFilePath(testStarJava2, "TestB.java", true));
047    
048        assertTrue("10", PatternMatcher.matchesFilePath(src, src, true));
049        assertFalse("11", PatternMatcher.matchesFilePath(src, "src/a", true));
050        assertFalse("13", PatternMatcher.matchesFilePath(src, "src/a/a", true));
051    
052        assertFalse("14", PatternMatcher.matchesFilePath("src/**/org/", "sRc/a/b/org", true));
053        assertFalse("15", PatternMatcher.matchesFilePath("src/**/org/", "sRc/a/b/org/A.java", false));
054    
055        assertFalse("16", PatternMatcher.matchesFilePath(testStarJava2, "c:/Test/B.java", true));
056    
057        assertTrue("18", PatternMatcher.matchesFilePath(null, testBJava, false));
058        assertTrue("19", PatternMatcher.matchesFilePath("**", testBJava, true));
059        assertTrue("20", PatternMatcher.matchesFilePath("**", testBJava, false));
060      }
061    
062      /**
063       * Tests <code>matches()</code>.
064       */
065      @Test
066      public void testMatches() {
067        assertTrue("21", PatternMatcher.matchesFilePath("org.**.Test*", "org.hackystat.TestA", true));
068        assertFalse("22", PatternMatcher.matchesFilePath("oRg.**.Test*", "org.hackystat.TestA", true));
069        assertTrue("23", PatternMatcher.matchesFilePath("oRg.**.Test*", "org.hackystat.TestA", false));
070    
071        assertTrue("24", 
072          PatternMatcher.matchesFilePath(starStarTestClass, testClass, true));
073        assertTrue("25", 
074          PatternMatcher.matchesFilePath(starStarTestClass, testAClass, true));
075        assertTrue("26", 
076          PatternMatcher.matchesFilePath(starStarTestClass, testABClass, true));
077        assertTrue("27", 
078          PatternMatcher.matchesFilePath(starStarTestClass, "org.src.hackystat.TestABCClass", true));
079        assertTrue("28", 
080          PatternMatcher.matchesFilePath(testQuestionClass, testAClass, true));
081    
082        assertFalse("29", 
083          PatternMatcher.matchesFilePath(testQuestionClass, testClass, true));
084        assertFalse("30", 
085          PatternMatcher.matchesFilePath(testQuestionClass, testABClass, true));
086    
087        assertTrue("32", 
088          PatternMatcher.matchesFilePath(starStarTestClass, testClass, false));
089        assertTrue("33", 
090          PatternMatcher.matchesFilePath(starStarTestClass, testAClass, false));
091        assertTrue("34", 
092          PatternMatcher.matchesFilePath(starStarTestClass, testABClass, false));
093        assertTrue("35", 
094          PatternMatcher.matchesFilePath(starStarTestClass, "org.src.hackystat.TestABCClass", false));
095        assertTrue("36", 
096          PatternMatcher.matchesFilePath(testQuestionClass, testAClass, false));
097    
098        assertFalse("37", 
099          PatternMatcher.matchesFilePath(testQuestionClass, testClass, false));
100        assertFalse("38", 
101          PatternMatcher.matchesFilePath(testQuestionClass, testABClass, false));
102        assertTrue("39", 
103          PatternMatcher.matchesFilePath(testQuestionClass, testAClass, false));
104    
105        assertTrue("40", PatternMatcher.matchesFilePath("**.a.b.c**", "AAA.a.b.cBBB", true));
106        assertTrue("41", PatternMatcher.matchesFilePath("**.a.b.c**", ".a.b.c", true));
107        assertTrue("42", PatternMatcher.matchesFilePath("?.???.?", "a.?*b.c", true));
108    
109        assertTrue("43", PatternMatcher.matchesFilePath(null, "a.?*b.c", true));
110        assertTrue("44", PatternMatcher.matchesFilePath(null, "a.?*b.c", false));
111      }
112    }