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 }