1 8 package test; 9 10 import junit.framework.TestCase; 11 import org.codehaus.aspectwerkz.cflow.CflowCompiler; 12 import org.codehaus.aspectwerkz.cflow.AbstractCflowSystemAspect; 13 import org.codehaus.aspectwerkz.transform.inlining.AsmHelper; 14 import org.codehaus.aspectwerkz.reflect.ClassInfo; 15 import org.codehaus.aspectwerkz.reflect.MethodInfo; 16 import org.codehaus.aspectwerkz.reflect.impl.asm.AsmClassInfo; 17 import org.codehaus.aspectwerkz.exception.DefinitionException; 18 19 import java.lang.reflect.Method ; 20 21 24 public class CflowCompilerTest extends TestCase { 25 26 public void testCompiler() { 27 try { 28 Class cflowAspect = CflowCompiler.compileCflowAspectAndAttachToClassLoader( 29 CflowCompilerTest.class.getClassLoader(), 30 4 31 ); 32 33 assertEquals(cflowAspect.getName().replace('/', '.'), "org.codehaus.aspectwerkz.cflow.Cflow_4"); 34 assertTrue(cflowAspect.getSuperclass().equals(AbstractCflowSystemAspect.class)); 35 Method enter = cflowAspect.getDeclaredMethod("isInCflow", new Class [0]); 36 } catch (Throwable t) { 37 fail(t.toString()); 38 } 39 } 40 41 public void testCflow() throws Throwable { 42 Class cflowAspect = CflowCompiler.compileCflowAspectAndAttachToClassLoader( 43 CflowCompilerTest.class.getClassLoader(), 44 4 45 ); 46 47 Method staticMethod = cflowAspect.getDeclaredMethod("isInCflow", new Class [0]); 49 Boolean b = (Boolean ) staticMethod.invoke(null, new Object [0]); 50 assertFalse(b.booleanValue()); 51 52 final AbstractCflowSystemAspect cflow = (AbstractCflowSystemAspect) 53 cflowAspect.getDeclaredMethod("aspectOf", new Class [0]).invoke(null, new Object [0]); 54 55 assertFalse(cflow.inCflow()); 56 Thread t = new Thread () { 57 public void run() { 58 System.out.println(Thread.currentThread()); 59 cflow.enter(); 60 assertTrue(cflow.inCflow()); 61 cflow.enter(); 62 assertTrue(cflow.inCflow()); 63 cflow.exit(); 64 } 66 }; 67 t.start(); 68 System.out.println(Thread.currentThread()); 69 70 assertFalse(cflow.inCflow()); 71 } 72 73 74 75 public static void main(String [] args) { 76 junit.textui.TestRunner.run(suite()); 77 } 78 79 public static junit.framework.Test suite() { 80 return new junit.framework.TestSuite(CflowCompilerTest.class); 81 } 82 83 } 84 | Popular Tags |