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 |
| package com.jeantessier.classreader; |
34 |
| |
35 |
| import java.io.*; |
36 |
| import java.util.*; |
37 |
| |
38 |
| import junit.framework.*; |
39 |
| |
40 |
| public class TestEnum extends TestCase { |
41 |
| public static final String TEST_CLASS = "test"; |
42 |
| public static final String TEST_ENUM_CLASS = "testenum"; |
43 |
| public static final String TEST_ENUM_VALUE1_CLASS = "testenum$1"; |
44 |
| public static final String TEST_ENUM_VALUE2_CLASS = "testenum$2"; |
45 |
| public static final String TEST_FILENAME = "classes" + File.separator + TEST_CLASS + ".class"; |
46 |
| public static final String TEST_ENUM_FILENAME = "classes" + File.separator + TEST_ENUM_CLASS + ".class"; |
47 |
| public static final String TEST_ENUM_VALUE1_FILENAME = "classes" + File.separator + TEST_ENUM_VALUE1_CLASS + ".class"; |
48 |
| public static final String TEST_ENUM_VALUE2_FILENAME = "classes" + File.separator + TEST_ENUM_VALUE2_CLASS + ".class"; |
49 |
| |
50 |
| private ClassfileLoader loader; |
51 |
| |
52 |
3
| protected void setUp() throws Exception {
|
53 |
3
| super.setUp();
|
54 |
| |
55 |
3
| loader = new AggregatingClassfileLoader();
|
56 |
| |
57 |
3
| loader.load(Collections.singleton(TEST_FILENAME));
|
58 |
3
| loader.load(Collections.singleton(TEST_ENUM_FILENAME));
|
59 |
3
| loader.load(Collections.singleton(TEST_ENUM_VALUE1_FILENAME));
|
60 |
3
| loader.load(Collections.singleton(TEST_ENUM_VALUE2_FILENAME));
|
61 |
| } |
62 |
| |
63 |
1
| public void testClassfileIsEnum() {
|
64 |
1
| assertTrue(TEST_CLASS, !loader.getClassfile(TEST_CLASS).isEnum());
|
65 |
1
| assertTrue(TEST_ENUM_CLASS, loader.getClassfile(TEST_ENUM_CLASS).isEnum());
|
66 |
1
| assertTrue("testenum.VALUE1", loader.getClassfile(TEST_ENUM_VALUE1_CLASS).isEnum());
|
67 |
1
| assertTrue("testenum.VALUE2", loader.getClassfile(TEST_ENUM_VALUE2_CLASS).isEnum());
|
68 |
| } |
69 |
| |
70 |
1
| public void testFieldIsEnum() {
|
71 |
1
| Classfile testenum = loader.getClassfile(TEST_ENUM_CLASS);
|
72 |
| |
73 |
1
| assertTrue(TEST_ENUM_CLASS + ".$VALUES", !testenum.getField("$VALUES").isEnum());
|
74 |
1
| assertTrue(TEST_ENUM_CLASS + ".VALUE1", testenum.getField("VALUE1").isEnum());
|
75 |
| } |
76 |
| |
77 |
1
| public void testInnerClassIsEnum() {
|
78 |
1
| Classfile testenum = loader.getClassfile(TEST_ENUM_CLASS);
|
79 |
| |
80 |
1
| boolean found = false;
|
81 |
1
| for (Attribute_info attribute : testenum.getAttributes()) {
|
82 |
3
| if (attribute instanceof InnerClasses_attribute) {
|
83 |
1
| found = true;
|
84 |
1
| for (InnerClass innerClass : ((InnerClasses_attribute) attribute).getInnerClasses()) {
|
85 |
1
| assertTrue(innerClass.getInnerClassInfo(), innerClass.isEnum());
|
86 |
| } |
87 |
| } |
88 |
| } |
89 |
| |
90 |
0
| assertTrue("Did not find any InnerClass structures in " + TEST_ENUM_CLASS, found);
|
91 |
| } |
92 |
| } |