/**************************************************************************************
* 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.deployment;
import junit.framework.TestCase;
import org.codehaus.aspectwerkz.transform.inlining.deployer.Deployer;
import org.codehaus.aspectwerkz.transform.inlining.deployer.DeploymentHandle;
import org.codehaus.aspectwerkz.definition.DeploymentScope;
import org.codehaus.aspectwerkz.definition.SystemDefinition;
import org.codehaus.aspectwerkz.definition.SystemDefinitionContainer;
/**
* TODO add more tests, tests that can make things break, evil tests
* <p/>
* TODO tests for all pointcut types
*
* @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a>
*/
public class DeployerTest extends TestCase {
private static String s_logString = "";
public DeployerTest(String name) {
super(name);
}
public void testDeployUndeployUsingPreparedPointcut() {
s_logString = "";
deployUndeployUsingPreparedPointcut();
assertEquals("deployUndeployUsingPreparedPointcut ", s_logString);
s_logString = "";
SystemDefinition def = SystemDefinitionContainer.getDefinitionFor(
Thread.currentThread().getContextClassLoader(), "tests"
);
DeploymentScope deploymentScope = def.getDeploymentScope("deployUndeployUsingPreparedPointcut");
Deployer.deploy(AnnDefAspect.class, deploymentScope);
deployUndeployUsingPreparedPointcut();
assertEquals("before deployUndeployUsingPreparedPointcut after ", s_logString);
s_logString = "";
Deployer.undeploy(AnnDefAspect.class);
deployUndeployUsingPreparedPointcut();
assertEquals("deployUndeployUsingPreparedPointcut ", s_logString);
}
public void testDeployUndeployUsingHandle() {
s_logString = "";
deployUndeployUsingHandle();
assertEquals("deployUndeployUsingHandle ", s_logString);
s_logString = "";
SystemDefinition def = SystemDefinitionContainer.getDefinitionFor(
Thread.currentThread().getContextClassLoader(), "tests"
);
DeploymentScope deploymentScope = def.getDeploymentScope("deployUndeployUsingHandle");
DeploymentHandle handle = Deployer.deploy(AnnDefAspect.class, deploymentScope);
deployUndeployUsingHandle();
assertEquals("before deployUndeployUsingHandle after ", s_logString);
s_logString = "";
Deployer.undeploy(handle);
deployUndeployUsingHandle();
assertEquals("deployUndeployUsingHandle ", s_logString);
}
public void testDeployUndeployUsingXmlDef() {
s_logString = "";
deployUndeployUsingXmlDef();
assertEquals("deployUndeployUsingXmlDef ", s_logString);
s_logString = "";
SystemDefinition def = SystemDefinitionContainer.getDefinitionFor(
Thread.currentThread().getContextClassLoader(), "tests"
);
DeploymentScope deploymentScope = def.getDeploymentScope("deployUndeployUsingXmlDef");
String aspectXmlDef =
"<aspect class=\"test.deployment.XmlDefAspect\">" +
"<pointcut name=\"pc\" expression=\"execution(void test.deployment.DeployerTest.deployUndeployUsingXmlDef())\"/>" +
"<advice name=\"advice\" type=\"around\" bind-to=\"pc\"/>" +
"</aspect>";
Deployer.deploy(XmlDefAspect.class, aspectXmlDef, deploymentScope);
deployUndeployUsingXmlDef();
assertEquals("before deployUndeployUsingXmlDef after ", s_logString);
s_logString = "";
Deployer.undeploy(XmlDefAspect.class);
deployUndeployUsingXmlDef();
assertEquals("deployUndeployUsingXmlDef ", s_logString);
}
private void deployUndeployUsingHandle() {
log("deployUndeployUsingHandle ");
}
private void deployUndeployUsingPreparedPointcut() {
log("deployUndeployUsingPreparedPointcut ");
}
private void deployUndeployUsingXmlDef() {
log("deployUndeployUsingXmlDef ");
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public static junit.framework.Test suite() {
return new junit.framework.TestSuite(DeployerTest.class);
}
public static void log(final String wasHere) {
s_logString += wasHere;
}
}