1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.beanutils;
18
19 import java.beans.PropertyDescriptor;
20 import java.lang.reflect.Method;
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import junit.framework.TestCase;
25
26
27
28
29
30
31 public class BeanIntrospectionDataTestCase extends TestCase {
32
33 private static final Class<?> BEAN_CLASS = FluentIntrospectionTestBean.class;
34
35
36 private static final String TEST_PROP = "fluentGetProperty";
37
38
39
40
41
42
43 private static PropertyDescriptor[] fetchDescriptors() {
44 final PropertyUtilsBean pub = new PropertyUtilsBean();
45 pub.removeBeanIntrospector(SuppressPropertiesBeanIntrospector.SUPPRESS_CLASS);
46 pub.addBeanIntrospector(new FluentPropertyBeanIntrospector());
47 return pub.getPropertyDescriptors(BEAN_CLASS);
48 }
49
50
51
52
53
54
55 private static BeanIntrospectionData setUpData() {
56 return new BeanIntrospectionData(fetchDescriptors());
57 }
58
59
60
61
62
63
64
65 private static PropertyDescriptor fetchTestDescriptor(final BeanIntrospectionData bid) {
66 return bid.getDescriptor(TEST_PROP);
67 }
68
69
70
71
72 public void testGetWriteMethodDefined() {
73 final BeanIntrospectionData data = setUpData();
74 final PropertyDescriptor pd = fetchTestDescriptor(data);
75 assertNotNull("No write method", pd.getWriteMethod());
76 assertEquals("Wrong write method", pd.getWriteMethod(),
77 data.getWriteMethod(BEAN_CLASS, pd));
78 }
79
80
81
82
83
84 public void testGetWriteMethodUndefined() throws Exception {
85 final BeanIntrospectionData data = setUpData();
86 final PropertyDescriptor pd = fetchTestDescriptor(data);
87 final Method writeMethod = pd.getWriteMethod();
88 pd.setWriteMethod(null);
89 assertEquals("Wrong write method", writeMethod,
90 data.getWriteMethod(BEAN_CLASS, pd));
91 assertEquals("Method not set in descriptor", writeMethod, pd.getWriteMethod());
92 }
93
94
95
96
97
98 public void testGetWriteMethodNonExisting() throws Exception {
99 final PropertyDescriptor pd = new PropertyDescriptor(TEST_PROP,
100 BEAN_CLASS.getMethod("getFluentGetProperty"), BEAN_CLASS.getMethod(
101 "setFluentGetProperty", String.class));
102 final Map<String, String> methods = new HashMap<String, String>();
103 methods.put(TEST_PROP, "hashCode");
104 final BeanIntrospectionData data = new BeanIntrospectionData(
105 new PropertyDescriptor[] { pd }, methods);
106 pd.setWriteMethod(null);
107 assertNull("Got a write method", data.getWriteMethod(BEAN_CLASS, pd));
108 }
109
110
111
112
113 public void testGetWriteMethodUnknown() {
114 final BeanIntrospectionData data = setUpData();
115 final PropertyDescriptor pd = data.getDescriptor("class");
116 assertNull("Got a write method", data.getWriteMethod(BEAN_CLASS, pd));
117 }
118 }