1 package serp.bytecode;
2
3 import junit.framework.*;
4 import junit.textui.*;
5
6
7
8
9
10
11 public class TestNameCache extends TestCase {
12 private NameCache _cache = null;
13
14 public TestNameCache(String test) {
15 super(test);
16 }
17
18 public void setUp() {
19 _cache = new Project().getNameCache();
20 }
21
22
23
24
25 public void testInternalForm() {
26 assertEquals("I", _cache.getInternalForm("int", true));
27 assertEquals("I", _cache.getInternalForm("int", false));
28 assertEquals("I", _cache.getInternalForm("I", true));
29 assertEquals("I", _cache.getInternalForm("I", false));
30
31 assertEquals("B", _cache.getInternalForm("byte", true));
32 assertEquals("C", _cache.getInternalForm("char", true));
33 assertEquals("D", _cache.getInternalForm("double", true));
34 assertEquals("F", _cache.getInternalForm("float", true));
35 assertEquals("J", _cache.getInternalForm("long", true));
36 assertEquals("S", _cache.getInternalForm("short", true));
37 assertEquals("Z", _cache.getInternalForm("boolean", true));
38 assertEquals("V", _cache.getInternalForm("void", true));
39
40 assertEquals("Ljava/lang/Object;",
41 _cache.getInternalForm(Object.class.getName(), true));
42 assertEquals("java/lang/Object",
43 _cache.getInternalForm(Object.class.getName(), false));
44 assertEquals("Ljava/lang/Object;",
45 _cache.getInternalForm("Ljava/lang/Object;", true));
46 assertEquals("java/lang/Object",
47 _cache.getInternalForm("Ljava/lang/Object;", false));
48 }
49
50
51
52
53 public void testArrayInternalForm() {
54 assertEquals("[B", _cache.getInternalForm(byte[].class.getName(),
55 false));
56 assertEquals("[B", _cache.getInternalForm(byte[].class.getName(),
57 true));
58 assertEquals("[B", _cache.getInternalForm("byte[]", false));
59 assertEquals("[B", _cache.getInternalForm("byte[]", true));
60
61 assertEquals("[[Ljava/lang/Object;",
62 _cache.getInternalForm(Object[][].class.getName(), false));
63 assertEquals("[[Ljava/lang/Object;",
64 _cache.getInternalForm(Object[][].class.getName(), true));
65 assertEquals("[[Ljava/lang/Object;",
66 _cache.getInternalForm("java.lang.Object[][]", false));
67 assertEquals("[[Ljava/lang/Object;",
68 _cache.getInternalForm("java.lang.Object[][]", true));
69 }
70
71
72
73
74 public void testExternalForm() {
75 assertEquals("byte", _cache.getExternalForm("B", true));
76 assertEquals("byte", _cache.getExternalForm("byte", true));
77 assertEquals("byte", _cache.getExternalForm("B", false));
78 assertEquals("byte", _cache.getExternalForm("byte", false));
79
80 assertEquals("byte", _cache.getExternalForm("byte", false));
81 assertEquals("byte", _cache.getExternalForm("B", true));
82 assertEquals("char", _cache.getExternalForm("char", false));
83 assertEquals("char", _cache.getExternalForm("C", true));
84 assertEquals("double", _cache.getExternalForm("double", false));
85 assertEquals("double", _cache.getExternalForm("D", true));
86 assertEquals("float", _cache.getExternalForm("float", false));
87 assertEquals("float", _cache.getExternalForm("F", true));
88 assertEquals("int", _cache.getExternalForm("int", false));
89 assertEquals("int", _cache.getExternalForm("I", true));
90 assertEquals("long", _cache.getExternalForm("long", false));
91 assertEquals("long", _cache.getExternalForm("J", true));
92 assertEquals("short", _cache.getExternalForm("short", false));
93 assertEquals("short", _cache.getExternalForm("S", true));
94 assertEquals("boolean", _cache.getExternalForm("boolean", false));
95 assertEquals("boolean", _cache.getExternalForm("Z", true));
96 assertEquals("void", _cache.getExternalForm("void", false));
97 assertEquals("void", _cache.getExternalForm("V", true));
98
99 assertEquals("[B", _cache.getExternalForm("byte[]", false));
100 assertEquals("[C", _cache.getExternalForm("char[]", false));
101 assertEquals("[D", _cache.getExternalForm("double[]", false));
102 assertEquals("[F", _cache.getExternalForm("float[]", false));
103 assertEquals("[I", _cache.getExternalForm("int[]", false));
104 assertEquals("[J", _cache.getExternalForm("long[]", false));
105 assertEquals("[S", _cache.getExternalForm("short[]", false));
106 assertEquals("[Z", _cache.getExternalForm("boolean[]", false));
107
108 assertEquals("java.lang.Object",
109 _cache.getExternalForm("java.lang.Object", true));
110 assertEquals("java.lang.Object",
111 _cache.getExternalForm("java/lang/Object", true));
112 assertEquals("java.lang.Object",
113 _cache.getExternalForm("java/lang/Object", false));
114 assertEquals("java.lang.Object",
115 _cache.getExternalForm("Ljava/lang/Object;", false));
116 }
117
118
119
120
121 public void testArrayExternalForm() {
122 assertEquals("byte[]", _cache.getExternalForm("byte[]", true));
123 assertEquals("byte[]",
124 _cache.getExternalForm(byte[].class.getName(), true));
125 assertEquals("[B", _cache.getExternalForm("byte[]", false));
126 assertEquals("[B", _cache.getExternalForm(byte[].class.getName(),
127 false));
128
129 assertEquals("java.lang.Object[][]",
130 _cache.getExternalForm("java.lang.Object[][]", true));
131 assertEquals("java.lang.Object[][]",
132 _cache.getExternalForm(Object[][].class.getName(), true));
133 assertEquals("[[Ljava.lang.Object;",
134 _cache.getExternalForm("java.lang.Object[][]", false));
135 assertEquals("[[Ljava.lang.Object;",
136 _cache.getExternalForm(Object[][].class.getName(), false));
137 }
138
139
140
141
142 public void testDescriptors() {
143 assertEquals("()V", _cache.getDescriptor("V", new String[0]));
144 assertEquals("()V", _cache.getDescriptor("void", null));
145 assertEquals("()Ljava/lang/Object;",
146 _cache.getDescriptor("java.lang.Object", null));
147 assertEquals("(Z)V",
148 _cache.getDescriptor("void", new String[] { "boolean" }));
149 assertEquals("([ZLjava/lang/Object;I)[I",
150 _cache.getDescriptor("int[]",
151 new String[] { "[Z", "Ljava/lang/Object;", "int" }));
152 }
153
154
155
156
157 public void testDescriptorReturnName() {
158 assertEquals("", _cache.getDescriptorReturnName("foo"));
159 assertEquals("V", _cache.getDescriptorReturnName("()V"));
160 assertEquals("[Ljava/lang/Object;",
161 _cache.getDescriptorReturnName(
162 "(IZLjava/lang/String;)[Ljava/lang/Object;"));
163 }
164
165
166
167
168 public void testDescriptorParamNames() {
169 assertEquals(0, _cache.getDescriptorParamNames("foo").length);
170
171 String[] params = _cache.getDescriptorParamNames(
172 "([ZLjava/lang/Object;I)[I");
173 assertEquals(3, params.length);
174 assertEquals("[Z", params[0]);
175 assertEquals("Ljava/lang/Object;", params[1]);
176 assertEquals("I", params[2]);
177 }
178
179
180
181
182 public void testComponentTypes() {
183 assertNull(_cache.getComponentName(null));
184 assertNull(_cache.getComponentName(int.class.getName()));
185 assertNull(_cache.getComponentName(String.class.getName()));
186 assertEquals(int.class.getName(),
187 _cache.getComponentName(int[].class.getName()));
188 assertEquals(int[][].class.getName(),
189 _cache.getComponentName(int[][][].class.getName()));
190 assertEquals(String.class.getName(),
191 _cache.getComponentName(String[].class.getName()));
192 assertEquals(String[][].class.getName(),
193 _cache.getComponentName(String[][][].class.getName()));
194 }
195
196 public static Test suite() {
197 return new TestSuite(TestNameCache.class);
198 }
199
200 public static void main(String[] args) {
201 TestRunner.run(suite());
202 }
203 }