KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jeantessier > dependency > TestNodeHandler


1 /*
2  * Copyright (c) 2001-2005, 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.dependency;
34
35 import org.xml.sax.*;
36 import org.xml.sax.helpers.*;
37
38 import junit.framework.*;
39
40 public class TestNodeHandler extends TestCase {
41     private static final String JavaDoc MY_PACKAGE_NAME = "mypackage";
42     private static final String JavaDoc MY_CLASS_NAME = "mypackage.MyClass";
43     private static final String JavaDoc MY_FEATURE_NAME = "mypackage.MyClass.myFeature";
44     private static final String JavaDoc OTHER_PACKAGE_NAME = "otherpackage";
45     private static final String JavaDoc OTHER_CLASS_NAME = "otherpackage.OtherClass";
46     private static final String JavaDoc OTHER_FEATURE_NAME = "otherpackage.OtherClass.otherFeature";
47     
48     private NodeHandler handler;
49
50     protected void setUp() throws Exception JavaDoc {
51         super.setUp();
52
53         handler = new NodeHandler();
54     }
55
56     public void testConstructor() {
57         assertEquals("nb packages", 0, handler.getFactory().getPackages().size());
58
59         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
60
61         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
62     }
63
64     public void testEmptyDocument() throws SAXException {
65         handler.startDocument();
66         handler.endDocument();
67
68         assertEquals("nb packages", 0, handler.getFactory().getPackages().size());
69
70         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
71
72         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
73     }
74
75     public void testEmptyTopNode() throws SAXException {
76         Attributes attsEmpty = new AttributesImpl();
77         
78         handler.startDocument();
79         handler.startElement(null, null, "dependencies", attsEmpty);
80         handler.endElement(null, null, "dependencies");
81         handler.endDocument();
82
83         assertEquals("nb packages", 0, handler.getFactory().getPackages().size());
84
85         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
86
87         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
88     }
89
90     public void testUnspecifiedPackageNodeIsConfirmed() throws SAXException {
91         Attributes attsEmpty = new AttributesImpl();
92
93         handler.startDocument();
94         handler.startElement(null, null, "dependencies", attsEmpty);
95         handler.startElement(null, null, "package", attsEmpty);
96         handler.startElement(null, null, "name", attsEmpty);
97         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
98         handler.endElement(null, null, "name");
99         handler.endElement(null, null, "package");
100         handler.endElement(null, null, "dependencies");
101         handler.endDocument();
102
103         assertEquals("nb packages", 1, handler.getFactory().getPackages().size());
104         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
105         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
106
107         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
108
109         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
110     }
111
112     public void testInferredPackageNode() throws SAXException {
113         AttributesImpl attsEmpty = new AttributesImpl();
114         AttributesImpl attsNo = new AttributesImpl();
115         attsNo.addAttribute(null, null, "confirmed", null, "no");
116
117         handler.startDocument();
118         handler.startElement(null, null, "dependencies", attsEmpty);
119         handler.startElement(null, null, "package", attsNo);
120         handler.startElement(null, null, "name", attsEmpty);
121         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
122         handler.endElement(null, null, "name");
123         handler.endElement(null, null, "package");
124         handler.endElement(null, null, "dependencies");
125         handler.endDocument();
126
127         assertEquals("nb packages", 1, handler.getFactory().getPackages().size());
128         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
129         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
130
131         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
132
133         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
134     }
135
136     public void testConfirmedPackageNode() throws SAXException {
137         AttributesImpl attsEmpty = new AttributesImpl();
138         AttributesImpl attsYes = new AttributesImpl();
139         attsYes.addAttribute(null, null, "confirmed", null, "yes");
140
141         handler.startDocument();
142         handler.startElement(null, null, "dependencies", attsEmpty);
143         handler.startElement(null, null, "package", attsYes);
144         handler.startElement(null, null, "name", attsEmpty);
145         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
146         handler.endElement(null, null, "name");
147         handler.endElement(null, null, "package");
148         handler.endElement(null, null, "dependencies");
149         handler.endDocument();
150
151         assertEquals("nb packages", 1, handler.getFactory().getPackages().size());
152         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
153         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
154
155         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
156
157         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
158     }
159
160     public void testUnspecifiedClassNodeIsConfirmed() throws SAXException {
161         Attributes attsEmpty = new AttributesImpl();
162
163         handler.startDocument();
164         handler.startElement(null, null, "dependencies", attsEmpty);
165         handler.startElement(null, null, "package", attsEmpty);
166         handler.startElement(null, null, "name", attsEmpty);
167         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
168         handler.endElement(null, null, "name");
169         handler.startElement(null, null, "class", attsEmpty);
170         handler.startElement(null, null, "name", attsEmpty);
171         handler.characters(MY_CLASS_NAME.toCharArray(), 0, MY_CLASS_NAME.length());
172         handler.endElement(null, null, "name");
173         handler.endElement(null, null, "class");
174         handler.endElement(null, null, "package");
175         handler.endElement(null, null, "dependencies");
176         handler.endDocument();
177
178         assertEquals("nb packages", 1, handler.getFactory().getPackages().size());
179         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
180         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
181
182         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
183         assertNotNull("missing class", handler.getFactory().getClasses().get(MY_CLASS_NAME));
184         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(MY_CLASS_NAME)).isConfirmed());
185
186         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
187     }
188
189     public void testInferredClassNode() throws SAXException {
190         AttributesImpl attsEmpty = new AttributesImpl();
191         AttributesImpl attsNo = new AttributesImpl();
192         attsNo.addAttribute(null, null, "confirmed", null, "no");
193
194         handler.startDocument();
195         handler.startElement(null, null, "dependencies", attsEmpty);
196         handler.startElement(null, null, "package", attsNo);
197         handler.startElement(null, null, "name", attsEmpty);
198         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
199         handler.endElement(null, null, "name");
200         handler.startElement(null, null, "class", attsNo);
201         handler.startElement(null, null, "name", attsEmpty);
202         handler.characters(MY_CLASS_NAME.toCharArray(), 0, MY_CLASS_NAME.length());
203         handler.endElement(null, null, "name");
204         handler.endElement(null, null, "class");
205         handler.endElement(null, null, "package");
206         handler.endElement(null, null, "dependencies");
207         handler.endDocument();
208
209         assertEquals("nb packages", 1, handler.getFactory().getPackages().size());
210         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
211         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
212
213         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
214         assertNotNull("missing class", handler.getFactory().getClasses().get(MY_CLASS_NAME));
215         assertFalse("class is confirmed", ((Node) handler.getFactory().getClasses().get(MY_CLASS_NAME)).isConfirmed());
216
217         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
218     }
219
220     public void testConfirmedClassNode() throws SAXException {
221         AttributesImpl attsEmpty = new AttributesImpl();
222         AttributesImpl attsYes = new AttributesImpl();
223
224         handler.startDocument();
225         handler.startElement(null, null, "dependencies", attsEmpty);
226         handler.startElement(null, null, "package", attsYes);
227         handler.startElement(null, null, "name", attsEmpty);
228         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
229         handler.endElement(null, null, "name");
230         handler.startElement(null, null, "class", attsYes);
231         handler.startElement(null, null, "name", attsEmpty);
232         handler.characters(MY_CLASS_NAME.toCharArray(), 0, MY_CLASS_NAME.length());
233         handler.endElement(null, null, "name");
234         handler.endElement(null, null, "class");
235         handler.endElement(null, null, "package");
236         handler.endElement(null, null, "dependencies");
237         handler.endDocument();
238
239         assertEquals("nb packages", 1, handler.getFactory().getPackages().size());
240         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
241         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
242
243         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
244         assertNotNull("missing class", handler.getFactory().getClasses().get(MY_CLASS_NAME));
245         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(MY_CLASS_NAME)).isConfirmed());
246
247         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
248     }
249
250     public void testUnspecifiedFeatureNodeIsConfirmed() throws SAXException {
251         Attributes attsEmpty = new AttributesImpl();
252
253         handler.startDocument();
254         handler.startElement(null, null, "dependencies", attsEmpty);
255         handler.startElement(null, null, "package", attsEmpty);
256         handler.startElement(null, null, "name", attsEmpty);
257         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
258         handler.endElement(null, null, "name");
259         handler.startElement(null, null, "class", attsEmpty);
260         handler.startElement(null, null, "name", attsEmpty);
261         handler.characters(MY_CLASS_NAME.toCharArray(), 0, MY_CLASS_NAME.length());
262         handler.endElement(null, null, "name");
263         handler.startElement(null, null, "feature", attsEmpty);
264         handler.startElement(null, null, "name", attsEmpty);
265         handler.characters(MY_FEATURE_NAME.toCharArray(), 0, MY_FEATURE_NAME.length());
266         handler.endElement(null, null, "name");
267         handler.endElement(null, null, "feature");
268         handler.endElement(null, null, "class");
269         handler.endElement(null, null, "package");
270         handler.endElement(null, null, "dependencies");
271         handler.endDocument();
272
273         assertEquals("nb packages", 1, handler.getFactory().getPackages().size());
274         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
275         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
276
277         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
278         assertNotNull("missing class", handler.getFactory().getClasses().get(MY_CLASS_NAME));
279         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(MY_CLASS_NAME)).isConfirmed());
280
281         assertEquals("nb features", 1, handler.getFactory().getFeatures().size());
282         assertNotNull("missing feature", handler.getFactory().getFeatures().get(MY_FEATURE_NAME));
283         assertTrue("feature is inferred", ((Node) handler.getFactory().getFeatures().get(MY_FEATURE_NAME)).isConfirmed());
284     }
285
286     public void testInferredFeatureNode() throws SAXException {
287         AttributesImpl attsEmpty = new AttributesImpl();
288         AttributesImpl attsNo = new AttributesImpl();
289         attsNo.addAttribute(null, null, "confirmed", null, "no");
290
291         handler.startDocument();
292         handler.startElement(null, null, "dependencies", attsEmpty);
293         handler.startElement(null, null, "package", attsNo);
294         handler.startElement(null, null, "name", attsEmpty);
295         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
296         handler.endElement(null, null, "name");
297         handler.startElement(null, null, "class", attsNo);
298         handler.startElement(null, null, "name", attsEmpty);
299         handler.characters(MY_CLASS_NAME.toCharArray(), 0, MY_CLASS_NAME.length());
300         handler.endElement(null, null, "name");
301         handler.startElement(null, null, "feature", attsNo);
302         handler.startElement(null, null, "name", attsEmpty);
303         handler.characters(MY_FEATURE_NAME.toCharArray(), 0, MY_FEATURE_NAME.length());
304         handler.endElement(null, null, "name");
305         handler.endElement(null, null, "feature");
306         handler.endElement(null, null, "class");
307         handler.endElement(null, null, "package");
308         handler.endElement(null, null, "dependencies");
309         handler.endDocument();
310
311         assertEquals("nb packages", 1, handler.getFactory().getPackages().size());
312         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
313         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
314
315         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
316         assertNotNull("missing class", handler.getFactory().getClasses().get(MY_CLASS_NAME));
317         assertFalse("class is confirmed", ((Node) handler.getFactory().getClasses().get(MY_CLASS_NAME)).isConfirmed());
318
319         assertEquals("nb features", 1, handler.getFactory().getFeatures().size());
320         assertNotNull("missing feature", handler.getFactory().getFeatures().get(MY_FEATURE_NAME));
321         assertFalse("feature is confirmed", ((Node) handler.getFactory().getFeatures().get(MY_FEATURE_NAME)).isConfirmed());
322     }
323
324     public void testConfirmedFeatureNode() throws SAXException {
325         AttributesImpl attsEmpty = new AttributesImpl();
326         AttributesImpl attsYes = new AttributesImpl();
327
328         handler.startDocument();
329         handler.startElement(null, null, "dependencies", attsEmpty);
330         handler.startElement(null, null, "package", attsYes);
331         handler.startElement(null, null, "name", attsEmpty);
332         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
333         handler.endElement(null, null, "name");
334         handler.startElement(null, null, "class", attsYes);
335         handler.startElement(null, null, "name", attsEmpty);
336         handler.characters(MY_CLASS_NAME.toCharArray(), 0, MY_CLASS_NAME.length());
337         handler.endElement(null, null, "name");
338         handler.startElement(null, null, "feature", attsYes);
339         handler.startElement(null, null, "name", attsEmpty);
340         handler.characters(MY_FEATURE_NAME.toCharArray(), 0, MY_FEATURE_NAME.length());
341         handler.endElement(null, null, "name");
342         handler.endElement(null, null, "feature");
343         handler.endElement(null, null, "class");
344         handler.endElement(null, null, "package");
345         handler.endElement(null, null, "dependencies");
346         handler.endDocument();
347
348         assertEquals("nb packages", 1, handler.getFactory().getPackages().size());
349         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
350         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
351
352         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
353         assertNotNull("missing class", handler.getFactory().getClasses().get(MY_CLASS_NAME));
354         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(MY_CLASS_NAME)).isConfirmed());
355
356         assertEquals("nb features", 1, handler.getFactory().getFeatures().size());
357         assertNotNull("missing feature", handler.getFactory().getFeatures().get(MY_FEATURE_NAME));
358         assertTrue("feature is inferred", ((Node) handler.getFactory().getFeatures().get(MY_FEATURE_NAME)).isConfirmed());
359     }
360
361     public void testUnspecifiedInboundPackageDependencyIsConfirmed() throws SAXException {
362         Attributes attsEmpty = new AttributesImpl();
363         AttributesImpl attsPackage = new AttributesImpl();
364         attsPackage.addAttribute(null, null, "type", null, "package");
365
366         handler.startDocument();
367         handler.startElement(null, null, "dependencies", attsEmpty);
368         handler.startElement(null, null, "package", attsEmpty);
369         handler.startElement(null, null, "name", attsEmpty);
370         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
371         handler.endElement(null, null, "name");
372         handler.startElement(null, null, "inbound", attsPackage);
373         handler.characters(OTHER_PACKAGE_NAME.toCharArray(), 0, OTHER_PACKAGE_NAME.length());
374         handler.endElement(null, null, "inbound");
375         handler.endElement(null, null, "package");
376         handler.endElement(null, null, "dependencies");
377         handler.endDocument();
378
379         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
380         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
381         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
382         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
383         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
384
385         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
386
387         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
388     }
389
390     public void testInferredInboundPackageDependency() throws SAXException {
391         AttributesImpl attsEmpty = new AttributesImpl();
392         AttributesImpl attsNo = new AttributesImpl();
393         attsNo.addAttribute(null, null, "confirmed", null, "no");
394         AttributesImpl attsPackageNo = new AttributesImpl();
395         attsPackageNo.addAttribute(null, null, "type", null, "package");
396         attsPackageNo.addAttribute(null, null, "confirmed", null, "no");
397
398         handler.startDocument();
399         handler.startElement(null, null, "dependencies", attsEmpty);
400         handler.startElement(null, null, "package", attsNo);
401         handler.startElement(null, null, "name", attsEmpty);
402         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
403         handler.endElement(null, null, "name");
404         handler.startElement(null, null, "inbound", attsPackageNo);
405         handler.characters(OTHER_PACKAGE_NAME.toCharArray(), 0, OTHER_PACKAGE_NAME.length());
406         handler.endElement(null, null, "inbound");
407         handler.endElement(null, null, "package");
408         handler.endElement(null, null, "dependencies");
409         handler.endDocument();
410
411         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
412         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
413         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
414         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
415         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
416
417         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
418
419         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
420     }
421
422     public void testConfirmedInboundPackageDependency() throws SAXException {
423         AttributesImpl attsEmpty = new AttributesImpl();
424         AttributesImpl attsYes = new AttributesImpl();
425         attsYes.addAttribute(null, null, "confirmed", null, "yes");
426         AttributesImpl attsPackageYes = new AttributesImpl();
427         attsPackageYes.addAttribute(null, null, "type", null, "package");
428         attsPackageYes.addAttribute(null, null, "confirmed", null, "yes");
429
430         handler.startDocument();
431         handler.startElement(null, null, "dependencies", attsEmpty);
432         handler.startElement(null, null, "package", attsYes);
433         handler.startElement(null, null, "name", attsEmpty);
434         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
435         handler.endElement(null, null, "name");
436         handler.startElement(null, null, "inbound", attsPackageYes);
437         handler.characters(OTHER_PACKAGE_NAME.toCharArray(), 0, OTHER_PACKAGE_NAME.length());
438         handler.endElement(null, null, "inbound");
439         handler.endElement(null, null, "package");
440         handler.endElement(null, null, "dependencies");
441         handler.endDocument();
442
443         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
444         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
445         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
446         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
447         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
448
449         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
450
451         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
452     }
453
454     public void testUnspecifiedOutboundPackageDependencyIsConfirmed() throws SAXException {
455         Attributes attsEmpty = new AttributesImpl();
456         AttributesImpl attsPackage = new AttributesImpl();
457         attsPackage.addAttribute(null, null, "type", null, "package");
458
459         handler.startDocument();
460         handler.startElement(null, null, "dependencies", attsEmpty);
461         handler.startElement(null, null, "package", attsEmpty);
462         handler.startElement(null, null, "name", attsEmpty);
463         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
464         handler.endElement(null, null, "name");
465         handler.startElement(null, null, "outbound", attsPackage);
466         handler.characters(OTHER_PACKAGE_NAME.toCharArray(), 0, OTHER_PACKAGE_NAME.length());
467         handler.endElement(null, null, "outbound");
468         handler.endElement(null, null, "package");
469         handler.endElement(null, null, "dependencies");
470         handler.endDocument();
471
472         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
473         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
474         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
475         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
476         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
477
478         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
479
480         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
481     }
482
483     public void testInferredOutboundPackageDependency() throws SAXException {
484         AttributesImpl attsEmpty = new AttributesImpl();
485         AttributesImpl attsNo = new AttributesImpl();
486         attsNo.addAttribute(null, null, "confirmed", null, "no");
487         AttributesImpl attsPackageNo = new AttributesImpl();
488         attsPackageNo.addAttribute(null, null, "type", null, "package");
489         attsPackageNo.addAttribute(null, null, "confirmed", null, "no");
490
491         handler.startDocument();
492         handler.startElement(null, null, "dependencies", attsEmpty);
493         handler.startElement(null, null, "package", attsNo);
494         handler.startElement(null, null, "name", attsEmpty);
495         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
496         handler.endElement(null, null, "name");
497         handler.startElement(null, null, "outbound", attsPackageNo);
498         handler.characters(OTHER_PACKAGE_NAME.toCharArray(), 0, OTHER_PACKAGE_NAME.length());
499         handler.endElement(null, null, "outbound");
500         handler.endElement(null, null, "package");
501         handler.endElement(null, null, "dependencies");
502         handler.endDocument();
503
504         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
505         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
506         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
507         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
508         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
509
510         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
511
512         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
513     }
514
515     public void testConfirmedOutboundPackageDependency() throws SAXException {
516         AttributesImpl attsEmpty = new AttributesImpl();
517         AttributesImpl attsYes = new AttributesImpl();
518         attsYes.addAttribute(null, null, "confirmed", null, "yes");
519         AttributesImpl attsPackageYes = new AttributesImpl();
520         attsPackageYes.addAttribute(null, null, "type", null, "package");
521         attsPackageYes.addAttribute(null, null, "confirmed", null, "yes");
522
523         handler.startDocument();
524         handler.startElement(null, null, "dependencies", attsEmpty);
525         handler.startElement(null, null, "package", attsYes);
526         handler.startElement(null, null, "name", attsEmpty);
527         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
528         handler.endElement(null, null, "name");
529         handler.startElement(null, null, "outbound", attsPackageYes);
530         handler.characters(OTHER_PACKAGE_NAME.toCharArray(), 0, OTHER_PACKAGE_NAME.length());
531         handler.endElement(null, null, "outbound");
532         handler.endElement(null, null, "package");
533         handler.endElement(null, null, "dependencies");
534         handler.endDocument();
535
536         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
537         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
538         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
539         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
540         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
541
542         assertEquals("nb classes", 0, handler.getFactory().getClasses().size());
543
544         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
545     }
546
547     public void testUnspecifiedInboundClassDependencyIsConfirmed() throws SAXException {
548         Attributes attsEmpty = new AttributesImpl();
549         AttributesImpl attsClass = new AttributesImpl();
550         attsClass.addAttribute(null, null, "type", null, "class");
551
552         handler.startDocument();
553         handler.startElement(null, null, "dependencies", attsEmpty);
554         handler.startElement(null, null, "package", attsEmpty);
555         handler.startElement(null, null, "name", attsEmpty);
556         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
557         handler.endElement(null, null, "name");
558         handler.startElement(null, null, "inbound", attsClass);
559         handler.characters(OTHER_CLASS_NAME.toCharArray(), 0, OTHER_CLASS_NAME.length());
560         handler.endElement(null, null, "inbound");
561         handler.endElement(null, null, "package");
562         handler.endElement(null, null, "dependencies");
563         handler.endDocument();
564
565         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
566         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
567         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
568         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
569         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
570
571         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
572         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
573         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
574
575         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
576     }
577
578     public void testInferredInboundClassDependency() throws SAXException {
579         AttributesImpl attsEmpty = new AttributesImpl();
580         AttributesImpl attsNo = new AttributesImpl();
581         attsNo.addAttribute(null, null, "confirmed", null, "no");
582         AttributesImpl attsClassNo = new AttributesImpl();
583         attsClassNo.addAttribute(null, null, "type", null, "class");
584         attsClassNo.addAttribute(null, null, "confirmed", null, "no");
585
586         handler.startDocument();
587         handler.startElement(null, null, "dependencies", attsEmpty);
588         handler.startElement(null, null, "package", attsNo);
589         handler.startElement(null, null, "name", attsEmpty);
590         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
591         handler.endElement(null, null, "name");
592         handler.startElement(null, null, "inbound", attsClassNo);
593         handler.characters(OTHER_CLASS_NAME.toCharArray(), 0, OTHER_CLASS_NAME.length());
594         handler.endElement(null, null, "inbound");
595         handler.endElement(null, null, "package");
596         handler.endElement(null, null, "dependencies");
597         handler.endDocument();
598
599         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
600         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
601         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
602         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
603         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
604
605         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
606         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
607         assertFalse("class is confirmed", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
608
609         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
610     }
611
612     public void testConfirmedInboundClassDependency() throws SAXException {
613         AttributesImpl attsEmpty = new AttributesImpl();
614         AttributesImpl attsYes = new AttributesImpl();
615         attsYes.addAttribute(null, null, "confirmed", null, "yes");
616         AttributesImpl attsClassYes = new AttributesImpl();
617         attsClassYes.addAttribute(null, null, "type", null, "class");
618         attsClassYes.addAttribute(null, null, "confirmed", null, "yes");
619
620         handler.startDocument();
621         handler.startElement(null, null, "dependencies", attsEmpty);
622         handler.startElement(null, null, "package", attsYes);
623         handler.startElement(null, null, "name", attsEmpty);
624         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
625         handler.endElement(null, null, "name");
626         handler.startElement(null, null, "inbound", attsClassYes);
627         handler.characters(OTHER_CLASS_NAME.toCharArray(), 0, OTHER_CLASS_NAME.length());
628         handler.endElement(null, null, "inbound");
629         handler.endElement(null, null, "package");
630         handler.endElement(null, null, "dependencies");
631         handler.endDocument();
632
633         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
634         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
635         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
636         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
637         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
638
639         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
640         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
641         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
642
643         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
644     }
645
646     public void testUnspecifiedOutboundClassDependencyIsConfirmed() throws SAXException {
647         Attributes attsEmpty = new AttributesImpl();
648         AttributesImpl attsClass = new AttributesImpl();
649         attsClass.addAttribute(null, null, "type", null, "class");
650
651         handler.startDocument();
652         handler.startElement(null, null, "dependencies", attsEmpty);
653         handler.startElement(null, null, "package", attsEmpty);
654         handler.startElement(null, null, "name", attsEmpty);
655         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
656         handler.endElement(null, null, "name");
657         handler.startElement(null, null, "outbound", attsClass);
658         handler.characters(OTHER_CLASS_NAME.toCharArray(), 0, OTHER_CLASS_NAME.length());
659         handler.endElement(null, null, "outbound");
660         handler.endElement(null, null, "package");
661         handler.endElement(null, null, "dependencies");
662         handler.endDocument();
663
664         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
665         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
666         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
667         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
668         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
669
670         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
671         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
672         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
673
674         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
675     }
676
677     public void testInferredOutboundClassDependency() throws SAXException {
678         AttributesImpl attsEmpty = new AttributesImpl();
679         AttributesImpl attsNo = new AttributesImpl();
680         attsNo.addAttribute(null, null, "confirmed", null, "no");
681         AttributesImpl attsClassNo = new AttributesImpl();
682         attsClassNo.addAttribute(null, null, "type", null, "class");
683         attsClassNo.addAttribute(null, null, "confirmed", null, "no");
684
685         handler.startDocument();
686         handler.startElement(null, null, "dependencies", attsEmpty);
687         handler.startElement(null, null, "package", attsNo);
688         handler.startElement(null, null, "name", attsEmpty);
689         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
690         handler.endElement(null, null, "name");
691         handler.startElement(null, null, "outbound", attsClassNo);
692         handler.characters(OTHER_CLASS_NAME.toCharArray(), 0, OTHER_CLASS_NAME.length());
693         handler.endElement(null, null, "outbound");
694         handler.endElement(null, null, "package");
695         handler.endElement(null, null, "dependencies");
696         handler.endDocument();
697
698         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
699         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
700         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
701         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
702         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
703
704         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
705         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
706         assertFalse("class is confirmed", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
707
708         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
709     }
710
711     public void testConfirmedOutboundClassDependency() throws SAXException {
712         AttributesImpl attsEmpty = new AttributesImpl();
713         AttributesImpl attsYes = new AttributesImpl();
714         attsYes.addAttribute(null, null, "confirmed", null, "yes");
715         AttributesImpl attsClassYes = new AttributesImpl();
716         attsClassYes.addAttribute(null, null, "type", null, "class");
717         attsClassYes.addAttribute(null, null, "confirmed", null, "yes");
718
719         handler.startDocument();
720         handler.startElement(null, null, "dependencies", attsEmpty);
721         handler.startElement(null, null, "package", attsYes);
722         handler.startElement(null, null, "name", attsEmpty);
723         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
724         handler.endElement(null, null, "name");
725         handler.startElement(null, null, "outbound", attsClassYes);
726         handler.characters(OTHER_CLASS_NAME.toCharArray(), 0, OTHER_CLASS_NAME.length());
727         handler.endElement(null, null, "outbound");
728         handler.endElement(null, null, "package");
729         handler.endElement(null, null, "dependencies");
730         handler.endDocument();
731
732         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
733         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
734         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
735         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
736         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
737
738         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
739         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
740         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
741
742         assertEquals("nb features", 0, handler.getFactory().getFeatures().size());
743     }
744
745 // 123456
746

747     
748     public void testUnspecifiedInboundFeatureDependencyIsConfirmed() throws SAXException {
749         Attributes attsEmpty = new AttributesImpl();
750         AttributesImpl attsFeature = new AttributesImpl();
751         attsFeature.addAttribute(null, null, "type", null, "feature");
752
753         handler.startDocument();
754         handler.startElement(null, null, "dependencies", attsEmpty);
755         handler.startElement(null, null, "package", attsEmpty);
756         handler.startElement(null, null, "name", attsEmpty);
757         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
758         handler.endElement(null, null, "name");
759         handler.startElement(null, null, "inbound", attsFeature);
760         handler.characters(OTHER_FEATURE_NAME.toCharArray(), 0, OTHER_FEATURE_NAME.length());
761         handler.endElement(null, null, "inbound");
762         handler.endElement(null, null, "package");
763         handler.endElement(null, null, "dependencies");
764         handler.endDocument();
765
766         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
767         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
768         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
769         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
770         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
771
772         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
773         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
774         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
775
776         assertEquals("nb features", 1, handler.getFactory().getFeatures().size());
777         assertNotNull("missing feature", handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME));
778         assertTrue("feature is inferred", ((Node) handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME)).isConfirmed());
779     }
780
781     public void testInferredInboundFeatureDependency() throws SAXException {
782         AttributesImpl attsEmpty = new AttributesImpl();
783         AttributesImpl attsNo = new AttributesImpl();
784         attsNo.addAttribute(null, null, "confirmed", null, "no");
785         AttributesImpl attsFeatureNo = new AttributesImpl();
786         attsFeatureNo.addAttribute(null, null, "type", null, "feature");
787         attsFeatureNo.addAttribute(null, null, "confirmed", null, "no");
788
789         handler.startDocument();
790         handler.startElement(null, null, "dependencies", attsEmpty);
791         handler.startElement(null, null, "package", attsNo);
792         handler.startElement(null, null, "name", attsEmpty);
793         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
794         handler.endElement(null, null, "name");
795         handler.startElement(null, null, "inbound", attsFeatureNo);
796         handler.characters(OTHER_FEATURE_NAME.toCharArray(), 0, OTHER_FEATURE_NAME.length());
797         handler.endElement(null, null, "inbound");
798         handler.endElement(null, null, "package");
799         handler.endElement(null, null, "dependencies");
800         handler.endDocument();
801
802         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
803         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
804         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
805         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
806         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
807
808         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
809         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
810         assertFalse("class is confirmed", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
811
812         assertEquals("nb features", 1, handler.getFactory().getFeatures().size());
813         assertNotNull("missing feature", handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME));
814         assertFalse("feature is confirmed", ((Node) handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME)).isConfirmed());
815     }
816
817     public void testConfirmedInboundFeatureDependency() throws SAXException {
818         AttributesImpl attsEmpty = new AttributesImpl();
819         AttributesImpl attsYes = new AttributesImpl();
820         attsYes.addAttribute(null, null, "confirmed", null, "yes");
821         AttributesImpl attsFeatureYes = new AttributesImpl();
822         attsFeatureYes.addAttribute(null, null, "type", null, "feature");
823         attsFeatureYes.addAttribute(null, null, "confirmed", null, "yes");
824
825         handler.startDocument();
826         handler.startElement(null, null, "dependencies", attsEmpty);
827         handler.startElement(null, null, "package", attsYes);
828         handler.startElement(null, null, "name", attsEmpty);
829         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
830         handler.endElement(null, null, "name");
831         handler.startElement(null, null, "inbound", attsFeatureYes);
832         handler.characters(OTHER_FEATURE_NAME.toCharArray(), 0, OTHER_FEATURE_NAME.length());
833         handler.endElement(null, null, "inbound");
834         handler.endElement(null, null, "package");
835         handler.endElement(null, null, "dependencies");
836         handler.endDocument();
837
838         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
839         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
840         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
841         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
842         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
843
844         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
845         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
846         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
847
848         assertEquals("nb features", 1, handler.getFactory().getFeatures().size());
849         assertNotNull("missing feature", handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME));
850         assertTrue("feature is inferred", ((Node) handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME)).isConfirmed());
851     }
852
853     public void testUnspecifiedOutboundFeatureDependencyIsConfirmed() throws SAXException {
854         Attributes attsEmpty = new AttributesImpl();
855         AttributesImpl attsFeature = new AttributesImpl();
856         attsFeature.addAttribute(null, null, "type", null, "feature");
857
858         handler.startDocument();
859         handler.startElement(null, null, "dependencies", attsEmpty);
860         handler.startElement(null, null, "package", attsEmpty);
861         handler.startElement(null, null, "name", attsEmpty);
862         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
863         handler.endElement(null, null, "name");
864         handler.startElement(null, null, "outbound", attsFeature);
865         handler.characters(OTHER_FEATURE_NAME.toCharArray(), 0, OTHER_FEATURE_NAME.length());
866         handler.endElement(null, null, "outbound");
867         handler.endElement(null, null, "package");
868         handler.endElement(null, null, "dependencies");
869         handler.endDocument();
870
871         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
872         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
873         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
874         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
875         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
876
877         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
878         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
879         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
880
881         assertEquals("nb features", 1, handler.getFactory().getFeatures().size());
882         assertNotNull("missing feature", handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME));
883         assertTrue("feature is inferred", ((Node) handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME)).isConfirmed());
884     }
885
886     public void testInferredOutboundFeatureDependency() throws SAXException {
887         AttributesImpl attsEmpty = new AttributesImpl();
888         AttributesImpl attsNo = new AttributesImpl();
889         attsNo.addAttribute(null, null, "confirmed", null, "no");
890         AttributesImpl attsFeatureNo = new AttributesImpl();
891         attsFeatureNo.addAttribute(null, null, "type", null, "feature");
892         attsFeatureNo.addAttribute(null, null, "confirmed", null, "no");
893
894         handler.startDocument();
895         handler.startElement(null, null, "dependencies", attsEmpty);
896         handler.startElement(null, null, "package", attsNo);
897         handler.startElement(null, null, "name", attsEmpty);
898         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
899         handler.endElement(null, null, "name");
900         handler.startElement(null, null, "outbound", attsFeatureNo);
901         handler.characters(OTHER_FEATURE_NAME.toCharArray(), 0, OTHER_FEATURE_NAME.length());
902         handler.endElement(null, null, "outbound");
903         handler.endElement(null, null, "package");
904         handler.endElement(null, null, "dependencies");
905         handler.endDocument();
906
907         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
908         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
909         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
910         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
911         assertFalse("package is confirmed", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
912
913         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
914         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
915         assertFalse("class is confirmed", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
916
917         assertEquals("nb features", 1, handler.getFactory().getFeatures().size());
918         assertNotNull("missing feature", handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME));
919         assertFalse("feature is confirmed", ((Node) handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME)).isConfirmed());
920     }
921
922     public void testConfirmedOutboundFeatureDependency() throws SAXException {
923         AttributesImpl attsEmpty = new AttributesImpl();
924         AttributesImpl attsYes = new AttributesImpl();
925         attsYes.addAttribute(null, null, "confirmed", null, "yes");
926         AttributesImpl attsFeatureYes = new AttributesImpl();
927         attsFeatureYes.addAttribute(null, null, "type", null, "feature");
928         attsFeatureYes.addAttribute(null, null, "confirmed", null, "yes");
929
930         handler.startDocument();
931         handler.startElement(null, null, "dependencies", attsEmpty);
932         handler.startElement(null, null, "package", attsYes);
933         handler.startElement(null, null, "name", attsEmpty);
934         handler.characters(MY_PACKAGE_NAME.toCharArray(), 0, MY_PACKAGE_NAME.length());
935         handler.endElement(null, null, "name");
936         handler.startElement(null, null, "outbound", attsFeatureYes);
937         handler.characters(OTHER_FEATURE_NAME.toCharArray(), 0, OTHER_FEATURE_NAME.length());
938         handler.endElement(null, null, "outbound");
939         handler.endElement(null, null, "package");
940         handler.endElement(null, null, "dependencies");
941         handler.endDocument();
942
943         assertEquals("nb packages", 2, handler.getFactory().getPackages().size());
944         assertNotNull("missing package", handler.getFactory().getPackages().get(MY_PACKAGE_NAME));
945         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(MY_PACKAGE_NAME)).isConfirmed());
946         assertNotNull("missing package", handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME));
947         assertTrue("package is inferred", ((Node) handler.getFactory().getPackages().get(OTHER_PACKAGE_NAME)).isConfirmed());
948
949         assertEquals("nb classes", 1, handler.getFactory().getClasses().size());
950         assertNotNull("missing class", handler.getFactory().getClasses().get(OTHER_CLASS_NAME));
951         assertTrue("class is inferred", ((Node) handler.getFactory().getClasses().get(OTHER_CLASS_NAME)).isConfirmed());
952
953         assertEquals("nb features", 1, handler.getFactory().getFeatures().size());
954         assertNotNull("missing feature", handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME));
955         assertTrue("feature is inferred", ((Node) handler.getFactory().getFeatures().get(OTHER_FEATURE_NAME)).isConfirmed());
956     }
957 }
958
Popular Tags