1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 }