Browse Source

moved

AspectJ5_Development
avasseur 19 years ago
parent
commit
bb8ca062aa
1 changed files with 0 additions and 143 deletions
  1. 0
    143
      tests/java5/ataspectj/SingletonAspectBindingsTest.java

+ 0
- 143
tests/java5/ataspectj/SingletonAspectBindingsTest.java View File

@@ -1,143 +0,0 @@
/*******************************************************************************
* Copyright (c) Jonas Bonér, Alexandre Vasseur
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*******************************************************************************/
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.DeclarePrecedence;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.JoinPoint;
import org.aspectj.runtime.internal.AroundClosure;
import junit.framework.TestCase;
/**
* Test various advice and JoinPoint + binding, without pc ref
*
* test commit..
* @author <a href="mailto:alex AT gnilux DOT com">Alexandre Vasseur</a>
*/
public class SingletonAspectBindingsTest extends TestCase {
static StringBuffer s_log = new StringBuffer();
static void log(String s) {
s_log.append(s).append(" ");
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public static junit.framework.Test suite() {
return new junit.framework.TestSuite(SingletonAspectBindingsTest.class);
}
public void hello() {
log("hello");
}
public void hello(String s) {
log("hello-");
log(s);
}
public void testExecutionWithThisBinding() {
s_log = new StringBuffer();
System.err.println("First test running");
SingletonAspectBindingsTest me = new SingletonAspectBindingsTest();
System.err.println("Calling hello()");
me.hello();
System.err.println("Returned from hello()");
// see here advice precedence as in source code order
//TODO check around relative order
// see fix in BcelWeaver sorting shadowMungerList
System.err.println(">GOT:"+s_log.toString());
System.err.println("Expected:"+"around2_ around_ before hello after _around _around2 ");
//assertEquals("around2_ around_ before hello after _around _around2 ", s_log.toString());
assertEquals("around_ around2_ before hello _around2 _around after ", s_log.toString());
}
public void testExecutionWithArgBinding() {
s_log = new StringBuffer();
SingletonAspectBindingsTest me = new SingletonAspectBindingsTest();
System.err.println("Calling hello(x)");
me.hello("x");
System.err.println("Returned from hello(x)");
assertEquals("before- x hello- x ", s_log.toString());
}
@Aspect("issingleton")
public static class TestAspect {
static int s = 0;
static {
s++;
}
public TestAspect() {
// assert clinit has run when singleton aspectOf reaches that
assertTrue(s>0);
}
//public static TestAspect aspectOf() {return null;}
@Around("execution(* SingletonAspectBindingsTest.hello())")
public void aaround(JoinPoint jp) {
log("around_");
System.err.println("In first around advice");
try {
jp.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
log("_around");
}
@Around("execution(* SingletonAspectBindingsTest.hello()) && this(t)")
public void around2(Object t, JoinPoint jp) {
log("around2_");
System.err.println("In second around advice");
System.err.println("Joinpoint is "+jp);
assertEquals(SingletonAspectBindingsTest.class.getName(), t.getClass().getName());
try {
jp.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
log("_around2");
}
@Before("execution(* SingletonAspectBindingsTest.hello())")
public void before(JoinPoint.StaticPart sjp) {
log("before");
System.err.println("In before advice");
assertEquals("hello", sjp.getSignature().getName());
}
@After("execution(* SingletonAspectBindingsTest.hello())")
public void after(JoinPoint.StaticPart sjp) {
log("after");
System.err.println("In after advice");
assertEquals("execution(public void SingletonAspectBindingsTest.hello())", sjp.toLongString());
}
//TODO see String, see before advice name clash - all that works
// 1/ String is in java.lang.* - see SimpleScope.javalangPrefix array
// 2/ the advice is register thru its Bcel Method mirror
@Before("execution(* SingletonAspectBindingsTest.hello(String)) && args(s)")
public void before(String s, JoinPoint.StaticPart sjp) {
log("before-");
log(s);
assertEquals("hello", sjp.getSignature().getName());
}
}
}

Loading…
Cancel
Save