1 package dynaop; 2 3 import java.io.IOException ; 4 import java.io.Serializable ; 5 import java.lang.reflect.Method ; 6 import java.util.ArrayList ; 7 import java.util.List ; 8 9 import dynaop.util.Classes; 10 11 import junit.framework.TestCase; 12 13 18 public class PointcutsTest extends TestCase { 19 20 static ClassPointcut ALL_CLASSES = Pointcuts.ALL_CLASSES; 21 static ClassPointcut NO_CLASSES = Pointcuts.not(ALL_CLASSES); 22 static MethodPointcut ALL_METHODS = Pointcuts.ALL_METHODS; 23 static MethodPointcut NO_METHODS = Pointcuts.not(ALL_METHODS); 24 25 public void testPackageName() { 26 assertTrue(Pointcuts.packageName("java.util").picks(ArrayList .class)); 27 assertTrue(Pointcuts.packageName("java.lang").picks(String .class)); 28 } 29 30 public void testAllClasses() { 31 assertTrue(ALL_CLASSES.picks(getClass())); 32 assertTrue(ALL_CLASSES.picks(Object .class)); 33 assertTrue(ALL_CLASSES.picks(Serializable .class)); 34 } 35 36 public void testMembersOf() throws Exception { 37 Method size = A.class.getMethod("size", null); 38 assertTrue(Pointcuts.membersOf(List .class).picks(size)); 39 assertFalse(Pointcuts.membersOf(Object .class).picks(size)); 40 } 41 42 public void testClassName() throws Exception { 43 assertTrue(Pointcuts.className("java\\.lang\\..*"). 44 picks(Object .class)); 45 assertTrue(Pointcuts.className(".*Pointcuts.*"). 46 picks(getClass())); 47 assertFalse(Pointcuts.className("java\\.lang\\..*"). 48 picks(getClass())); 49 } 50 51 public void testInstanceOf() { 52 assertTrue(Pointcuts.instancesOf(List .class).picks( 53 ArrayList .class)); 54 assertFalse(Pointcuts.instancesOf(ArrayList .class).picks( 55 List .class)); 56 } 57 58 public void testClassSingleton() { 59 assertTrue(Pointcuts.singleton(List .class).picks( 60 List .class)); 61 assertFalse(Pointcuts.singleton(ArrayList .class).picks( 62 List .class)); 63 } 64 65 public void testClassIntersection() { 66 assertTrue(Pointcuts.intersection(ALL_CLASSES, ALL_CLASSES).picks(null)); 67 assertFalse(Pointcuts.intersection(NO_CLASSES, ALL_CLASSES).picks(null)); 68 assertFalse(Pointcuts.intersection(NO_CLASSES, NO_CLASSES).picks(null)); 69 assertFalse(Pointcuts.intersection(ALL_CLASSES, NO_CLASSES).picks(null)); 70 } 71 72 public void testClassUnion() { 73 assertTrue(Pointcuts.union(ALL_CLASSES, ALL_CLASSES).picks(null)); 74 assertTrue(Pointcuts.union(NO_CLASSES, ALL_CLASSES).picks(null)); 75 assertFalse(Pointcuts.union(NO_CLASSES, NO_CLASSES).picks(null)); 76 assertTrue(Pointcuts.union(ALL_CLASSES, NO_CLASSES).picks(null)); 77 } 78 79 public void testPropertyMethodPointcuts() throws Throwable { 80 assertTrue(Pointcuts.GET_METHODS.picks( 81 A.class.getMethod("getBoolean", null))); 82 assertFalse(Pointcuts.GET_METHODS.picks( 83 A.class.getMethod("isBoolean", null))); 84 85 assertTrue(Pointcuts.IS_METHODS.picks( 86 A.class.getMethod("isBoolean", null))); 87 assertFalse(Pointcuts.IS_METHODS.picks( 88 A.class.getMethod("getBoolean", null))); 89 90 assertTrue(Pointcuts.SET_METHODS.picks( 91 A.class.getMethod("setBoolean", new Class [] { boolean.class }))); 92 assertFalse(Pointcuts.SET_METHODS.picks( 93 A.class.getMethod("issue", null))); 94 } 95 96 public void testMethodSignature() throws Throwable { 97 assertTrue(Pointcuts.signature(".*setBoolean.*").picks( 98 A.class.getMethod("setBoolean", new Class [] { boolean.class }))); 99 assertTrue(Pointcuts.signature("String\\ .*toString\\(\\)").picks( 100 Object .class.getMethod("toString", null))); 101 } 102 103 public void testMethodSingleton() throws Throwable { 104 assertTrue(Pointcuts.singleton(Classes.TOSTRING_METHOD).picks( 105 Classes.TOSTRING_METHOD)); 106 assertFalse(Pointcuts.singleton(Classes.TOSTRING_METHOD).picks( 107 Classes.HASHCODE_METHOD)); 108 } 109 110 public void testDeclaringClass() throws Throwable { 111 assertTrue(Pointcuts.declaringClass(ALL_CLASSES).picks( 112 Object .class.getMethod("hashCode", null))); 113 assertFalse(Pointcuts.declaringClass(NO_CLASSES).picks( 114 Object .class.getMethod("hashCode", null))); 115 } 116 117 public void testMethodIntersection() { 118 assertTrue(Pointcuts.intersection(ALL_METHODS, ALL_METHODS).picks(null)); 119 assertFalse(Pointcuts.intersection(NO_METHODS, ALL_METHODS).picks(null)); 120 assertFalse(Pointcuts.intersection(ALL_METHODS, NO_METHODS).picks(null)); 121 assertFalse(Pointcuts.intersection(NO_METHODS, NO_METHODS).picks(null)); 122 } 123 124 public void testMethodUnion() { 125 assertTrue(Pointcuts.union(ALL_METHODS, ALL_METHODS).picks(null)); 126 assertTrue(Pointcuts.union(NO_METHODS, ALL_METHODS).picks(null)); 127 assertTrue(Pointcuts.union(ALL_METHODS, NO_METHODS).picks(null)); 128 assertFalse(Pointcuts.union(NO_METHODS, NO_METHODS).picks(null)); 129 } 130 131 public void testMethodToString() throws Throwable { 132 assertEquals("String toString()", 133 Pointcuts.methodToString(Object .class.getMethod("toString", null))); 134 assertEquals("boolean getBoolean()", 135 Pointcuts.methodToString(A.class.getMethod("getBoolean", null))); 136 assertEquals("void setBoolean(boolean)", 137 Pointcuts.methodToString(A.class.getMethod("setBoolean", 138 new Class [] { boolean.class }))); 139 assertEquals("java.util.List doSomething(Object, " + 140 "String) throws java.io.IOException", 141 Pointcuts.methodToString(A.class.getMethod("doSomething", 142 new Class [] { Object .class, String .class }))); 143 } 144 145 public interface A { 146 boolean getBoolean(); 147 void setBoolean(boolean b); 148 Object getObject(); 149 void setObject(Object o); 150 boolean isBoolean(); 151 List doSomething(Object o, String s) throws IOException ; 152 void issue(); 153 int size(); 154 } 155 156 } 157 | Popular Tags |