1 7 package com.tirsen.nanning; 8 9 import com.tirsen.nanning.definition.*; 10 import junit.framework.TestCase; 11 12 20 public class AspectRepositoryTest extends TestCase { 21 public void testEmpty() { 22 AspectFactory aspectRepository = new AspectRepository(); 23 24 try { 25 aspectRepository.newInstance(Intf.class); 26 fail("could instantiate aspect before it was configured"); 28 } catch (IllegalArgumentException shouldHappen) { 30 } 31 } 32 33 public void testConfig() throws InstantiationException , IllegalAccessException { 34 AspectRepository aspectRepository = new AspectRepository(); 35 36 { 38 InterceptorDefinition interceptorDefinition = new InterceptorDefinition(MockInterceptor.class); 39 aspectRepository.defineInterceptor(interceptorDefinition); 40 41 assertSame(interceptorDefinition, aspectRepository.getInterceptor(MockInterceptor.class)); 42 } 43 44 { 45 InterceptorDefinition interceptorDefinition = new InterceptorDefinition(NullInterceptor.class); 46 aspectRepository.defineInterceptor(interceptorDefinition); 47 48 assertSame(interceptorDefinition, aspectRepository.getInterceptor(NullInterceptor.class)); 49 } 50 51 { 52 AspectDefinition aspectDefinition = new AspectDefinition(); 53 aspectDefinition.setInterface(TestMixin.class); 54 aspectDefinition.addInterceptor(aspectRepository.getInterceptor(MockInterceptor.class)); 55 aspectDefinition.addInterceptor(aspectRepository.getInterceptor(NullInterceptor.class)); 56 aspectDefinition.setTarget(TestMixinImpl.class); 57 aspectRepository.defineAspect(aspectDefinition); 58 59 assertSame(aspectDefinition, aspectRepository.getAspect(TestMixin.class)); 60 } 61 62 { 63 AspectClass aspectClass = new AspectClass(); 64 aspectClass.setInterface(Intf.class); 65 aspectClass.addInterceptor(aspectRepository.getInterceptor(MockInterceptor.class)); 66 aspectClass.addInterceptor(aspectRepository.getInterceptor(NullInterceptor.class)); 67 aspectClass.setTarget(IntfImpl.class); 68 aspectClass.addAspect(aspectRepository.getAspect(TestMixin.class)); 69 aspectRepository.defineClass(aspectClass); 70 71 assertSame(aspectClass, aspectRepository.getClass(Intf.class)); 72 } 73 74 Intf intf = (Intf) aspectRepository.newInstance(Intf.class); 75 intf.call(); 76 } 77 78 public void testConfigure() throws NoSuchMethodException , ConfigureException { 79 AspectRepository aspectRepository = new AspectRepository(); 80 java.net.URL resource = AspectRepositoryTest.class.getResource("aspect-repository-test.xml"); 81 aspectRepository.configure(resource); 82 83 Object bigMomma = aspectRepository.newInstance(Intf.class); 85 AspectClassTest.verifySideAspect(bigMomma); 86 } 87 } 88
| Popular Tags
|