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          );
24          assertFalse(classPattern.matches("SomeClass"));
25          assertTrue(classPattern.matches("foo.bar.SomeClass"));
26          assertFalse(classPattern.matches("Class"));
27          assertFalse(classPattern.matches(""));
28      }
29  
30      public void testMatchMethodName2() {
31          TypePattern classPattern = Pattern.compileTypePattern(
32                  "foo.bar.*",
33                  SubtypePatternType.NOT_HIERARCHICAL
34          );
35          assertTrue(classPattern.matches("foo.bar.SomeClass"));
36          assertTrue(classPattern.matches("foo.bar.SomeOtherClass"));
37          assertFalse(classPattern.matches("SomeClass"));
38          assertFalse(classPattern.matches(""));
39      }
40  
41      public void testMatchMethodName3() {
42          TypePattern classPattern = Pattern.compileTypePattern(
43                  "foo.*.bar.SomeClass",
44                  SubtypePatternType.NOT_HIERARCHICAL
45          );
46          assertTrue(classPattern.matches("foo.hey.bar.SomeClass"));
47          assertTrue(classPattern.matches("foo.there.bar.SomeClass"));
48          assertFalse(classPattern.matches("SomeClass"));
49          assertFalse(classPattern.matches(""));
50      }
51  
52      public void testMatchMethodName4() {
53          TypePattern classPattern = Pattern.compileTypePattern(
54                  "foo.ba*.*",
55                  SubtypePatternType.NOT_HIERARCHICAL
56          );
57          assertTrue(classPattern.matches("foo.bag.SomeClass"));
58          assertTrue(classPattern.matches("foo.bar.SomeClass"));
59          assertTrue(classPattern.matches("foo.ba.SomeClass"));
60          assertFalse(classPattern.matches("foo.bear.SomeClass"));
61          assertFalse(classPattern.matches("foo"));
62      }
63  
64      public void testMatchClassName5() {
65          TypePattern classPattern = Pattern.compileTypePattern(
66                  "foo..",
67                  SubtypePatternType.NOT_HIERARCHICAL
68          );
69          assertTrue(classPattern.matches("foo.hey.bar.SomeClass"));
70          assertTrue(classPattern.matches("foo.SomeClass"));
71          assertTrue(classPattern.matches("foo.bar.SomeClass"));
72          assertFalse(classPattern.matches("foo"));
73      }
74  
75      public void testMatchClassName6() {
76          TypePattern classPattern = Pattern.compileTypePattern(
77                  "*",
78                  SubtypePatternType.NOT_HIERARCHICAL
79          );
80          assertTrue(classPattern.matches("foo.hey.bar.SomeClass"));
81          assertTrue(classPattern.matches("foo.SomeClass"));
82          assertTrue(classPattern.matches("foo.bar.SomeClass"));
83          assertTrue(classPattern.matches("foo"));
84      }
85  
86      public void testMatchClassName7() {
87          TypePattern classPattern = Pattern.compileTypePattern(
88                  "..",
89                  SubtypePatternType.NOT_HIERARCHICAL
90          );
91          assertTrue(classPattern.matches("foo.hey.bar.SomeClass"));
92          assertTrue(classPattern.matches("foo.SomeClass"));
93          assertTrue(classPattern.matches("foo.bar.SomeClass"));
94          assertTrue(classPattern.matches("foo"));
95      }
96  
97      public void testMatchClassName8() {
98          TypePattern classPattern = Pattern.compileTypePattern(
99                  "foo.bar..*",
100                 SubtypePatternType.NOT_HIERARCHICAL
101         );
102         assertTrue(classPattern.matches("foo.bar.SomeClass"));
103         assertTrue(classPattern.matches("foo.bar.baz.SomeClass"));
104         assertTrue(classPattern.matches("foo.bar.baz.buzz.SomeClass"));
105     }
106 
107     public void testMatchClassName9() {
108         TypePattern classPattern = Pattern.compileTypePattern(
109                 "foo.bar.Baz$Buzz",
110                 SubtypePatternType.NOT_HIERARCHICAL
111         );
112         assertTrue(classPattern.matches("foo.bar.Baz$Buzz"));
113         assertFalse(classPattern.matches("foo.bar.Baz"));
114     }
115 
116     public void testMatchClassName10() {
117         TypePattern classPattern = Pattern.compileTypePattern(
118                 "foo.bar..$Buzz",
119                 SubtypePatternType.NOT_HIERARCHICAL
120         );
121         assertTrue(classPattern.matches("foo.bar.Baz$Buzz"));
122         assertTrue(classPattern.matches("foo.bar.Baz.Buz$Buzz"));
123         assertFalse(classPattern.matches("foo.bar.Baz.Buz$Buz"));
124         assertFalse(classPattern.matches("foo.bar.Baz"));
125     }
126 
127     public static void main(String[] args) {
128         junit.textui.TestRunner.run(suite());
129     }
130 
131     public static junit.framework.Test suite() {
132         return new junit.framework.TestSuite(ClassPatternTest.class);
133     }
134 }