1 7 package com.tirsen.nanning.attribute; 8 9 import java.io.IOException ; 10 import java.lang.reflect.Field ; 11 import java.lang.reflect.Method ; 12 13 21 public class AttributesTest extends AbstractAttributesTest { 22 public static final String CLASS_ATTRIBUTE = "class.attribute"; 23 public static final String FIELD_ATTRIBUTE = "field.attribute"; 24 public static final String FIELD_VALUE = "fieldValue"; 25 public static final String METHOD_ATTRIBUTE = "method.attribute"; 26 27 public static final Method method; 28 public static final Field field; 29 public static final Method argMethod; 30 public static final Method arrayArgMethod; 31 public static final Method overridingMethod; 32 public static final Field innerField; 33 34 public static final String METHOD_VALUE = "methodValue"; 35 public static final String INNER_ATTRIBUTE = "inner.attribute"; 36 public static final String INNER_FIELD_ATTRIBUTE = "inner.field.attribute"; 37 public static final String INNER_VALUE = "innerValue"; 38 public static final String INNER_FIELD_VALUE = "innerFieldValue"; 39 40 static { 41 try { 42 method = AttributesTestClass.class.getMethod("method", null); 43 overridingMethod = AttributesTestSubClass.class.getMethod("method", null); 44 45 field = AttributesTestClass.class.getDeclaredField("field"); 46 argMethod = AttributesTestClass.class.getMethod("method", new Class []{String .class, String .class}); 47 arrayArgMethod = AttributesTestClass.class.getMethod("method", new Class []{String [].class}); 48 49 innerField = AttributesTestClass.InnerClass.class.getDeclaredField("innerField"); 50 } catch (Exception e) { 51 throw new Error ("Could not reflect AttributesTestClass", e); 52 } 53 } 54 55 public void testClassAttributes() throws IOException , NoSuchMethodException , NoSuchFieldException { 56 ClassAttributes classAttributes = Attributes.getAttributes(AttributesTestClass.class); 57 assertEquals("classValue", classAttributes.getAttribute(CLASS_ATTRIBUTE)); 58 assertTrue(classAttributes.hasAttribute("class.attribute")); 59 assertFalse(classAttributes.hasAttribute("stupid.attribute")); 60 61 assertEquals(FIELD_VALUE, classAttributes.getAttribute(field, FIELD_ATTRIBUTE)); 62 assertTrue(classAttributes.hasAttribute(field, "field.attribute")); 63 assertFalse(classAttributes.hasAttribute(field, "stupid.attribute")); 64 65 assertEquals(METHOD_VALUE, classAttributes.getAttribute(method, METHOD_ATTRIBUTE)); 66 assertTrue(classAttributes.hasAttribute(method, METHOD_ATTRIBUTE)); 67 assertFalse(classAttributes.hasAttribute(method, "stupid.attribute")); 68 69 assertEquals("argMethodValue", classAttributes.getAttribute(argMethod, METHOD_ATTRIBUTE)); 70 assertTrue(classAttributes.hasAttribute(argMethod, METHOD_ATTRIBUTE)); 71 assertFalse(classAttributes.hasAttribute(argMethod, "stupid.attribute")); 72 73 assertTrue(classAttributes.hasAttribute(arrayArgMethod, METHOD_ATTRIBUTE)); 74 assertFalse(classAttributes.hasAttribute(arrayArgMethod, "stupid.attribute")); 75 assertEquals("arrayArgMethodValue", classAttributes.getAttribute(arrayArgMethod, METHOD_ATTRIBUTE)); 76 } 77 78 public void testInnerClassAttributes() { 79 ClassAttributes classAttributes = Attributes.getAttributes(AttributesTestClass.InnerClass.class); 80 assertTrue(classAttributes.hasAttribute(INNER_ATTRIBUTE)); 81 assertFalse(classAttributes.hasAttribute("stupid.attribute")); 82 assertEquals(INNER_VALUE, classAttributes.getAttribute(INNER_ATTRIBUTE)); 83 84 assertTrue(classAttributes.hasAttribute(innerField, INNER_FIELD_ATTRIBUTE)); 85 assertFalse(classAttributes.hasAttribute(innerField, "stupid.attribute")); 86 assertEquals(INNER_FIELD_VALUE, classAttributes.getAttribute(innerField, INNER_FIELD_ATTRIBUTE)); 87 } 88 89 public void testAttributes() throws IOException , NoSuchMethodException , NoSuchFieldException { 90 assertEquals("classValue", Attributes.getAttribute(AttributesTestClass.class, CLASS_ATTRIBUTE)); 92 assertFalse(Attributes.hasAttribute(AttributesTestClass.class, "stupid.attribute")); 93 Field field = AttributesTestClass.class.getDeclaredField("field"); 94 assertEquals(FIELD_VALUE, Attributes.getAttribute(field, FIELD_ATTRIBUTE)); 95 assertFalse(Attributes.hasAttribute(field, "stupid.attribute")); 96 Method method = AttributesTestClass.class.getMethod("method", null); 97 assertEquals(METHOD_VALUE, Attributes.getAttribute(method, METHOD_ATTRIBUTE)); 98 assertFalse(Attributes.hasAttribute(method, "stupid.attribute")); 99 Method argMethod = AttributesTestClass.class.getMethod("method", new Class []{String .class, String .class}); 100 assertEquals("argMethodValue", Attributes.getAttribute(argMethod, METHOD_ATTRIBUTE)); 101 assertFalse(Attributes.hasAttribute(argMethod, "stupid.attribute")); 102 103 104 assertEquals("classValue", Attributes.getAttribute(School.class, "classAttrib")); 107 assertFalse(Attributes.hasAttribute(School.class, "stupidAttribute")); 108 Field xmlfield = School.class.getDeclaredField("name"); 109 assertEquals(FIELD_VALUE, Attributes.getAttribute(xmlfield, "fieldAttrib")); 110 assertFalse(Attributes.hasAttribute(xmlfield, "stupidAttribute")); 111 Method xmlMethod = School.class.getMethod("sackAllTeachers", null); 112 assertEquals("false", Attributes.getAttribute(xmlMethod, "secure")); 113 assertFalse(Attributes.hasAttribute(xmlMethod, "stupidAttribute")); 114 Method xmlArgMethod = School.class.getMethod("setName", new Class []{String .class}); 115 assertEquals(METHOD_VALUE, Attributes.getAttribute(xmlArgMethod, "methodAttrib")); 116 assertFalse(Attributes.hasAttribute(xmlArgMethod, "stupidAttribute")); 117 118 assertEquals("true", Attributes.getAttribute(Job.class, "persistant")); 120 assertEquals("required", Attributes.getAttribute(Job.class, "transaction")); 121 assertEquals("true", Attributes.getAttribute(Job.class, "secure")); 122 123 Field descfield = Job.class.getDeclaredField("description"); 124 assertEquals("true", Attributes.getAttribute(descfield, "persistant")); 125 assertEquals("true", Attributes.getAttribute(descfield, "transient")); 126 assertFalse(Attributes.hasAttribute(descfield, "transaction")); 127 128 Method hireMethod = Job.class.getMethod("hireEmployee", new Class []{String .class, Employee.class}); 129 assertEquals("great", Attributes.getAttribute(hireMethod, "nanning")); 130 assertEquals("false", Attributes.getAttribute(hireMethod, "secure")); 131 assertFalse(Attributes.hasAttribute(hireMethod, "transient")); 132 assertTrue(Attributes.hasAttribute(hireMethod, "nanning")); 133 134 Method fireMethod = Job.class.getMethod("fireAllEmployees", null); 135 assertEquals("true", Attributes.getAttribute(fireMethod, "secure")); 136 } 137 138 public void testHasInheritedAttribute() { 139 assertTrue(Attributes.hasInheritedAttribute(method, METHOD_ATTRIBUTE)); 140 assertFalse(Attributes.hasInheritedAttribute(method, "stupid.attribute")); 141 142 assertTrue(Attributes.hasInheritedAttribute(overridingMethod, METHOD_ATTRIBUTE)); 143 assertFalse(Attributes.hasInheritedAttribute(overridingMethod, "stupid.attribute")); 144 145 assertTrue(Attributes.hasInheritedAttribute(overridingMethod, "interface.attribute")); 146 } 147 } 148
| Popular Tags
|