1
2
3
4
5
6
7
8 package org.codehaus.metaclass.introspector;
9
10 import junit.framework.TestCase;
11 import org.codehaus.metaclass.model.Attribute;
12 import org.codehaus.metaclass.model.ClassDescriptor;
13 import org.codehaus.metaclass.model.FieldDescriptor;
14 import org.codehaus.metaclass.model.MethodDescriptor;
15
16 /***
17 * @author Peter Donald
18 * @version $Revision: 1.6 $ $Date: 2003/11/28 11:14:54 $
19 */
20 public class CachingMetaClassAccessorTestCase
21 extends TestCase
22 {
23 public void testNullClassnamePassedToGetClassDescriptor()
24 throws Exception
25 {
26 final CachingMetaClassAccessor accessor = new CachingMetaClassAccessor();
27 try
28 {
29 accessor.getClassDescriptor( null,
30 getClass().getClassLoader(),
31 accessor );
32 }
33 catch( final NullPointerException npe )
34 {
35 assertEquals( "npe.getMessage()", "classname", npe.getMessage() );
36 return;
37 }
38 fail(
39 "Expected to fail due to null Classname passed into GetClassDescriptor" );
40 }
41
42 public void testNullClassLoaderPassedToGetClassDescriptor()
43 throws Exception
44 {
45 final CachingMetaClassAccessor accessor = new CachingMetaClassAccessor();
46 try
47 {
48 accessor.getClassDescriptor( "X", null, accessor );
49 }
50 catch( final NullPointerException npe )
51 {
52 assertEquals( "npe.getMessage()",
53 "classLoader",
54 npe.getMessage() );
55 return;
56 }
57 fail(
58 "Expected to fail due to null ClassLoader passed into GetClassDescriptor" );
59 }
60
61 public void testGetNonExistent()
62 throws Exception
63 {
64 final CachingMetaClassAccessor accessor = new CachingMetaClassAccessor();
65 try
66 {
67 accessor.getClassDescriptor( "NoExist",
68 getClass().getClassLoader(),
69 null );
70 }
71 catch( final MetaClassException mce )
72 {
73 assertEquals( "mce.getMessage()",
74 "Missing Attributes for NoExist",
75 mce.getMessage() );
76 return;
77 }
78 fail( "Expected to fail to get non-existent descriptor" );
79 }
80
81 public void testGetExistent()
82 throws Exception
83 {
84 final CachingMetaClassAccessor accessor = new CachingMetaClassAccessor();
85 final ClassDescriptor descriptor =
86 new ClassDescriptor( "MyClass",
87 Attribute.EMPTY_SET,
88 Attribute.EMPTY_SET,
89 FieldDescriptor.EMPTY_SET,
90 MethodDescriptor.EMPTY_SET );
91 final ClassLoader classLoader = getClass().getClassLoader();
92 accessor.registerDescriptor( descriptor, classLoader );
93 final ClassDescriptor result = accessor.getClassDescriptor( "MyClass",
94 classLoader,
95 null );
96 assertEquals( "descriptor", descriptor, result );
97 }
98
99 public void testGetExistentThenClear()
100 throws Exception
101 {
102 final CachingMetaClassAccessor accessor = new CachingMetaClassAccessor();
103 final ClassDescriptor descriptor =
104 new ClassDescriptor( "MyClass",
105 Attribute.EMPTY_SET,
106 Attribute.EMPTY_SET,
107 FieldDescriptor.EMPTY_SET,
108 MethodDescriptor.EMPTY_SET );
109 final ClassLoader classLoader = getClass().getClassLoader();
110 accessor.registerDescriptor( descriptor, classLoader );
111 final ClassDescriptor result = accessor.getClassDescriptor( "MyClass",
112 classLoader,
113 null );
114 assertEquals( "descriptor", descriptor, result );
115
116 try
117 {
118 accessor.getClassDescriptor( "MyClass", classLoader, null );
119 }
120 catch( final MetaClassException mce )
121 {
122 assertEquals( "mce.getMessage()",
123 "Missing Attributes for MyClass",
124 mce.getMessage() );
125 return;
126 }
127 }
128
129 public void testRegisterMultipleInSameClassLoader()
130 throws Exception
131 {
132 final CachingMetaClassAccessor accessor = new CachingMetaClassAccessor();
133 final ClassDescriptor descriptor1 =
134 new ClassDescriptor( "MyClass",
135 Attribute.EMPTY_SET,
136 Attribute.EMPTY_SET,
137 FieldDescriptor.EMPTY_SET,
138 MethodDescriptor.EMPTY_SET );
139 final ClassDescriptor descriptor2 =
140 new ClassDescriptor( "MyClass2",
141 Attribute.EMPTY_SET,
142 Attribute.EMPTY_SET,
143 FieldDescriptor.EMPTY_SET,
144 MethodDescriptor.EMPTY_SET );
145 final ClassLoader classLoader = getClass().getClassLoader();
146 accessor.registerDescriptor( descriptor1, classLoader );
147 accessor.registerDescriptor( descriptor2, classLoader );
148 final ClassDescriptor result1 =
149 accessor.getClassDescriptor( "MyClass", classLoader, null );
150 assertEquals( "descriptor1", descriptor1, result1 );
151 final ClassDescriptor result2 =
152 accessor.getClassDescriptor( "MyClass2", classLoader, null );
153 assertEquals( "descriptor2", descriptor2, result2 );
154 }
155
156 public void testNullDescriptorPassedToRegisterDescriptor()
157 throws Exception
158 {
159 final CachingMetaClassAccessor accessor = new CachingMetaClassAccessor();
160 try
161 {
162 accessor.registerDescriptor( null, getClass().getClassLoader() );
163 }
164 catch( final NullPointerException npe )
165 {
166 assertEquals( "npe.getMessage()", "descriptor", npe.getMessage() );
167 return;
168 }
169 fail(
170 "Expected to fail due to null Descriptor passed into RegisterDescriptor" );
171 }
172
173 public void testNullClassLoaderPassedToRegisterDescriptor()
174 throws Exception
175 {
176 final ClassDescriptor descriptor =
177 new ClassDescriptor( "MyClass2",
178 Attribute.EMPTY_SET,
179 Attribute.EMPTY_SET,
180 FieldDescriptor.EMPTY_SET,
181 MethodDescriptor.EMPTY_SET );
182 final CachingMetaClassAccessor accessor = new CachingMetaClassAccessor();
183 try
184 {
185 accessor.registerDescriptor( descriptor, null );
186 }
187 catch( final NullPointerException npe )
188 {
189 assertEquals( "npe.getMessage()",
190 "classLoader",
191 npe.getMessage() );
192 return;
193 }
194 fail(
195 "Expected to fail due to null classLoader passed into RegisterDescriptor" );
196 }
197 }