1   /***************************************************************************************
2    * Copyright (c) Jonas Bonér, Alexandre Vasseur. All rights reserved.                 *
3    * http://aspectwerkz.codehaus.org                                                    *
4    * ---------------------------------------------------------------------------------- *
5    * The software in this package is published under the terms of the LGPL license      *
6    * a copy of which has been included with this distribution in the license.txt file.  *
7    **************************************************************************************/
8   package test;
9   
10  import junit.framework.TestCase;
11  import org.codehaus.aspectwerkz.expression.SubtypePatternType;
12  import org.codehaus.aspectwerkz.expression.regexp.Pattern;
13  import org.codehaus.aspectwerkz.expression.regexp.TypePattern;
14  
15  /***
16   * @author <a href="mailto:jboner@codehaus.org">Jonas Bonér </a>
17   */
18  public class ClassPatternTest extends TestCase {
19      public void testMatchMethodName1() {
20          TypePattern classPattern = Pattern.compileTypePattern(
21              "foo.bar.SomeClass",
22              SubtypePatternType.NOT_HIERARCHICAL);
23          assertFalse(classPattern.matches("SomeClass"));
24          assertTrue(classPattern.matches("foo.bar.SomeClass"));
25          assertFalse(classPattern.matches("Class"));
26          assertFalse(classPattern.matches(""));
27      }
28  
29      public void testMatchMethodName2() {
30          TypePattern classPattern = Pattern.compileTypePattern(
31              "foo.bar.*",
32              SubtypePatternType.NOT_HIERARCHICAL);
33          assertTrue(classPattern.matches("foo.bar.SomeClass"));
34          assertTrue(classPattern.matches("foo.bar.SomeOtherClass"));
35          assertFalse(classPattern.matches("SomeClass"));
36          assertFalse(classPattern.matches(""));
37      }
38  
39      public void testMatchMethodName3() {
40          TypePattern classPattern = Pattern.compileTypePattern(
41              "foo.*.bar.SomeClass",
42              SubtypePatternType.NOT_HIERARCHICAL);
43          assertTrue(classPattern.matches("foo.hey.bar.SomeClass"));
44          assertTrue(classPattern.matches("foo.there.bar.SomeClass"));
45          assertFalse(classPattern.matches("SomeClass"));
46          assertFalse(classPattern.matches(""));
47      }
48  
49      public void testMatchMethodName4() {
50          TypePattern classPattern = Pattern.compileTypePattern(
51              "foo.ba*.*",
52              SubtypePatternType.NOT_HIERARCHICAL);
53          assertTrue(classPattern.matches("foo.bag.SomeClass"));
54          assertTrue(classPattern.matches("foo.bar.SomeClass"));
55          assertTrue(classPattern.matches("foo.ba.SomeClass"));
56          assertFalse(classPattern.matches("foo.bear.SomeClass"));
57          assertFalse(classPattern.matches("foo"));
58      }
59  
60      public void testMatchClassName5() {
61          TypePattern classPattern = Pattern.compileTypePattern(
62              "foo..",
63              SubtypePatternType.NOT_HIERARCHICAL);
64          assertTrue(classPattern.matches("foo.hey.bar.SomeClass"));
65          assertTrue(classPattern.matches("foo.SomeClass"));
66          assertTrue(classPattern.matches("foo.bar.SomeClass"));
67          assertFalse(classPattern.matches("foo"));
68      }
69  
70      public void testMatchClassName6() {
71          TypePattern classPattern = Pattern.compileTypePattern(
72              "*",
73              SubtypePatternType.NOT_HIERARCHICAL);
74          assertTrue(classPattern.matches("foo.hey.bar.SomeClass"));
75          assertTrue(classPattern.matches("foo.SomeClass"));
76          assertTrue(classPattern.matches("foo.bar.SomeClass"));
77          assertTrue(classPattern.matches("foo"));
78      }
79  
80      public void testMatchClassName7() {
81          TypePattern classPattern = Pattern.compileTypePattern(
82              "..",
83              SubtypePatternType.NOT_HIERARCHICAL);
84          assertTrue(classPattern.matches("foo.hey.bar.SomeClass"));
85          assertTrue(classPattern.matches("foo.SomeClass"));
86          assertTrue(classPattern.matches("foo.bar.SomeClass"));
87          assertTrue(classPattern.matches("foo"));
88      }
89  
90      public void testMatchClassName8() {
91          TypePattern classPattern = Pattern.compileTypePattern(
92              "foo.bar..*",
93              SubtypePatternType.NOT_HIERARCHICAL);
94          assertTrue(classPattern.matches("foo.bar.SomeClass"));
95          assertTrue(classPattern.matches("foo.bar.baz.SomeClass"));
96          assertTrue(classPattern.matches("foo.bar.baz.buzz.SomeClass"));
97      }
98  
99      public void testMatchClassName9() {
100         TypePattern classPattern = Pattern.compileTypePattern(
101             "foo.bar.Baz$Buzz",
102             SubtypePatternType.NOT_HIERARCHICAL);
103         assertTrue(classPattern.matches("foo.bar.Baz$Buzz"));
104         assertFalse(classPattern.matches("foo.bar.Baz"));
105     }
106 
107     public void testMatchClassName10() {
108         TypePattern classPattern = Pattern.compileTypePattern(
109             "foo.bar..$Buzz",
110             SubtypePatternType.NOT_HIERARCHICAL);
111         assertTrue(classPattern.matches("foo.bar.Baz$Buzz"));
112         assertTrue(classPattern.matches("foo.bar.Baz.Buz$Buzz"));
113         assertFalse(classPattern.matches("foo.bar.Baz.Buz$Buz"));
114         assertFalse(classPattern.matches("foo.bar.Baz"));
115     }
116 
117     public static void main(String[] args) {
118         junit.textui.TestRunner.run(suite());
119     }
120 
121     public static junit.framework.Test suite() {
122         return new junit.framework.TestSuite(ClassPatternTest.class);
123     }
124 }