EMMA Coverage Report (generated Mon Nov 29 14:43:38 PST 2010)
[all classes][com.jeantessier.dependency]

COVERAGE SUMMARY FOR SOURCE FILE [TestClosureOutboundSelector.java]

nameclass, %method, %block, %line, %
TestClosureOutboundSelector.java100% (1/1)100% (31/31)100% (1436/1436)100% (244/244)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TestClosureOutboundSelector100% (1/1)100% (31/31)100% (1436/1436)100% (244/244)
TestClosureOutboundSelector (): void 100% (1/1)100% (3/3)100% (1/1)
setUp (): void 100% (1/1)100% (67/67)100% (15/15)
testCoverage (): void 100% (1/1)100% (17/17)100% (5/5)
testFactory (): void 100% (1/1)100% (15/15)100% (4/4)
testFollowToConfirmedClass (): void 100% (1/1)100% (36/36)100% (6/6)
testFollowToConfirmedFeature (): void 100% (1/1)100% (36/36)100% (6/6)
testFollowToConfirmedPackage (): void 100% (1/1)100% (36/36)100% (6/6)
testFollowToInferredClass (): void 100% (1/1)100% (32/32)100% (5/5)
testFollowToInferredFeature (): void 100% (1/1)100% (32/32)100% (5/5)
testFollowToInferredPackage (): void 100% (1/1)100% (32/32)100% (5/5)
testOneCopiedNode (): void 100% (1/1)100% (195/195)100% (24/24)
testOneSelectedNode (): void 100% (1/1)100% (35/35)100% (6/6)
testReset (): void 100% (1/1)100% (42/42)100% (9/9)
testThreeCopiedNodesFromClass (): void 100% (1/1)100% (64/64)100% (11/11)
testThreeCopiedNodesFromFeature (): void 100% (1/1)100% (64/64)100% (11/11)
testThreeCopiedNodesFromPackage (): void 100% (1/1)100% (64/64)100% (11/11)
testThreeSelectedNodesFromClass (): void 100% (1/1)100% (55/55)100% (10/10)
testThreeSelectedNodesFromFeature (): void 100% (1/1)100% (55/55)100% (10/10)
testThreeSelectedNodesFromPackage (): void 100% (1/1)100% (55/55)100% (10/10)
testTwoCopiedNodeWithClassInCoverage (): void 100% (1/1)100% (59/59)100% (10/10)
testTwoCopiedNodeWithFeatureInCoverage (): void 100% (1/1)100% (59/59)100% (10/10)
testTwoCopiedNodeWithPackageInCoverage (): void 100% (1/1)100% (59/59)100% (10/10)
testTwoSelectedNodeWithClassInCoverage (): void 100% (1/1)100% (50/50)100% (9/9)
testTwoSelectedNodeWithFeatureInCoverage (): void 100% (1/1)100% (50/50)100% (9/9)
testTwoSelectedNodeWithPackageInCoverage (): void 100% (1/1)100% (50/50)100% (9/9)
testVisitConfirmedClass (): void 100% (1/1)100% (31/31)100% (5/5)
testVisitConfirmedFeature (): void 100% (1/1)100% (31/31)100% (5/5)
testVisitConfirmedPackage (): void 100% (1/1)100% (31/31)100% (5/5)
testVisitInferredClass (): void 100% (1/1)100% (27/27)100% (4/4)
testVisitInferredFeature (): void 100% (1/1)100% (27/27)100% (4/4)
testVisitInferredPackage (): void 100% (1/1)100% (27/27)100% (4/4)

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 
33package com.jeantessier.dependency;
34 
35import java.util.*;
36 
37import junit.framework.*;
38 
39public class TestClosureOutboundSelector extends TestCase {
40    private NodeFactory localFactory;
41 
42    private PackageNode a;
43    private ClassNode a_A;
44    private FeatureNode a_A_a;
45    
46    private PackageNode b;
47    private ClassNode b_B;
48    private FeatureNode b_B_b;
49    
50    private PackageNode c;
51    private ClassNode c_C;
52    private FeatureNode c_C_c;
53 
54    protected void setUp() throws Exception {
55        super.setUp();
56        
57        localFactory = new NodeFactory();
58 
59        NodeFactory factory = new NodeFactory();
60 
61        a = factory.createPackage("a");
62        a_A = factory.createClass("a.A");
63        a_A_a = factory.createFeature("a.A.a");
64        
65        b = factory.createPackage("b");
66        b_B = factory.createClass("b.B");
67        b_B_b = factory.createFeature("b.B.b");
68        
69        c = factory.createPackage("c");
70        c_C = factory.createClass("c.C");
71        c_C_c = factory.createFeature("c.C.c");
72 
73        a_A_a.addDependency(b_B_b);
74        b_B_b.addDependency(c_C_c);
75    }
76 
77    public void testFactory() {
78        ClosureOutboundSelector selector = new ClosureOutboundSelector();
79 
80        selector.setFactory(localFactory);
81 
82        assertEquals("factory", localFactory, selector.getFactory());
83    }
84 
85    public void testCoverage() {
86        Collection<Node> coverage = new ArrayList<Node>();
87 
88        ClosureOutboundSelector selector = new ClosureOutboundSelector();
89 
90        selector.setCoverage(coverage);
91 
92        assertEquals("coverage", coverage, selector.getCoverage());
93    }
94 
95    public void testOneSelectedNode() {
96        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
97        selector.traverseNodes(Collections.singleton(b_B_b));
98 
99        assertEquals("nodes in selection", 1, selector.getSelectedNodes().size());
100        assertEquals("c.C.c in selection", c_C_c, selector.getSelectedNodes().iterator().next());
101        assertSame("c.C.c in selection", c_C_c, selector.getSelectedNodes().iterator().next());
102    }
103 
104    public void testOneCopiedNode() {
105        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
106        selector.traverseNodes(Collections.singleton(b_B_b));
107 
108        assertEquals("packages in scope", 2, localFactory.getPackages().size());
109        assertEquals("classes in scope" , 2, localFactory.getClasses().size());
110        assertEquals("features in scope", 2, localFactory.getFeatures().size());
111 
112        assertEquals("package b in scope"    , b,     localFactory.getPackages().get("b"));
113        assertEquals("class b.B in scope"    , b_B,   localFactory.getClasses().get("b.B"));
114        assertEquals("feature b.B.b in scope", b_B_b, localFactory.getFeatures().get("b.B.b"));
115        assertEquals("package c in scope"    , c,     localFactory.getPackages().get("c"));
116        assertEquals("class c.C in scope"    , c_C,   localFactory.getClasses().get("c.C"));
117        assertEquals("feature c.C.c in scope", c_C_c, localFactory.getFeatures().get("c.C.c"));
118 
119        assertNotSame("package b in scope"    , b,     localFactory.getPackages().get("b"));
120        assertNotSame("class b.B in scope"    , b_B,   localFactory.getClasses().get("b.B"));
121        assertNotSame("feature b.B.b in scope", b_B_b, localFactory.getFeatures().get("b.B.b"));
122        assertNotSame("package c in scope"    , c,     localFactory.getPackages().get("c"));
123        assertNotSame("class c.C in scope"    , c_C,   localFactory.getClasses().get("c.C"));
124        assertNotSame("feature c.C.c in scope", c_C_c, localFactory.getFeatures().get("c.C.c"));
125 
126        assertEquals("nodes in selection", 1, selector.getCopiedNodes().size());
127        assertEquals("c.C.c in selection", c_C_c, selector.getCopiedNodes().iterator().next());
128        assertNotSame("c.C.c in selection", c_C_c, selector.getCopiedNodes().iterator().next());
129        assertSame("c.C.c in selection", localFactory.getFeatures().get("c.C.c"), selector.getCopiedNodes().iterator().next());
130        assertEquals("c.C.c's inbounds",  1, selector.getCopiedNodes().iterator().next().getInboundDependencies().size());
131        assertEquals("c.C.c's outbounds", 0, selector.getCopiedNodes().iterator().next().getOutboundDependencies().size());
132    }
133 
134    public void testThreeSelectedNodesFromPackage() {
135        b.addDependency(c);
136        b.addDependency(c_C);
137        b.addDependency(c_C_c);
138        
139        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
140        selector.traverseNodes(Collections.singleton(b));
141 
142        assertEquals("nodes in selection", 3, selector.getSelectedNodes().size());
143        assertTrue("c in selection",     selector.getSelectedNodes().contains(c));
144        assertTrue("c.C in selection",   selector.getSelectedNodes().contains(c_C));
145        assertTrue("c.C.c in selection", selector.getSelectedNodes().contains(c_C_c));
146    }
147 
148    public void testThreeSelectedNodesFromClass() {
149        b_B.addDependency(c);
150        b_B.addDependency(c_C);
151        b_B.addDependency(c_C_c);
152        
153        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
154        selector.traverseNodes(Collections.singleton(b_B));
155 
156        assertEquals("nodes in selection", 3, selector.getSelectedNodes().size());
157        assertTrue("c in selection",     selector.getSelectedNodes().contains(c));
158        assertTrue("c.C in selection",   selector.getSelectedNodes().contains(c_C));
159        assertTrue("c.C.c in selection", selector.getSelectedNodes().contains(c_C_c));
160    }
161 
162    public void testThreeSelectedNodesFromFeature() {
163        b_B_b.addDependency(c);
164        b_B_b.addDependency(c_C);
165        b_B_b.addDependency(c_C_c);
166        
167        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
168        selector.traverseNodes(Collections.singleton(b_B_b));
169 
170        assertEquals("nodes in selection", 3, selector.getSelectedNodes().size());
171        assertTrue("c in selection",     selector.getSelectedNodes().contains(c));
172        assertTrue("c.C in selection",   selector.getSelectedNodes().contains(c_C));
173        assertTrue("c.C.c in selection", selector.getSelectedNodes().contains(c_C_c));
174    }
175 
176    public void testThreeCopiedNodesFromPackage() {
177        b.addDependency(c);
178        b.addDependency(c_C);
179        b.addDependency(c_C_c);
180        
181        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
182        selector.traverseNodes(Collections.singleton(b));
183 
184        assertEquals("nodes in selection", 3, selector.getCopiedNodes().size());
185        assertTrue("c in selection",     selector.getCopiedNodes().contains(c));
186        assertTrue("c.C in selection",   selector.getCopiedNodes().contains(c_C));
187        assertTrue("c.C.c in selection", selector.getCopiedNodes().contains(c_C_c));
188 
189        assertEquals("b's outbounds", 3, localFactory.createPackage("b").getOutboundDependencies().size());
190    }
191 
192    public void testThreeCopiedNodesFromClass() {
193        b_B.addDependency(c);
194        b_B.addDependency(c_C);
195        b_B.addDependency(c_C_c);
196        
197        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
198        selector.traverseNodes(Collections.singleton(b_B));
199 
200        assertEquals("nodes in selection", 3, selector.getCopiedNodes().size());
201        assertTrue("c in selection",     selector.getCopiedNodes().contains(c));
202        assertTrue("c.C in selection",   selector.getCopiedNodes().contains(c_C));
203        assertTrue("c.C.c in selection", selector.getCopiedNodes().contains(c_C_c));
204 
205        assertEquals("b.B's outbounds", 3, localFactory.createClass("b.B").getOutboundDependencies().size());
206    }
207 
208    public void testThreeCopiedNodesFromFeature() {
209        b_B_b.addDependency(c);
210        b_B_b.addDependency(c_C);
211        b_B_b.addDependency(c_C_c);
212        
213        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
214        selector.traverseNodes(Collections.singleton(b_B_b));
215 
216        assertEquals("nodes in selection", 3, selector.getCopiedNodes().size());
217        assertTrue("c in selection",     selector.getCopiedNodes().contains(c));
218        assertTrue("c.C in selection",   selector.getCopiedNodes().contains(c_C));
219        assertTrue("c.C.c in selection", selector.getCopiedNodes().contains(c_C_c));
220 
221        assertEquals("b.B.b's outbounds", 3, localFactory.createFeature("b.B.b").getOutboundDependencies().size());
222    }
223 
224    public void testTwoSelectedNodeWithPackageInCoverage() {
225        b_B_b.addDependency(c);
226        b_B_b.addDependency(c_C);
227        b_B_b.addDependency(c_C_c);
228        
229        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.singleton(c));
230        selector.traverseNodes(Collections.singleton(b_B_b));
231 
232        assertEquals("nodes in selection", 2, selector.getSelectedNodes().size());
233        assertTrue("c.C in selection",   selector.getSelectedNodes().contains(c_C));
234        assertTrue("c.C.c in selection", selector.getSelectedNodes().contains(c_C_c));
235    }
236 
237    public void testTwoSelectedNodeWithClassInCoverage() {
238        b_B_b.addDependency(c);
239        b_B_b.addDependency(c_C);
240        b_B_b.addDependency(c_C_c);
241        
242        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.singleton(c_C));
243        selector.traverseNodes(Collections.singleton(b_B_b));
244 
245        assertEquals("nodes in selection", 2, selector.getSelectedNodes().size());
246        assertTrue("c in selection",     selector.getSelectedNodes().contains(c));
247        assertTrue("c.C.c in selection", selector.getSelectedNodes().contains(c_C_c));
248    }
249 
250    public void testTwoSelectedNodeWithFeatureInCoverage() {
251        b_B_b.addDependency(c);
252        b_B_b.addDependency(c_C);
253        b_B_b.addDependency(c_C_c);
254        
255        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.singleton(c_C_c));
256        selector.traverseNodes(Collections.singleton(b_B_b));
257 
258        assertEquals("nodes in selection", 2, selector.getSelectedNodes().size());
259        assertTrue("c in selection",   selector.getSelectedNodes().contains(c));
260        assertTrue("c.C in selection", selector.getSelectedNodes().contains(c_C));
261    }
262 
263    public void testTwoCopiedNodeWithPackageInCoverage() {
264        b_B_b.addDependency(c);
265        b_B_b.addDependency(c_C);
266        b_B_b.addDependency(c_C_c);
267        
268        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.singleton(c));
269        selector.traverseNodes(Collections.singleton(b_B_b));
270 
271        assertEquals("nodes in selection", 2, selector.getCopiedNodes().size());
272        assertTrue("c.C in selection",   selector.getCopiedNodes().contains(c_C));
273        assertTrue("c.C.c in selection", selector.getCopiedNodes().contains(c_C_c));
274 
275        assertEquals("b.B.b's outbounds", 2, localFactory.createFeature("b.B.b").getOutboundDependencies().size());
276    }
277 
278    public void testTwoCopiedNodeWithClassInCoverage() {
279        b_B_b.addDependency(c);
280        b_B_b.addDependency(c_C);
281        b_B_b.addDependency(c_C_c);
282        
283        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.singleton(c_C));
284        selector.traverseNodes(Collections.singleton(b_B_b));
285 
286        assertEquals("nodes in selection", 2, selector.getCopiedNodes().size());
287        assertTrue("c in selection",     selector.getCopiedNodes().contains(c));
288        assertTrue("c.C.c in selection", selector.getCopiedNodes().contains(c_C_c));
289 
290        assertEquals("b.B.b's outbounds", 2, localFactory.createFeature("b.B.b").getOutboundDependencies().size());
291    }
292 
293    public void testTwoCopiedNodeWithFeatureInCoverage() {
294        b_B_b.addDependency(c);
295        b_B_b.addDependency(c_C);
296        b_B_b.addDependency(c_C_c);
297        
298        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.singleton(c_C_c));
299        selector.traverseNodes(Collections.singleton(b_B_b));
300 
301        assertEquals("nodes in selection", 2, selector.getCopiedNodes().size());
302        assertTrue("c in selection",   selector.getCopiedNodes().contains(c));
303        assertTrue("c.C in selection", selector.getCopiedNodes().contains(c_C));
304 
305        assertEquals("b.B.b's outbounds", 2, localFactory.createFeature("b.B.b").getOutboundDependencies().size());
306    }
307 
308    public void testReset() {
309        NodeFactory localFactory  = new NodeFactory();
310 
311        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
312        selector.traverseNodes(Collections.singleton(b_B_b));
313 
314        assertEquals("nodes in selection", 1, selector.getSelectedNodes().size());
315        assertEquals("copied nodes",       1, selector.getCopiedNodes().size());
316 
317        selector.reset();
318        
319        assertEquals("nodes in selection", 0, selector.getSelectedNodes().size());
320        assertEquals("copied nodes",       0, selector.getCopiedNodes().size());
321    }
322 
323    public void testVisitInferredPackage() {
324        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
325        selector.traverseNodes(Collections.singleton(b));
326 
327        assertEquals("package.isConfirmed()", b.isConfirmed(), localFactory.getPackages().get(b.getName()).isConfirmed());
328    }
329 
330    public void testVisitConfirmedPackage() {
331        b.setConfirmed(true);
332        
333        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
334        selector.traverseNodes(Collections.singleton(b));
335 
336        assertEquals("package.isConfirmed()", b.isConfirmed(), localFactory.getPackages().get(b.getName()).isConfirmed());
337    }
338 
339    public void testFollowToInferredPackage() {
340        b.addDependency(c);
341        
342        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
343        selector.traverseNodes(Collections.singleton(b));
344 
345        assertEquals("package.isConfirmed()", c.isConfirmed(), localFactory.getPackages().get(c.getName()).isConfirmed());
346    }
347 
348    public void testFollowToConfirmedPackage() {
349        b.addDependency(c);
350        c.setConfirmed(true);
351        
352        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
353        selector.traverseNodes(Collections.singleton(b));
354 
355        assertEquals("package.isConfirmed()", c.isConfirmed(), localFactory.getPackages().get(c.getName()).isConfirmed());
356    }
357 
358    public void testVisitInferredClass() {
359        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
360        selector.traverseNodes(Collections.singleton(b_B));
361 
362        assertEquals("class.isConfirmed()", b_B.isConfirmed(), localFactory.getClasses().get(b_B.getName()).isConfirmed());
363    }
364 
365    public void testVisitConfirmedClass() {
366        b_B.setConfirmed(true);
367        
368        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
369        selector.traverseNodes(Collections.singleton(b_B));
370 
371        assertEquals("class.isConfirmed()", b_B.isConfirmed(), localFactory.getClasses().get(b_B.getName()).isConfirmed());
372    }
373 
374    public void testFollowToInferredClass() {
375        b_B.addDependency(c_C);
376        
377        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
378        selector.traverseNodes(Collections.singleton(b_B));
379 
380        assertEquals("class.isConfirmed()", c_C.isConfirmed(), localFactory.getClasses().get(c_C.getName()).isConfirmed());
381    }
382 
383    public void testFollowToConfirmedClass() {
384        b_B.addDependency(c_C);
385        c_C.setConfirmed(true);
386        
387        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
388        selector.traverseNodes(Collections.singleton(b_B));
389 
390        assertEquals("class.isConfirmed()", c_C.isConfirmed(), localFactory.getClasses().get(c_C.getName()).isConfirmed());
391    }
392 
393    public void testVisitInferredFeature() {
394        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
395        selector.traverseNodes(Collections.singleton(b_B_b));
396 
397        assertEquals("feature.isConfirmed()", b_B_b.isConfirmed(), localFactory.getFeatures().get(b_B_b.getName()).isConfirmed());
398    }
399 
400    public void testVisitConfirmedFeature() {
401        b_B_b.setConfirmed(true);
402        
403        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
404        selector.traverseNodes(Collections.singleton(b_B_b));
405 
406        assertEquals("feature.isConfirmed()", b_B_b.isConfirmed(), localFactory.getFeatures().get(b_B_b.getName()).isConfirmed());
407    }
408 
409    public void testFollowToInferredFeature() {
410        b_B_b.addDependency(c_C_c);
411        
412        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
413        selector.traverseNodes(Collections.singleton(b_B_b));
414 
415        assertEquals("feature.isConfirmed()", c_C_c.isConfirmed(), localFactory.getFeatures().get(c_C_c.getName()).isConfirmed());
416    }
417 
418    public void testFollowToConfirmedFeature() {
419        b_B_b.addDependency(c_C_c);
420        c_C_c.setConfirmed(true);
421        
422        ClosureOutboundSelector selector = new ClosureOutboundSelector(localFactory, Collections.<Node>emptySet());
423        selector.traverseNodes(Collections.singleton(b_B_b));
424 
425        assertEquals("feature.isConfirmed()", c_C_c.isConfirmed(), localFactory.getFeatures().get(c_C_c.getName()).isConfirmed());
426    }
427}

[all classes][com.jeantessier.dependency]
EMMA 2.0.5312 (C) Vladimir Roubtsov