View Javadoc
1   package org.eclipse.aether.internal.impl.collect;
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 org.eclipse.aether.DefaultRepositorySystemSession;
23  import org.eclipse.aether.artifact.DefaultArtifact;
24  import org.eclipse.aether.graph.Dependency;
25  import org.eclipse.aether.internal.test.util.TestVersion;
26  import org.eclipse.aether.resolution.VersionRangeRequest;
27  import org.eclipse.aether.resolution.VersionRangeResult;
28  import org.eclipse.aether.version.Version;
29  import org.junit.Test;
30  
31  import java.util.Arrays;
32  import java.util.Collections;
33  import java.util.Iterator;
34  import java.util.NoSuchElementException;
35  
36  import static org.junit.Assert.assertEquals;
37  import static org.junit.Assert.assertTrue;
38  
39  public class DefaultVersionFilterContextTest
40  {
41      private static final Dependency FOO_DEPENDENCY = new Dependency( new DefaultArtifact( "group-id:foo:1.0" ), "test" );
42      private static final Dependency BAR_DEPENDENCY = new Dependency( new DefaultArtifact( "group-id:bar:1.0" ), "test" );
43  
44      @Test
45      public void iteratorOneItem()
46      {
47          DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() );
48          VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() );
49          result.addVersion( new TestVersion( "1.0" ) );
50          context.set( FOO_DEPENDENCY, result );
51  
52          Iterator<Version> iterator = context.iterator();
53          assertTrue( iterator.hasNext() );
54          assertEquals( new TestVersion( "1.0" ), iterator.next() );
55      }
56  
57      @Test
58      public void getCountOneItem()
59      {
60          DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() );
61          VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() );
62          result.addVersion( new TestVersion( "1.0" ) );
63          context.set( FOO_DEPENDENCY, result );
64  
65          assertEquals(1, context.getCount());
66      }
67  
68      @Test
69      public void getOneItem()
70      {
71          DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() );
72          VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() );
73          result.addVersion( new TestVersion( "1.0" ) );
74          context.set( FOO_DEPENDENCY, result );
75  
76          assertEquals( Collections.singletonList( new TestVersion( "1.0") ), context.get() );
77      }
78  
79      @Test
80      public void iteratorDelete()
81      {
82          DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() );
83          VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() );
84          result.addVersion( new TestVersion( "1.0" ) );
85          context.set( FOO_DEPENDENCY, result );
86  
87          Iterator<Version> iterator = context.iterator();
88          iterator.next();
89          iterator.remove();
90  
91          assertEquals( 0, context.getCount() );
92      }
93  
94      @Test(expected = NoSuchElementException.class)
95      public void nextBeyondEnd()
96      {
97          DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() );
98          VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() );
99          result.addVersion( new TestVersion( "1.0" ) );
100         context.set( FOO_DEPENDENCY, result );
101 
102         Iterator<Version> iterator = context.iterator();
103         iterator.next();
104         iterator.next();
105     }
106 
107     @Test
108     public void removeOneOfOne()
109     {
110         DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() );
111         VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() );
112         result.addVersion( new TestVersion( "1.0" ) );
113         context.set( FOO_DEPENDENCY, result );
114 
115         Iterator<Version> iterator = context.iterator();
116         iterator.next();
117         iterator.remove();
118 
119         assertEquals( Collections.emptyList(), context.get() );
120     }
121 
122     @Test
123     public void removeOneOfTwo()
124     {
125         DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() );
126         VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() );
127         result.addVersion( new TestVersion( "1.0" ) );
128         result.addVersion( new TestVersion( "2.0" ) );
129         context.set( FOO_DEPENDENCY, result );
130 
131         Iterator<Version> iterator = context.iterator();
132         iterator.next();
133         iterator.remove();
134 
135         assertEquals( Collections.singletonList( new TestVersion( "2.0") ), context.get() );
136     }
137 
138     @Test
139     public void removeOneOfThree()
140     {
141         DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() );
142         VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() );
143         result.addVersion( new TestVersion( "1.0" ) );
144         result.addVersion( new TestVersion( "2.0" ) );
145         result.addVersion( new TestVersion( "3.0" ) );
146         context.set( FOO_DEPENDENCY, result );
147 
148         Iterator<Version> iterator = context.iterator();
149         iterator.next();
150         iterator.remove();
151 
152         assertEquals( Arrays.asList( new TestVersion( "2.0" ), new TestVersion( "3.0" ) ), context.get() );
153     }
154 
155     @Test
156     public void setTwice()
157     {
158         DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() );
159         VersionRangeResult fooResult = new VersionRangeResult( new VersionRangeRequest() );
160         fooResult.addVersion( new TestVersion( "1.0" ) );
161         context.set( FOO_DEPENDENCY, fooResult );
162 
163         VersionRangeResult barResult = new VersionRangeResult( new VersionRangeRequest() );
164         barResult.addVersion( new TestVersion( "1.0" ) );
165         barResult.addVersion( new TestVersion( "2.0" ) );
166         context.set( BAR_DEPENDENCY, barResult );
167 
168         assertEquals( Arrays.asList( new TestVersion( "1.0" ), new TestVersion( "2.0" ) ), context.get() );
169     }
170 }