aboutsummaryrefslogtreecommitdiff
path: root/src/test/javassist/tools/reflect/LoaderTest.java
blob: f96feb7bb6009174dfd3da49a32bbde44033ac87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package javassist.tools.reflect;

import javassist.*;
import junit.framework.*;

public class LoaderTest extends TestCase {
    private Loader loader;

    public LoaderTest(String name) {
         super(name);
    }

    public void setUp() throws Exception {
        loader = new Loader();
    }

    public void testAttemptReflectInterface() throws Exception {
        try {
            loader.makeReflective("javassist.ClassPath",
                                  "javassist.tools.reflect.Metaobject",
                                  "javassist.tools.reflect.ClassMetaobject");
            fail("Attempting to reflect an interface should throw a CannotReflectException");
        } catch (CannotReflectException e) {
            // expected
        }
    }

    public void testAttemptReflectClassMetaobject() throws Exception {
        try {
            loader.makeReflective("javassist.tools.reflect.ClassMetaobject",
                                  "javassist.tools.reflect.Metaobject",
                                  "javassist.tools.reflect.ClassMetaobject");
            fail("Attempting to reflect a ClassMetaobject should throw a CannotReflectException");
        } catch (CannotReflectException e) {
            // expected
        }
    }

    public void testAttemptReflectMetaobject() throws Exception {
        try {
            loader.makeReflective("javassist.tools.reflect.Metaobject",
                                  "javassist.tools.reflect.Metaobject",
                                  "javassist.tools.reflect.ClassMetaobject");
            fail("Attempting to reflect a Metaobject should throw a CannotReflectException");
        } catch (CannotReflectException e) {
            // expected
        }
    }

    public void testFinalMethod() throws Throwable {
        loader.makeReflective("javassist.tools.reflect.SuperClass",
                              "javassist.tools.reflect.Metaobject",
                              "javassist.tools.reflect.ClassMetaobject");

        ClassPool cp = ClassPool.getDefault();

        CtClass cc2 = cp.get("javassist.tools.reflect.SuperClass");
        cc2.debugWriteFile("reflected/");

        CtClass cc = cp.get("javassist.tools.reflect.SubClass");

        CtMethod[] ms = cc.getMethods();
        for (int i = 0; i < ms.length; ++i)
            System.out.println(ms[i] + " in "
                               + ms[i].getDeclaringClass().getName());

        loader.makeReflective("javassist.tools.reflect.SubClass",
                              "javassist.tools.reflect.Metaobject",
                              "javassist.tools.reflect.ClassMetaobject");

        loader.run("javassist.tools.reflect.SubClass", new String[] {});
    }
}