001 package org.springframework.richclient.util;
002
003 import java.lang.reflect.Method;
004 import java.util.HashMap;
005 import java.util.Map;
006
007 import junit.framework.TestCase;
008
009 /**
010 * Test case for {@link ClassUtils}
011 */
012 public class ClassUtilsTests extends TestCase {
013
014 interface A {
015
016 public void setSomething(String newSomething);
017 }
018
019 interface B {
020
021 public String getSomething();
022 }
023
024 interface C extends A {
025 }
026
027 static class D implements B, C {
028
029 public static final String VALUE1 = "value1";
030
031 public static final Integer VALUE2 = new Integer(5);
032
033 private String something;
034
035 public String getSomething() {
036 return something;
037 }
038
039 public void setSomething(String something) {
040 this.something = something;
041 }
042
043 public static void staticMethod() {
044 }
045 }
046
047 static class E extends D {
048
049 private D deProperty;
050
051 public D getDeProperty() {
052 return deProperty;
053 }
054
055 public void setDeProperty(D deProperty) {
056 this.deProperty = deProperty;
057 }
058 }
059
060 public void testGetFieldValue() {
061 assertNull(ClassUtils.getFieldValue("no.such.class.Exists.someField"));
062
063 assertEquals("value1", ClassUtils.getFieldValue("org.springframework.richclient.util.ClassUtilsTests$D.VALUE1"));
064 }
065
066 static class F {
067
068 private E eeProperty;
069
070 public E getEeProperty() {
071 return eeProperty;
072 }
073
074 public void setEeProperty(E eeProperty) {
075 this.eeProperty = eeProperty;
076 }
077 }
078
079 public void testGetPropertyClass() throws Exception {
080 assertEquals(String.class, ClassUtils.getPropertyClass(B.class, "something"));
081
082 assertEquals(D.class, ClassUtils.getPropertyClass(F.class, "eeProperty.deProperty"));
083 }
084
085 public void testGetValueFromMapForClass() throws Exception {
086 Object val;
087 Map map = new HashMap();
088
089 map.put(Number.class, "Number");
090
091 val = ClassUtils.getValueFromMapForClass(Long.class, map);
092 assertNotNull(val);
093 assertEquals("Number", val);
094
095 map.put(A.class, "A");
096 val = ClassUtils.getValueFromMapForClass(B.class, map);
097 assertNull(val);
098
099 val = ClassUtils.getValueFromMapForClass(E.class, map);
100 assertNotNull(val);
101 assertEquals("A", val);
102
103 val = ClassUtils.getValueFromMapForClass(C.class, map);
104 assertNotNull(val);
105 assertEquals("A", val);
106 }
107
108 public void testIsAProperty() throws Exception {
109 assertTrue(ClassUtils.isAProperty(B.class, "something"));
110 assertTrue(ClassUtils.isAProperty(E.class, "something"));
111 assertTrue(ClassUtils.isAProperty(A.class, "something"));
112 assertTrue(ClassUtils.isAProperty(F.class, "eeProperty.deProperty"));
113 }
114
115 public void testQualifier() {
116 assertEquals("org.springframework.richclient.util.ClassUtilsTests", ClassUtils
117 .qualifier("org.springframework.richclient.util.ClassUtilsTests.property"));
118 assertEquals("java.lang", ClassUtils.qualifier("java.lang.String"));
119 assertEquals("", ClassUtils.qualifier(""));
120 assertEquals("", ClassUtils.qualifier("test"));
121 }
122
123 public void testFindMethod() {
124 Method method = ClassUtils.findMethod("getSomething", B.class, null);
125 assertNotNull(method);
126
127 assertNull(ClassUtils.findMethod("noSuchMethod", B.class, null));
128 }
129
130 public void testGetStaticMethod() {
131 assertNull(ClassUtils.getStaticMethod("getSomething", D.class, null));
132
133 assertNotNull(ClassUtils.getStaticMethod("staticMethod", D.class, null));
134 assertEquals("staticMethod", ClassUtils.getStaticMethod("staticMethod", D.class, null).getName());
135 }
136
137 public void testGetClassFieldNameWithValue() {
138 assertEquals("org.springframework.richclient.util.ClassUtilsTests$D.VALUE1", ClassUtils
139 .getClassFieldNameWithValue(D.class, "value1"));
140 assertEquals("org.springframework.richclient.util.ClassUtilsTests$D.VALUE2", ClassUtils
141 .getClassFieldNameWithValue(D.class, new Integer(5)));
142
143 assertNull(ClassUtils.getClassFieldNameWithValue(D.class, "noSuchFieldWithValue"));
144 }
145
146 public void testUnqualify() {
147 assertEquals("ClassUtilsTests", ClassUtils.unqualify("org.springframework.richclient.util.ClassUtilsTests"));
148 assertEquals("ClassUtilsTests", ClassUtils.unqualify(ClassUtilsTests.class));
149 assertEquals("ClassUtilsTests", ClassUtils
150 .unqualify("org/springframework/richclient/util/ClassUtilsTests", '/'));
151 }
152
153 }