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.staticinitialization;
9
10 import org.codehaus.aspectwerkz.expression.ExpressionContext;
11 import org.codehaus.aspectwerkz.expression.ExpressionInfo;
12 import org.codehaus.aspectwerkz.expression.ExpressionNamespace;
13 import org.codehaus.aspectwerkz.expression.PointcutType;
14 import org.codehaus.aspectwerkz.reflect.ClassInfo;
15 import org.codehaus.aspectwerkz.reflect.MethodInfo;
16 import org.codehaus.aspectwerkz.reflect.impl.java.JavaClassInfo;
17
18 import junit.framework.TestCase;
19 import test.CallerSideAdviceTest;
20
21
22 /***
23 * Expression parser test for staticinitialization.
24 *
25 * @author <a href="mailto:the_mindstorm@evolva.ro">Alex Popescu</a>
26 */
27 public class StaticInitializationExpressionTest extends TestCase {
28 private static final String NAMESPACE = "TESTING";
29
30 static {
31 Object some = new Object();
32 }
33
34 public void testStaticInitializerExpression() {
35 ClassInfo declaringType = JavaClassInfo.getClassInfo(StaticInitializationExpressionTest.class);
36
37 assertTrue("should found <clinit>", declaringType.hasStaticInitializer());
38
39 assertTrue(
40 new ExpressionInfo(
41 "staticinitialization(test.staticinitialization.StaticInitializationExpressionTest)",
42 NAMESPACE).getExpression().match(
43 new ExpressionContext(PointcutType.STATIC_INITIALIZATION, declaringType.staticInitializer(), null))
44 );
45
46
47 assertTrue(
48 new ExpressionInfo(
49 "staticinitialization(test.*.*) && within(test.staticinitialization.StaticInitializationExpressionTest)",
50 NAMESPACE).getExpression().match(
51 new ExpressionContext(PointcutType.STATIC_INITIALIZATION, declaringType.staticInitializer(), declaringType))
52 );
53
54 assertTrue(
55 new ExpressionInfo(
56 "staticinitialization(test.staticinitialization.StaticInitializationExpressionTest)",
57 NAMESPACE).getAdvisedClassFilterExpression().match(
58 new ExpressionContext(PointcutType.STATIC_INITIALIZATION, null, declaringType))
59 );
60
61 assertTrue(
62 new ExpressionInfo(
63 "staticinitialization(test.staticinitialization.StaticInitializationExpressionTest)",
64 NAMESPACE).getAdvisedClassFilterExpression().match(
65 new ExpressionContext(PointcutType.STATIC_INITIALIZATION, null, declaringType.staticInitializer()))
66 );
67 }
68
69 public static void main(String[] args) {
70 junit.textui.TestRunner.run(suite());
71 }
72
73 public static junit.framework.Test suite() {
74 return new junit.framework.TestSuite(StaticInitializationExpressionTest.class);
75 }
76 }