View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.eclipse.aether.internal.impl.collect;
20  
21  import java.util.Arrays;
22  import java.util.Collections;
23  import java.util.Iterator;
24  import java.util.NoSuchElementException;
25  
26  import org.eclipse.aether.DefaultRepositorySystemSession;
27  import org.eclipse.aether.artifact.DefaultArtifact;
28  import org.eclipse.aether.graph.Dependency;
29  import org.eclipse.aether.internal.test.util.TestVersion;
30  import org.eclipse.aether.resolution.VersionRangeRequest;
31  import org.eclipse.aether.resolution.VersionRangeResult;
32  import org.eclipse.aether.version.Version;
33  import org.junit.Test;
34  
35  import static org.junit.Assert.assertEquals;
36  import static org.junit.Assert.assertTrue;
37  
38  public class DefaultVersionFilterContextTest {
39      private static final Dependency FOO_DEPENDENCY = new Dependency(new DefaultArtifact("group-id:foo:1.0"), "test");
40      private static final Dependency BAR_DEPENDENCY = new Dependency(new DefaultArtifact("group-id:bar:1.0"), "test");
41  
42      @Test
43      public void iteratorOneItem() {
44          DefaultVersionFilterContext context = new DefaultVersionFilterContext(new DefaultRepositorySystemSession());
45          VersionRangeResult result = new VersionRangeResult(new VersionRangeRequest());
46          result.addVersion(new TestVersion("1.0"));
47          context.set(FOO_DEPENDENCY, result);
48  
49          Iterator<Version> iterator = context.iterator();
50          assertTrue(iterator.hasNext());
51          assertEquals(new TestVersion("1.0"), iterator.next());
52      }
53  
54      @Test
55      public void getCountOneItem() {
56          DefaultVersionFilterContext context = new DefaultVersionFilterContext(new DefaultRepositorySystemSession());
57          VersionRangeResult result = new VersionRangeResult(new VersionRangeRequest());
58          result.addVersion(new TestVersion("1.0"));
59          context.set(FOO_DEPENDENCY, result);
60  
61          assertEquals(1, context.getCount());
62      }
63  
64      @Test
65      public void getOneItem() {
66          DefaultVersionFilterContext context = new DefaultVersionFilterContext(new DefaultRepositorySystemSession());
67          VersionRangeResult result = new VersionRangeResult(new VersionRangeRequest());
68          result.addVersion(new TestVersion("1.0"));
69          context.set(FOO_DEPENDENCY, result);
70  
71          assertEquals(Collections.singletonList(new TestVersion("1.0")), context.get());
72      }
73  
74      @Test
75      public void iteratorDelete() {
76          DefaultVersionFilterContext context = new DefaultVersionFilterContext(new DefaultRepositorySystemSession());
77          VersionRangeResult result = new VersionRangeResult(new VersionRangeRequest());
78          result.addVersion(new TestVersion("1.0"));
79          context.set(FOO_DEPENDENCY, result);
80  
81          Iterator<Version> iterator = context.iterator();
82          iterator.next();
83          iterator.remove();
84  
85          assertEquals(0, context.getCount());
86      }
87  
88      @Test(expected = NoSuchElementException.class)
89      public void nextBeyondEnd() {
90          DefaultVersionFilterContext context = new DefaultVersionFilterContext(new DefaultRepositorySystemSession());
91          VersionRangeResult result = new VersionRangeResult(new VersionRangeRequest());
92          result.addVersion(new TestVersion("1.0"));
93          context.set(FOO_DEPENDENCY, result);
94  
95          Iterator<Version> iterator = context.iterator();
96          iterator.next();
97          iterator.next();
98      }
99  
100     @Test
101     public void removeOneOfOne() {
102         DefaultVersionFilterContext context = new DefaultVersionFilterContext(new DefaultRepositorySystemSession());
103         VersionRangeResult result = new VersionRangeResult(new VersionRangeRequest());
104         result.addVersion(new TestVersion("1.0"));
105         context.set(FOO_DEPENDENCY, result);
106 
107         Iterator<Version> iterator = context.iterator();
108         iterator.next();
109         iterator.remove();
110 
111         assertEquals(Collections.emptyList(), context.get());
112     }
113 
114     @Test
115     public void removeOneOfTwo() {
116         DefaultVersionFilterContext context = new DefaultVersionFilterContext(new DefaultRepositorySystemSession());
117         VersionRangeResult result = new VersionRangeResult(new VersionRangeRequest());
118         result.addVersion(new TestVersion("1.0"));
119         result.addVersion(new TestVersion("2.0"));
120         context.set(FOO_DEPENDENCY, result);
121 
122         Iterator<Version> iterator = context.iterator();
123         iterator.next();
124         iterator.remove();
125 
126         assertEquals(Collections.singletonList(new TestVersion("2.0")), context.get());
127     }
128 
129     @Test
130     public void removeOneOfThree() {
131         DefaultVersionFilterContext context = new DefaultVersionFilterContext(new DefaultRepositorySystemSession());
132         VersionRangeResult result = new VersionRangeResult(new VersionRangeRequest());
133         result.addVersion(new TestVersion("1.0"));
134         result.addVersion(new TestVersion("2.0"));
135         result.addVersion(new TestVersion("3.0"));
136         context.set(FOO_DEPENDENCY, result);
137 
138         Iterator<Version> iterator = context.iterator();
139         iterator.next();
140         iterator.remove();
141 
142         assertEquals(Arrays.asList(new TestVersion("2.0"), new TestVersion("3.0")), context.get());
143     }
144 
145     @Test
146     public void setTwice() {
147         DefaultVersionFilterContext context = new DefaultVersionFilterContext(new DefaultRepositorySystemSession());
148         VersionRangeResult fooResult = new VersionRangeResult(new VersionRangeRequest());
149         fooResult.addVersion(new TestVersion("1.0"));
150         context.set(FOO_DEPENDENCY, fooResult);
151 
152         VersionRangeResult barResult = new VersionRangeResult(new VersionRangeRequest());
153         barResult.addVersion(new TestVersion("1.0"));
154         barResult.addVersion(new TestVersion("2.0"));
155         context.set(BAR_DEPENDENCY, barResult);
156 
157         assertEquals(Arrays.asList(new TestVersion("1.0"), new TestVersion("2.0")), context.get());
158     }
159 }