1 package org.springframework.richclient.util;
2
3 import java.lang.reflect.Method;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 import junit.framework.TestCase;
8
9
10
11
12 public class ClassUtilsTests extends TestCase {
13
14 interface A {
15
16 public void setSomething(String newSomething);
17 }
18
19 interface B {
20
21 public String getSomething();
22 }
23
24 interface C extends A {
25 }
26
27 static class D implements B, C {
28
29 public static final String VALUE1 = "value1";
30
31 public static final Integer VALUE2 = new Integer(5);
32
33 private String something;
34
35 public String getSomething() {
36 return something;
37 }
38
39 public void setSomething(String something) {
40 this.something = something;
41 }
42
43 public static void staticMethod() {
44 }
45 }
46
47 static class E extends D {
48
49 private D deProperty;
50
51 public D getDeProperty() {
52 return deProperty;
53 }
54
55 public void setDeProperty(D deProperty) {
56 this.deProperty = deProperty;
57 }
58 }
59
60 public void testGetFieldValue() {
61 assertNull(ClassUtils.getFieldValue("no.such.class.Exists.someField"));
62
63 assertEquals("value1", ClassUtils.getFieldValue("org.springframework.richclient.util.ClassUtilsTests$D.VALUE1"));
64 }
65
66 static class F {
67
68 private E eeProperty;
69
70 public E getEeProperty() {
71 return eeProperty;
72 }
73
74 public void setEeProperty(E eeProperty) {
75 this.eeProperty = eeProperty;
76 }
77 }
78
79 public void testGetPropertyClass() throws Exception {
80 assertEquals(String.class, ClassUtils.getPropertyClass(B.class, "something"));
81
82 assertEquals(D.class, ClassUtils.getPropertyClass(F.class, "eeProperty.deProperty"));
83 }
84
85 public void testGetValueFromMapForClass() throws Exception {
86 Object val;
87 Map map = new HashMap();
88
89 map.put(Number.class, "Number");
90
91 val = ClassUtils.getValueFromMapForClass(Long.class, map);
92 assertNotNull(val);
93 assertEquals("Number", val);
94
95 map.put(A.class, "A");
96 val = ClassUtils.getValueFromMapForClass(B.class, map);
97 assertNull(val);
98
99 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 }