1
2
3
4
5
6
7
8 package org.codehaus.metaclass.io;
9
10 import java.io.ByteArrayOutputStream;
11 import junit.framework.TestCase;
12 import org.objectweb.asm.Attribute;
13 import org.codehaus.metaclass.model.ClassDescriptor;
14 import org.codehaus.metaclass.model.FieldDescriptor;
15 import org.codehaus.metaclass.model.MethodDescriptor;
16
17 /***
18 * @author Peter Donald
19 * @version $Revision: 1.1 $ $Date: 2003/12/11 08:41:51 $
20 */
21 public class ExtractMetaDataVisitorTestCase
22 extends TestCase
23 {
24 public void testVisitNonMatchingAttribute()
25 throws Exception
26 {
27 final ExtractMetaDataVisitor visitor = new ExtractMetaDataVisitor();
28 visitor.visitAttribute( new Attribute( "Foo" ) );
29 assertEquals( "descriptor", null, visitor.getClassDescriptor() );
30 assertEquals( "ioe", null, visitor.getIoe() );
31 }
32
33 public void testVisitMatchingAttributeWithInvalidMetaData()
34 throws Exception
35 {
36 final ExtractMetaDataVisitor visitor = new ExtractMetaDataVisitor();
37 final Attribute attr =
38 new Attribute( MetaClassIOASM.ATTRIBUTE_NAME,
39 new byte[ 0 ],
40 0,
41 0 );
42 visitor.visitAttribute( attr );
43 assertEquals( "descriptor", null, visitor.getClassDescriptor() );
44 assertNotNull( "ioe", visitor.getIoe() );
45 }
46
47 public void testVisitMatchingAttributeWithValidMetaData()
48 throws Exception
49 {
50 final org.codehaus.metaclass.model.Attribute[] a =
51 org.codehaus.metaclass.model.Attribute.EMPTY_SET;
52 final ClassDescriptor descriptor =
53 new ClassDescriptor( "X",
54 a,
55 a,
56 FieldDescriptor.EMPTY_SET,
57 MethodDescriptor.EMPTY_SET );
58 final ByteArrayOutputStream output = new ByteArrayOutputStream();
59 MetaClassIOBinary.IO.serializeClass( output, descriptor );
60 final byte[] bytes = output.toByteArray();
61
62 final ExtractMetaDataVisitor visitor = new ExtractMetaDataVisitor();
63 final Attribute attr =
64 new Attribute( MetaClassIOASM.ATTRIBUTE_NAME,
65 bytes,
66 0,
67 bytes.length );
68 visitor.visitAttribute( attr );
69 assertNotNull( "descriptor", visitor.getClassDescriptor() );
70 assertNull( "ioe", visitor.getIoe() );
71 }
72 }