1
2
3
4
5
6
7
8 package org.codehaus.metaclass.io;
9
10 import junit.framework.TestCase;
11 import org.jmock.C;
12 import org.jmock.Mock;
13 import org.objectweb.asm.Attribute;
14 import org.objectweb.asm.ClassVisitor;
15 import org.codehaus.metaclass.model.ClassDescriptor;
16 import org.codehaus.metaclass.model.FieldDescriptor;
17 import org.codehaus.metaclass.model.MethodDescriptor;
18
19 /***
20 * @author Peter Donald
21 * @version $Revision: 1.1 $ $Date: 2003/12/11 08:41:51 $
22 */
23 public class AddMetaDataAdapterTestCase
24 extends TestCase
25 {
26 public void testVisitMetaDataAttribute()
27 throws Exception
28 {
29 final Attribute attr = new Attribute( MetaClassIOASM.ATTRIBUTE_NAME );
30 final Mock m = new Mock( ClassVisitor.class );
31 final ClassVisitor visitor = (ClassVisitor)m.proxy();
32 final AddMetaDataAdapter adapter =
33 new AddMetaDataAdapter( visitor, null );
34 adapter.visitAttribute( attr );
35 m.verify();
36 }
37
38 public void testVisitNonMetaDataAttribute()
39 throws Exception
40 {
41 final Attribute attr = new Attribute( "Foo" );
42 final Mock m = new Mock( ClassVisitor.class );
43 m.expect( "visitAttribute", C.args( C.eq( attr ) ) );
44 final ClassVisitor visitor = (ClassVisitor)m.proxy();
45 final AddMetaDataAdapter adapter =
46 new AddMetaDataAdapter( visitor, null );
47 adapter.visitAttribute( attr );
48 m.verify();
49 }
50
51 public void testVisitClassAndAddMetaData()
52 throws Exception
53 {
54 final org.codehaus.metaclass.model.Attribute[] a =
55 org.codehaus.metaclass.model.Attribute.EMPTY_SET;
56 final ClassDescriptor descriptor =
57 new ClassDescriptor( "X",
58 a,
59 a,
60 FieldDescriptor.EMPTY_SET,
61 MethodDescriptor.EMPTY_SET );
62
63 final Mock m = new Mock( ClassVisitor.class );
64 m.expect( "visit", C.ANY_ARGS );
65 m.expect( "visitAttribute", C.args( C.IS_ANYTHING ) );
66 final ClassVisitor visitor = (ClassVisitor)m.proxy();
67
68 final AddMetaDataAdapter adapter =
69 new AddMetaDataAdapter( visitor, descriptor );
70 adapter.visit( 0, "X", "S", new String[ 0 ], "foo.java" );
71 m.verify();
72 }
73
74 public void testVisitClassAndAddInvalidMetaData()
75 throws Exception
76 {
77 final org.codehaus.metaclass.model.Attribute[] a =
78 org.codehaus.metaclass.model.Attribute.EMPTY_SET;
79 final ClassDescriptor descriptor =
80 new ClassDescriptor( "X",
81 a,
82 a,
83 FieldDescriptor.EMPTY_SET,
84 MethodDescriptor.EMPTY_SET );
85
86 final Mock m = new Mock( ClassVisitor.class );
87 m.expect( "visit", C.ANY_ARGS );
88 final ClassVisitor visitor = (ClassVisitor)m.proxy();
89
90 final AddMetaDataAdapter adapter =
91 new FailingAddMetaDataAdapter( visitor, descriptor );
92 adapter.visit( 0, "X", "S", new String[ 0 ], "foo.java" );
93 assertEquals( "ioe",
94 FailingAddMetaDataAdapter.IO_EXCEPTION,
95 adapter.getIoe() );
96 m.verify();
97 }
98 }