1
2
3
4
5
6
7
8 package org.codehaus.metaclass.introspector;
9
10 import junit.framework.TestCase;
11 import org.codehaus.metaclass.io.MockClassLoader;
12 import org.codehaus.metaclass.model.ClassDescriptor;
13
14 /***
15 * @author Peter Donald
16 * @version $Revision: 1.5 $ $Date: 2003/11/28 11:14:54 $
17 */
18 public class DefaultMetaClassAccessorTestCase
19 extends TestCase
20 {
21 public void testLoadBinaryAttributesForClass()
22 throws Exception
23 {
24 final String name = "com.biz.MyClass";
25 final String location = "com/biz/MyClass-meta.binary";
26 final byte[] data = new byte[]
27 {
28 0, 0, 0, 2,
29 0, 15,
30 'c', 'o', 'm', '.', 'b', 'i', 'z', '.', 'M', 'y', 'C', 'l', 'a', 's', 's',
31 0, 0, 0, 0,
32 0, 0, 0, 0,
33 0, 0, 0, 0
34 };
35 final MockClassLoader classLoader = new MockClassLoader();
36 classLoader.bindResource( location, data );
37 final DefaultMetaClassAccessor accessor = new DefaultMetaClassAccessor();
38 final ClassDescriptor clazz = accessor.getClassDescriptor( name,
39 classLoader,
40 null );
41 assertEquals( "class.name", name, clazz.getName() );
42 assertEquals( "class.attributes.length",
43 0, clazz.getAttributes().length );
44 assertEquals( "class.methods.length",
45 0, clazz.getMethods().length );
46 assertEquals( "class.fields.length",
47 0, clazz.getFields().length );
48 }
49
50 public void testLoadXMLAttributesForAsClass()
51 throws Exception
52 {
53 final String name = "com.biz.MyClass";
54 final String location = "com/biz/MyClass-meta.xml";
55 final String xml =
56 "<class type=\"com.biz.MyClass\" version=\"1.0\"/>";
57 final byte[] data = xml.getBytes();
58 final MockClassLoader classLoader = new MockClassLoader();
59 classLoader.bindResource( location, data );
60 final DefaultMetaClassAccessor accessor = new DefaultMetaClassAccessor();
61 final ClassDescriptor clazz = accessor.getClassDescriptor( name,
62 classLoader,
63 null );
64 assertEquals( "class.name", name, clazz.getName() );
65 assertEquals( "class.attributes.length",
66 0, clazz.getAttributes().length );
67 assertEquals( "class.methods.length",
68 0, clazz.getMethods().length );
69 assertEquals( "class.fields.length",
70 0, clazz.getFields().length );
71 }
72
73 public void testMissingAttributesForClass()
74 throws Exception
75 {
76 final String name = "missing";
77 final MockClassLoader classLoader = new MockClassLoader();
78 final DefaultMetaClassAccessor accessor = new DefaultMetaClassAccessor();
79 try
80 {
81 accessor.getClassDescriptor( name, classLoader, null );
82 }
83 catch( MetaClassException e )
84 {
85 return;
86 }
87 fail(
88 "Expected to be unable to find attributes for non existent class" );
89 }
90
91 public void testBadAttributesForClass()
92 throws Exception
93 {
94 final String name = "com.biz.MyClass";
95 final String location = "com/biz/MyClass-meta.binary";
96 final byte[] data = new byte[]
97 {
98 1, 2, 3, 4
99 };
100 final MockClassLoader classLoader = new MockClassLoader();
101 classLoader.bindResource( location, data );
102 final DefaultMetaClassAccessor accessor = new DefaultMetaClassAccessor();
103 try
104 {
105 accessor.getClassDescriptor( name, classLoader, null );
106 }
107 catch( MetaClassException e )
108 {
109 return;
110 }
111 fail( "Expected to be unable to parse bad meta data" );
112 }
113 }