/**************************************************************************************
* Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. *
* http://aspectwerkz.codehaus.org *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the LGPL license *
* a copy of which has been included with this distribution in the license.txt file. *
**************************************************************************************/
package test.staticinitialization;
import org.codehaus.aspectwerkz.expression.ExpressionContext;
import org.codehaus.aspectwerkz.expression.ExpressionInfo;
import org.codehaus.aspectwerkz.expression.ExpressionNamespace;
import org.codehaus.aspectwerkz.expression.PointcutType;
import org.codehaus.aspectwerkz.reflect.ClassInfo;
import org.codehaus.aspectwerkz.reflect.MethodInfo;
import org.codehaus.aspectwerkz.reflect.impl.java.JavaClassInfo;
import junit.framework.TestCase;
import test.CallerSideAdviceTest;
/**
* Expression parser test for staticinitialization.
*
* @author <a href="mailto:the_mindstorm@evolva.ro">Alex Popescu</a>
*/
public class StaticInitializationExpressionTest extends TestCase {
private static final String NAMESPACE = "TESTING";
static {
Object some = new Object();
}
public void testStaticInitializerExpression() {
ClassInfo declaringType = JavaClassInfo.getClassInfo(StaticInitializationExpressionTest.class);
assertTrue("should found <clinit>", declaringType.hasStaticInitializer());
assertTrue(
new ExpressionInfo(
"staticinitialization(test.staticinitialization.StaticInitializationExpressionTest)",
NAMESPACE).getExpression().match(
new ExpressionContext(PointcutType.STATIC_INITIALIZATION, declaringType.staticInitializer(), null))
);
assertTrue(
new ExpressionInfo(
"staticinitialization(test.*.*) && within(test.staticinitialization.StaticInitializationExpressionTest)",
NAMESPACE).getExpression().match(
new ExpressionContext(PointcutType.STATIC_INITIALIZATION, declaringType.staticInitializer(), declaringType))
);
assertTrue(
new ExpressionInfo(
"staticinitialization(test.staticinitialization.StaticInitializationExpressionTest)",
NAMESPACE).getAdvisedClassFilterExpression().match(
new ExpressionContext(PointcutType.STATIC_INITIALIZATION, null, declaringType))
);
assertTrue(
new ExpressionInfo(
"staticinitialization(test.staticinitialization.StaticInitializationExpressionTest)",
NAMESPACE).getAdvisedClassFilterExpression().match(
new ExpressionContext(PointcutType.STATIC_INITIALIZATION, null, declaringType.staticInitializer()))
);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public static junit.framework.Test suite() {
return new junit.framework.TestSuite(StaticInitializationExpressionTest.class);
}
}