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   * Test case for {@link ClassUtils}
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 }