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 }