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