1 | /* |
2 | * Copyright (c) 2001-2009, Jean Tessier |
3 | * All rights reserved. |
4 | * |
5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions |
7 | * are met: |
8 | * |
9 | * * Redistributions of source code must retain the above copyright |
10 | * notice, this list of conditions and the following disclaimer. |
11 | * |
12 | * * Redistributions in binary form must reproduce the above copyright |
13 | * notice, this list of conditions and the following disclaimer in the |
14 | * documentation and/or other materials provided with the distribution. |
15 | * |
16 | * * Neither the name of Jean Tessier nor the names of his contributors |
17 | * may be used to endorse or promote products derived from this software |
18 | * without specific prior written permission. |
19 | * |
20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR |
24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
27 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
28 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
29 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
30 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
31 | */ |
32 | |
33 | package com.jeantessier.classreader; |
34 | |
35 | import java.io.*; |
36 | |
37 | import junit.framework.*; |
38 | |
39 | public class TestMonitor extends TestCase { |
40 | public static final String TEST_CLASS = "test"; |
41 | public static final String TEST_FILENAME = "classes" + File.separator + "test.class"; |
42 | |
43 | private MockVisitor addVisitor; |
44 | private MockRemoveVisitor removeVisitor; |
45 | |
46 | private Monitor monitor; |
47 | |
48 | private Classfile testClassfile; |
49 | |
50 | protected void setUp() throws Exception { |
51 | super.setUp(); |
52 | |
53 | addVisitor = new MockVisitor(); |
54 | removeVisitor = new MockRemoveVisitor(); |
55 | |
56 | monitor = new Monitor(addVisitor, removeVisitor); |
57 | |
58 | ClassfileLoader loader = new AggregatingClassfileLoader(); |
59 | loader.load(TEST_FILENAME); |
60 | testClassfile = loader.getClassfile(TEST_CLASS); |
61 | } |
62 | |
63 | public void testFileTracking() { |
64 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
65 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
66 | |
67 | assertEquals("previous", 0, monitor.previousFiles.size()); |
68 | assertEquals("current", 0, monitor.currentFiles.size()); |
69 | |
70 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
71 | |
72 | assertEquals("previous", 0, monitor.previousFiles.size()); |
73 | assertEquals("current", 1, monitor.currentFiles.size()); |
74 | assertTrue("TEST_FILENAME not in current", monitor.currentFiles.contains(TEST_FILENAME)); |
75 | |
76 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
77 | |
78 | assertEquals("previous", 0, monitor.previousFiles.size()); |
79 | assertEquals("current", 1, monitor.currentFiles.size()); |
80 | assertTrue("TEST_FILENAME not in current", monitor.currentFiles.contains(TEST_FILENAME)); |
81 | |
82 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
83 | monitor.endSession(new LoadEvent(this, null, null, null)); |
84 | |
85 | assertEquals("previous", 1, monitor.previousFiles.size()); |
86 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
87 | assertEquals("current", 0, monitor.currentFiles.size()); |
88 | } |
89 | |
90 | public void testFileTrackingAcrossSessions() { |
91 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
92 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
93 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
94 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
95 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
96 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
97 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
98 | monitor.endSession(new LoadEvent(this, null, null, null)); |
99 | |
100 | assertEquals("previous", 1, monitor.previousFiles.size()); |
101 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
102 | assertEquals("current", 0, monitor.currentFiles.size()); |
103 | |
104 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
105 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
106 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
107 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
108 | |
109 | assertEquals("previous", 1, monitor.previousFiles.size()); |
110 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
111 | assertEquals("current", 1, monitor.currentFiles.size()); |
112 | assertTrue("TEST_FILENAME not in current", monitor.currentFiles.contains(TEST_FILENAME)); |
113 | |
114 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
115 | |
116 | assertEquals("previous", 1, monitor.previousFiles.size()); |
117 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
118 | assertEquals("current", 1, monitor.currentFiles.size()); |
119 | assertTrue("TEST_FILENAME not in current", monitor.currentFiles.contains(TEST_FILENAME)); |
120 | |
121 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
122 | |
123 | assertEquals("previous", 0, monitor.previousFiles.size()); |
124 | assertEquals("current", 1, monitor.currentFiles.size()); |
125 | assertTrue("TEST_FILENAME not in current", monitor.currentFiles.contains(TEST_FILENAME)); |
126 | |
127 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
128 | monitor.endSession(new LoadEvent(this, null, null, null)); |
129 | |
130 | assertEquals("previous", 1, monitor.previousFiles.size()); |
131 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
132 | assertEquals("current", 0, monitor.currentFiles.size()); |
133 | } |
134 | |
135 | public void testFileTrackingWithSkippedFile() { |
136 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
137 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
138 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
139 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
140 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
141 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
142 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
143 | monitor.endSession(new LoadEvent(this, null, null, null)); |
144 | |
145 | assertEquals("previous", 1, monitor.previousFiles.size()); |
146 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
147 | assertEquals("current", 0, monitor.currentFiles.size()); |
148 | |
149 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
150 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
151 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
152 | |
153 | assertEquals("previous", 1, monitor.previousFiles.size()); |
154 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
155 | assertEquals("current", 1, monitor.currentFiles.size()); |
156 | assertTrue("TEST_FILENAME not in current", monitor.currentFiles.contains(TEST_FILENAME)); |
157 | |
158 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
159 | |
160 | assertEquals("previous", 0, monitor.previousFiles.size()); |
161 | assertEquals("current", 1, monitor.currentFiles.size()); |
162 | assertTrue("TEST_FILENAME not in current", monitor.currentFiles.contains(TEST_FILENAME)); |
163 | |
164 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
165 | monitor.endSession(new LoadEvent(this, null, null, null)); |
166 | |
167 | assertEquals("previous", 1, monitor.previousFiles.size()); |
168 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
169 | assertEquals("current", 0, monitor.currentFiles.size()); |
170 | } |
171 | |
172 | public void testFileTrackingWithMissingFile() { |
173 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
174 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
175 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
176 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
177 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
178 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
179 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
180 | monitor.endSession(new LoadEvent(this, null, null, null)); |
181 | |
182 | assertEquals("previous", 1, monitor.previousFiles.size()); |
183 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
184 | assertEquals("current", 0, monitor.currentFiles.size()); |
185 | |
186 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
187 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
188 | |
189 | assertEquals("previous", 1, monitor.previousFiles.size()); |
190 | assertTrue("TEST_FILENAME not in previous", monitor.previousFiles.contains(TEST_FILENAME)); |
191 | assertEquals("current", 0, monitor.currentFiles.size()); |
192 | |
193 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
194 | monitor.endSession(new LoadEvent(this, null, null, null)); |
195 | |
196 | assertEquals("previous", 0, monitor.previousFiles.size()); |
197 | assertEquals("current", 0, monitor.currentFiles.size()); |
198 | } |
199 | |
200 | public void testNewClassfile() { |
201 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
202 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
203 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
204 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
205 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
206 | |
207 | assertAdditionsAndRemovals(1, 0); |
208 | } |
209 | |
210 | public void testRepeatInSession() { |
211 | // Begin session |
212 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
213 | |
214 | // See file for the first time |
215 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
216 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
217 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
218 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
219 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
220 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
221 | |
222 | // See file for the second time |
223 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
224 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
225 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
226 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
227 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
228 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
229 | |
230 | // Finish session |
231 | monitor.endSession(new LoadEvent(this, null, null, null)); |
232 | |
233 | assertAdditionsAndRemovals(2, 0); |
234 | } |
235 | |
236 | public void testRepeatInGroup() { |
237 | // Begin session |
238 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
239 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
240 | |
241 | // See file for the first time |
242 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
243 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
244 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
245 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
246 | |
247 | // See file for the second time |
248 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
249 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
250 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
251 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
252 | |
253 | // Finish session |
254 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
255 | monitor.endSession(new LoadEvent(this, null, null, null)); |
256 | |
257 | assertAdditionsAndRemovals(2, 0); |
258 | } |
259 | |
260 | public void testRepeatAcrossSessions() { |
261 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
262 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
263 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
264 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
265 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
266 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
267 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
268 | monitor.endSession(new LoadEvent(this, null, null, null)); |
269 | |
270 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
271 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
272 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
273 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
274 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
275 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
276 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
277 | monitor.endSession(new LoadEvent(this, null, null, null)); |
278 | |
279 | assertAdditionsAndRemovals(2, 1); |
280 | } |
281 | |
282 | public void testRemoval() { |
283 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
284 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
285 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
286 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
287 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
288 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
289 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
290 | monitor.endSession(new LoadEvent(this, null, null, null)); |
291 | |
292 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
293 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
294 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
295 | monitor.endSession(new LoadEvent(this, null, null, null)); |
296 | |
297 | assertAdditionsAndRemovals(1, 1); |
298 | } |
299 | |
300 | public void testSkip() { |
301 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
302 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
303 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
304 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
305 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
306 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
307 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
308 | monitor.endSession(new LoadEvent(this, null, null, null)); |
309 | |
310 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
311 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
312 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
313 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
314 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
315 | monitor.endSession(new LoadEvent(this, null, null, null)); |
316 | |
317 | assertAdditionsAndRemovals(1, 0); |
318 | } |
319 | |
320 | public void testOpenSession() { |
321 | monitor.setClosedSession(false); |
322 | |
323 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
324 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
325 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
326 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
327 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
328 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
329 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
330 | monitor.endSession(new LoadEvent(this, null, null, null)); |
331 | |
332 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
333 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
334 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
335 | monitor.endSession(new LoadEvent(this, null, null, null)); |
336 | |
337 | assertAdditionsAndRemovals(1, 0); |
338 | } |
339 | |
340 | public void testExtractAgainInOpenSession() { |
341 | monitor.setClosedSession(false); |
342 | |
343 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
344 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
345 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
346 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
347 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
348 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
349 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
350 | monitor.endSession(new LoadEvent(this, null, null, null)); |
351 | |
352 | addVisitor.reset(); |
353 | removeVisitor.reset(); |
354 | |
355 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
356 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
357 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
358 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
359 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
360 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
361 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
362 | monitor.endSession(new LoadEvent(this, null, null, null)); |
363 | |
364 | assertAdditionsAndRemovals(1, 0); |
365 | } |
366 | |
367 | public void testReloadAfterClosingSessionSession() { |
368 | monitor.setClosedSession(false); |
369 | |
370 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
371 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
372 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
373 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
374 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
375 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
376 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
377 | monitor.endSession(new LoadEvent(this, null, null, null)); |
378 | |
379 | monitor.setClosedSession(true); |
380 | |
381 | addVisitor.reset(); |
382 | removeVisitor.reset(); |
383 | |
384 | monitor.beginSession(new LoadEvent(this, null, null, null)); |
385 | monitor.beginGroup(new LoadEvent(this, null, null, null)); |
386 | monitor.beginFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
387 | monitor.beginClassfile(new LoadEvent(this, null, TEST_FILENAME, null)); |
388 | monitor.endClassfile(new LoadEvent(this, null, TEST_FILENAME, testClassfile)); |
389 | monitor.endFile(new LoadEvent(this, null, TEST_FILENAME, null)); |
390 | monitor.endGroup(new LoadEvent(this, null, null, null)); |
391 | monitor.endSession(new LoadEvent(this, null, null, null)); |
392 | |
393 | assertAdditionsAndRemovals(1, 1); |
394 | } |
395 | |
396 | private void assertAdditionsAndRemovals(int expectedAdded, int expectedRemoved) { |
397 | assertAddedClasses(expectedAdded); |
398 | assertRemovedClasses(expectedRemoved); |
399 | } |
400 | |
401 | private void assertAddedClasses(int expectedSize) { |
402 | assertEquals("added", expectedSize, addVisitor.getVisitedClassfiles().size()); |
403 | for (Classfile addedClassfile : addVisitor.getVisitedClassfiles()) { |
404 | assertEquals("added", testClassfile, addedClassfile); |
405 | } |
406 | } |
407 | |
408 | private void assertRemovedClasses(int expectedSize) { |
409 | assertEquals("removed", expectedSize, removeVisitor.getVisitedClasses().size()); |
410 | for (String removedClassName : removeVisitor.getVisitedClasses()) { |
411 | assertEquals("removed", TEST_CLASS, removedClassName); |
412 | } |
413 | } |
414 | } |