1 package org.eclipse.aether.util.graph.selector;
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.artifact.DefaultArtifact;
25 import org.eclipse.aether.collection.DependencyCollectionContext;
26 import org.eclipse.aether.collection.DependencySelector;
27 import org.eclipse.aether.graph.Dependency;
28 import org.junit.Test;
29
30 public class AndDependencySelectorTest
31 {
32
33 static class DummyDependencySelector
34 implements DependencySelector
35 {
36
37 private final boolean select;
38
39 private final DependencySelector child;
40
41 public DummyDependencySelector()
42 {
43 this( true );
44 }
45
46 public DummyDependencySelector( boolean select )
47 {
48 this.select = select;
49 this.child = this;
50 }
51
52 public DummyDependencySelector( boolean select, DependencySelector child )
53 {
54 this.select = select;
55 this.child = child;
56 }
57
58 public boolean selectDependency( Dependency dependency )
59 {
60 return select;
61 }
62
63 public DependencySelector deriveChildSelector( DependencyCollectionContext context )
64 {
65 return child;
66 }
67
68 }
69
70 @Test
71 public void testNewInstance()
72 {
73 assertNull( AndDependencySelector.newInstance( null, null ) );
74 DependencySelector selector = new DummyDependencySelector();
75 assertSame( selector, AndDependencySelector.newInstance( selector, null ) );
76 assertSame( selector, AndDependencySelector.newInstance( null, selector ) );
77 assertSame( selector, AndDependencySelector.newInstance( selector, selector ) );
78 assertNotNull( AndDependencySelector.newInstance( selector, new DummyDependencySelector() ) );
79 }
80
81 @Test
82 public void testTraverseDependency()
83 {
84 Dependency dependency = new Dependency( new DefaultArtifact( "g:a:v:1" ), "runtime" );
85
86 DependencySelector selector = new AndDependencySelector();
87 assertTrue( selector.selectDependency( dependency ) );
88
89 selector =
90 new AndDependencySelector( new DummyDependencySelector( false ), new DummyDependencySelector( false ) );
91 assertFalse( selector.selectDependency( dependency ) );
92
93 selector =
94 new AndDependencySelector( new DummyDependencySelector( true ), new DummyDependencySelector( false ) );
95 assertFalse( selector.selectDependency( dependency ) );
96
97 selector = new AndDependencySelector( new DummyDependencySelector( true ), new DummyDependencySelector( true ) );
98 assertTrue( selector.selectDependency( dependency ) );
99 }
100
101 @Test
102 public void testDeriveChildSelector_Unchanged()
103 {
104 DependencySelector other1 = new DummyDependencySelector( true );
105 DependencySelector other2 = new DummyDependencySelector( false );
106 DependencySelector selector = new AndDependencySelector( other1, other2 );
107 assertSame( selector, selector.deriveChildSelector( null ) );
108 }
109
110 @Test
111 public void testDeriveChildSelector_OneRemaining()
112 {
113 DependencySelector other1 = new DummyDependencySelector( true );
114 DependencySelector other2 = new DummyDependencySelector( false, null );
115 DependencySelector selector = new AndDependencySelector( other1, other2 );
116 assertSame( other1, selector.deriveChildSelector( null ) );
117 }
118
119 @Test
120 public void testDeriveChildSelector_ZeroRemaining()
121 {
122 DependencySelector other1 = new DummyDependencySelector( true, null );
123 DependencySelector other2 = new DummyDependencySelector( false, null );
124 DependencySelector selector = new AndDependencySelector( other1, other2 );
125 assertNull( selector.deriveChildSelector( null ) );
126 }
127
128 @Test
129 public void testEquals()
130 {
131 DependencySelector other1 = new DummyDependencySelector( true );
132 DependencySelector other2 = new DummyDependencySelector( false );
133 DependencySelector selector1 = new AndDependencySelector( other1, other2 );
134 DependencySelector selector2 = new AndDependencySelector( other2, other1 );
135 DependencySelector selector3 = new AndDependencySelector( other1 );
136 assertEquals( selector1, selector1 );
137 assertEquals( selector1, selector2 );
138 assertNotEquals( selector1, selector3 );
139 assertNotEquals( selector1, this );
140 assertNotEquals( selector1, null );
141 }
142
143 @Test
144 public void testHashCode()
145 {
146 DependencySelector other1 = new DummyDependencySelector( true );
147 DependencySelector other2 = new DummyDependencySelector( false );
148 DependencySelector selector1 = new AndDependencySelector( other1, other2 );
149 DependencySelector selector2 = new AndDependencySelector( other2, other1 );
150 assertEquals( selector1.hashCode(), selector2.hashCode() );
151 }
152
153 }