View Javadoc
1   package org.eclipse.aether.util.graph.selector;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   * 
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   * 
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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 }