|
1 " |
|
2 COPYRIGHT (c) 1996-2011 by Claus Gittinger |
|
3 |
|
4 New code and modifications done at SWING Research Group [1]: |
|
5 |
|
6 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko |
|
7 SWING Research Group, Czech Technical University in Prague |
|
8 |
|
9 This software is furnished under a license and may be used |
|
10 only in accordance with the terms of that license and with the |
|
11 inclusion of the above copyright notice. This software may not |
|
12 be provided or otherwise made available to, or used by, any |
|
13 other person. No title to or ownership of the software is |
|
14 hereby transferred. |
|
15 |
|
16 [1] Code written at SWING Research Group contains a signature |
|
17 of one of the above copright owners. For exact set of such code, |
|
18 see the differences between this version and version stx:libjava |
|
19 as of 1.9.2010 |
|
20 " |
|
21 "{ Package: 'stx:libjava' }" |
|
22 |
|
23 JavaRefsAndConstantPoolTestCase subclass:#JavaClassRefTests |
|
24 instanceVariableNames:'' |
|
25 classVariableNames:'' |
|
26 poolDictionaries:'' |
|
27 category:'Languages-Java-Tests-RuntimeConstantPool' |
|
28 ! |
|
29 |
|
30 !JavaClassRefTests class methodsFor:'documentation'! |
|
31 |
|
32 copyright |
|
33 " |
|
34 COPYRIGHT (c) 1996-2011 by Claus Gittinger |
|
35 |
|
36 New code and modifications done at SWING Research Group [1]: |
|
37 |
|
38 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko |
|
39 SWING Research Group, Czech Technical University in Prague |
|
40 |
|
41 This software is furnished under a license and may be used |
|
42 only in accordance with the terms of that license and with the |
|
43 inclusion of the above copyright notice. This software may not |
|
44 be provided or otherwise made available to, or used by, any |
|
45 other person. No title to or ownership of the software is |
|
46 hereby transferred. |
|
47 |
|
48 [1] Code written at SWING Research Group contains a signature |
|
49 of one of the above copright owners. For exact set of such code, |
|
50 see the differences between this version and version stx:libjava |
|
51 as of 1.9.2010 |
|
52 |
|
53 " |
|
54 ! ! |
|
55 |
|
56 !JavaClassRefTests methodsFor:'arrays'! |
|
57 |
|
58 testCorrectArrayCreation |
|
59 | classRef result expectedResult | |
|
60 classRef := self getClassRefNamed: '[Ljava/lang/Object;'. |
|
61 result := classRef resolve. |
|
62 expectedResult := JavaArray |
|
63 javaArrayClassFor: (Java classForName: 'java.lang.Object'). |
|
64 self assertTrue: (result = expectedResult). |
|
65 |
|
66 "Created: / 23-05-2011 / 21:15:20 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
67 ! |
|
68 |
|
69 testCorrectMultiArrayCreation |
|
70 | classRef result expectedResult | |
|
71 classRef := self getClassRefNamed: '[[Ljava/lang/Object;'. |
|
72 result := classRef resolve. |
|
73 expectedResult := JavaArray javaArrayClassFor: (JavaArray |
|
74 javaArrayClassFor: (Java classForName: 'java.lang.Object')). |
|
75 self assertTrue: (result name = expectedResult name). |
|
76 |
|
77 "Created: / 23-05-2011 / 21:15:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
78 ! ! |
|
79 |
|
80 !JavaClassRefTests methodsFor:'permission tests'! |
|
81 |
|
82 testAccessingNonPublicFromInside |
|
83 | javaClassRef initString throwedException | |
|
84 |
|
85 self enableMockedExceptionThrowing. |
|
86 |
|
87 [ initString := 'Lstx/libjava/tests/mocks/NonPublicClass;'. |
|
88 javaClassRef := self getClassRefNamed: initString. |
|
89 javaClassRef owner: (Java classForName: 'stx.libjava.tests.mocks.Crate'). |
|
90 javaClassRef resolve. ] on: Error |
|
91 do: [:e | throwedException := e ]. |
|
92 self assertTrue: (throwedException isNil). |
|
93 self disableMockedExceptionThrowing. |
|
94 |
|
95 "Created: / 13-04-2011 / 13:42:47 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
96 "Modified: / 23-05-2011 / 17:58:19 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
97 ! |
|
98 |
|
99 testAccessingNonPublicFromOutside |
|
100 | javaClassRef initString throwedException | |
|
101 |
|
102 self enableMockedExceptionThrowing. |
|
103 |
|
104 [ initString := 'Lstx/libjava/tests/mocks/NonPublicClass;'. |
|
105 javaClassRef := self getClassRefNamed: initString. |
|
106 javaClassRef owner: (Java classForName: 'java.lang.Object'). |
|
107 javaClassRef resolve. ] on: Error |
|
108 do: [:e | throwedException := e ]. |
|
109 self assertTrue: (throwedException notNil |
|
110 and: [ throwedException messageText = 'IllegalAccessError' ]). |
|
111 self disableMockedExceptionThrowing. |
|
112 |
|
113 "Created: / 13-04-2011 / 13:37:41 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
114 "Modified: / 23-05-2011 / 17:58:22 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
115 ! |
|
116 |
|
117 testAccessingPublic |
|
118 | javaClassRef initString | |
|
119 |
|
120 self enableMockedExceptionThrowing. |
|
121 self shouldnt: |
|
122 [ initString := 'Lstx/libjava/tests/mocks/PublicClass;'. |
|
123 javaClassRef := self getClassRefNamed: initString. |
|
124 javaClassRef owner: (Java classForName: 'java.lang.Object'). |
|
125 javaClassRef resolve. ] |
|
126 raise: Error. |
|
127 self disableMockedExceptionThrowing. |
|
128 |
|
129 "Created: / 13-04-2011 / 13:36:33 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
130 "Modified: / 23-05-2011 / 17:58:24 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
131 ! |
|
132 |
|
133 testNonPublicClassPresent |
|
134 | javaClassRef initString | |
|
135 |
|
136 self enableMockedExceptionThrowing. |
|
137 initString := 'Lstx/libjava/tests/mocks/NonPublicClass;'. |
|
138 javaClassRef := self getClassRefNamed: initString. |
|
139 javaClassRef owner: (Java |
|
140 classForName: 'stx.libjava.tests.mocks.SubclassOfNonPublicClass'). |
|
141 javaClassRef resolve. |
|
142 self assertTrue: (javaClassRef valueCache notNil). |
|
143 self disableMockedExceptionThrowing. |
|
144 |
|
145 "Created: / 13-04-2011 / 13:38:49 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
146 "Modified: / 23-05-2011 / 17:58:27 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
147 ! |
|
148 |
|
149 testPublicClassPresent |
|
150 | javaClassRef initString | |
|
151 |
|
152 self enableMockedExceptionThrowing. |
|
153 initString := 'Lstx/libjava/tests/mocks/PublicClass;'. |
|
154 javaClassRef := self getClassRefNamed: initString. |
|
155 javaClassRef owner: (Java classForName: 'java.lang.Object'). |
|
156 javaClassRef resolve. |
|
157 self assertTrue: (javaClassRef valueCache notNil). |
|
158 self disableMockedExceptionThrowing. |
|
159 |
|
160 "Created: / 13-04-2011 / 13:39:00 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
161 "Modified: / 23-05-2011 / 17:58:29 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
162 ! ! |
|
163 |
|
164 !JavaClassRefTests methodsFor:'primitives'! |
|
165 |
|
166 testAllPrimitiveArrayClasses |
|
167 | classRef descriptor | |
|
168 |
|
169 #( $B $D $F $I $J $S $Z ) do: |
|
170 [:each | |
|
171 descriptor := '[' , each. |
|
172 classRef := self getClassRefNamed: descriptor. |
|
173 self assertTrue: ((JavaDescriptor readFromString: descriptor) javaClass |
|
174 = classRef resolve) ]. |
|
175 |
|
176 "Created: / 23-05-2011 / 20:49:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
177 ! |
|
178 |
|
179 testAllPrimitiveClasses |
|
180 | classRef | |
|
181 |
|
182 #( $B $C $D $F $I $J $S $Z ) |
|
183 do: |
|
184 [:each | |
|
185 |
|
186 classRef := self getClassRefNamed: each asString. |
|
187 self assertTrue: ((JavaDescriptor baseTypes at: each) = classRef resolve) ]. |
|
188 |
|
189 "Created: / 23-05-2011 / 20:48:55 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
190 ! |
|
191 |
|
192 testAllPrimitiveMultiArrayClasses |
|
193 | classRef descriptor | |
|
194 #( $B $D $F $I $J $S $Z ) do: [ |
|
195 :each | |
|
196 descriptor := '[[[[' , each. |
|
197 classRef := self getClassRefNamed: descriptor. |
|
198 self assertTrue: ((JavaDescriptor readFromString: descriptor) javaClass name |
|
199 = classRef resolve name) |
|
200 ]. |
|
201 |
|
202 "Created: / 23-05-2011 / 20:50:04 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
203 ! ! |
|
204 |
|
205 !JavaClassRefTests methodsFor:'resolving static tests'! |
|
206 |
|
207 testCorrectStaticResolving |
|
208 | javaClassRef initString result expectedResult | |
|
209 initString := 'Lstx/libjava/tests/mocks/ClassWithInnerClasses$InnerStatic;'. |
|
210 javaClassRef := self getClassRefNamed: initString. |
|
211 javaClassRef |
|
212 owner: (Java classForName: 'stx.libjava.tests.mocks.ClassWithInnerClasses'). |
|
213 expectedResult := Java |
|
214 classForName: 'stx.libjava.tests.mocks.ClassWithInnerClasses$InnerStatic'. |
|
215 result := javaClassRef resolve. |
|
216 self assertTrue: (result = expectedResult). |
|
217 |
|
218 "Created: / 28-04-2011 / 21:51:26 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
219 "Modified: / 08-12-2011 / 19:24:46 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
220 ! ! |
|
221 |
|
222 !JavaClassRefTests methodsFor:'resolving tests'! |
|
223 |
|
224 testCorrectInstanceCreation |
|
225 | javaClassRef initString | |
|
226 |
|
227 initString := 'Ljava/lang/String;'. |
|
228 javaClassRef := self getClassRefNamed: initString. |
|
229 self assertFalse: (javaClassRef isResolved). |
|
230 self assertTrue: (javaClassRef valueCache isNil). |
|
231 self assertTrue: (javaClassRef name = initString). |
|
232 |
|
233 "Created: / 08-04-2011 / 14:01:41 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
234 "Modified: / 23-05-2011 / 17:58:08 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
235 ! |
|
236 |
|
237 testCorrectResolving |
|
238 | javaClassRef initString result expectedResult | |
|
239 |
|
240 initString := 'Ljava/lang/String;'. |
|
241 javaClassRef := self getClassRefNamed: initString. |
|
242 javaClassRef owner: (Java classForName: 'java.lang.Object'). |
|
243 expectedResult := Java classForName: 'java.lang.String'. |
|
244 result := javaClassRef resolve. |
|
245 self assertTrue: (result = expectedResult). |
|
246 |
|
247 "Created: / 08-04-2011 / 14:07:57 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
248 "Modified: / 23-05-2011 / 17:58:05 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
249 ! |
|
250 |
|
251 testInvalidation |
|
252 | javaClassRef initString | |
|
253 |
|
254 initString := 'Ljava/lang/String;'. |
|
255 javaClassRef := self getClassRefNamed: initString. |
|
256 javaClassRef owner: (Java classForName: 'java.lang.Object'). |
|
257 self assertTrue: (javaClassRef isResolved not). |
|
258 javaClassRef resolve. |
|
259 self assertTrue: (javaClassRef isResolved). |
|
260 javaClassRef invalidate. |
|
261 self assertTrue: (javaClassRef isResolved not). |
|
262 |
|
263 "Created: / 08-04-2011 / 14:09:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
264 "Modified: / 23-05-2011 / 17:58:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
265 ! |
|
266 |
|
267 testInvalidationForClassNegative |
|
268 | javaClassRef initString | |
|
269 |
|
270 initString := 'Ljava/lang/String;'. |
|
271 javaClassRef := self getClassRefNamed: initString. |
|
272 javaClassRef owner: (Java classForName: 'java.lang.Object'). |
|
273 self assertTrue: (javaClassRef isResolved not). |
|
274 javaClassRef resolve. |
|
275 self assertTrue: (javaClassRef isResolved). |
|
276 javaClassRef invalidateForClass: 'Ljava/lang/Object;'. |
|
277 self assertTrue: (javaClassRef isResolved). |
|
278 |
|
279 "Created: / 08-04-2011 / 16:21:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
280 "Modified: / 23-05-2011 / 17:58:00 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
281 ! |
|
282 |
|
283 testInvalidationForClassPositive |
|
284 | javaClassRef initString | |
|
285 |
|
286 initString := 'Ljava/lang/String;'. |
|
287 javaClassRef := self getClassRefNamed: initString. |
|
288 javaClassRef owner: (Java classForName: 'java.lang.Object'). |
|
289 self assertTrue: (javaClassRef isResolved not). |
|
290 javaClassRef resolve. |
|
291 self assertTrue: (javaClassRef isResolved). |
|
292 javaClassRef invalidateForClass: initString. |
|
293 self assertTrue: (javaClassRef isResolved not). |
|
294 |
|
295 "Created: / 08-04-2011 / 16:21:35 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
296 "Modified: / 23-05-2011 / 17:57:57 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
297 ! |
|
298 |
|
299 testResolving |
|
300 | javaClassRef initString | |
|
301 |
|
302 initString := 'Ljava/lang/String;'. |
|
303 javaClassRef := self getClassRefNamed: initString. |
|
304 javaClassRef owner: (Java classForName: 'java.lang.Object'). |
|
305 self assertTrue: (javaClassRef isResolved not). |
|
306 javaClassRef resolve. |
|
307 self assertTrue: (javaClassRef isResolved). |
|
308 |
|
309 "Created: / 08-04-2011 / 14:04:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
310 "Modified: / 23-05-2011 / 17:57:54 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
|
311 ! ! |
|
312 |
|
313 !JavaClassRefTests class methodsFor:'documentation'! |
|
314 |
|
315 version_SVN |
|
316 ^ '$Id$' |
|
317 ! ! |