1 package org.eclipse.aether.util.graph.visitor;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import static org.junit.Assert.*;
23
24 import org.eclipse.aether.graph.DependencyNode;
25 import org.eclipse.aether.graph.DependencyVisitor;
26 import org.eclipse.aether.internal.test.util.DependencyGraphParser;
27 import org.junit.Test;
28
29 public class TreeDependencyVisitorTest
30 {
31
32 private DependencyNode parse( String resource )
33 throws Exception
34 {
35 return new DependencyGraphParser( "visitor/tree/" ).parseResource( resource );
36 }
37
38 @Test
39 public void testDuplicateSuppression()
40 throws Exception
41 {
42 DependencyNode root = parse( "cycles.txt" );
43
44 RecordingVisitor rec = new RecordingVisitor();
45 TreeDependencyVisitor visitor = new TreeDependencyVisitor( rec );
46 root.accept( visitor );
47
48 assertEquals( ">a >b >c <c <b >d <d <a ", rec.buffer.toString() );
49 }
50
51 private static class RecordingVisitor
52 implements DependencyVisitor
53 {
54
55 StringBuilder buffer = new StringBuilder( 256 );
56
57 public boolean visitEnter( DependencyNode node )
58 {
59 buffer.append( '>' ).append( node.getDependency().getArtifact().getArtifactId() ).append( ' ' );
60 return true;
61 }
62
63 public boolean visitLeave( DependencyNode node )
64 {
65 buffer.append( '<' ).append( node.getDependency().getArtifact().getArtifactId() ).append( ' ' );
66 return true;
67 }
68
69 }
70
71 }