1 package org.eclipse.aether.util.version;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import static org.junit.Assert.*;
23
24 import org.eclipse.aether.util.version.GenericVersion;
25 import org.eclipse.aether.util.version.GenericVersionRange;
26 import org.eclipse.aether.version.InvalidVersionSpecificationException;
27 import org.eclipse.aether.version.Version;
28 import org.eclipse.aether.version.VersionRange;
29 import org.junit.Test;
30
31 public class GenericVersionRangeTest
32 {
33
34 private Version newVersion( String version )
35 {
36 return new GenericVersion( version );
37 }
38
39 private VersionRange parseValid( String range )
40 {
41 try
42 {
43 return new GenericVersionRange( range );
44 }
45 catch ( InvalidVersionSpecificationException e )
46 {
47 throw new AssertionError( range + " should be valid but failed to parse due to: " + e.getMessage(), e );
48 }
49 }
50
51 private void parseInvalid( String range )
52 {
53 try
54 {
55 new GenericVersionRange( range );
56 fail( range + " should be invalid" );
57 }
58 catch ( InvalidVersionSpecificationException e )
59 {
60 assertTrue( true );
61 }
62 }
63
64 private void assertContains( VersionRange range, String version )
65 {
66 assertTrue( range + " should contain " + version, range.containsVersion( newVersion( version ) ) );
67 }
68
69 private void assertNotContains( VersionRange range, String version )
70 {
71 assertFalse( range + " should not contain " + version, range.containsVersion( newVersion( version ) ) );
72 }
73
74 @Test
75 public void testLowerBoundInclusiveUpperBoundInclusive()
76 {
77 VersionRange range = parseValid( "[1,2]" );
78 assertContains( range, "1" );
79 assertContains( range, "1.1-SNAPSHOT" );
80 assertContains( range, "2" );
81 assertEquals( range, parseValid( range.toString() ) );
82 }
83
84 @Test
85 public void testLowerBoundInclusiveUpperBoundExclusive()
86 {
87 VersionRange range = parseValid( "[1.2.3.4.5,1.2.3.4.6)" );
88 assertContains( range, "1.2.3.4.5" );
89 assertNotContains( range, "1.2.3.4.6" );
90 assertEquals( range, parseValid( range.toString() ) );
91 }
92
93 @Test
94 public void testLowerBoundExclusiveUpperBoundInclusive()
95 {
96 VersionRange range = parseValid( "(1a,1b]" );
97 assertNotContains( range, "1a" );
98 assertContains( range, "1b" );
99 assertEquals( range, parseValid( range.toString() ) );
100 }
101
102 @Test
103 public void testLowerBoundExclusiveUpperBoundExclusive()
104 {
105 VersionRange range = parseValid( "(1,3)" );
106 assertNotContains( range, "1" );
107 assertContains( range, "2-SNAPSHOT" );
108 assertNotContains( range, "3" );
109 assertEquals( range, parseValid( range.toString() ) );
110 }
111
112 @Test
113 public void testSingleVersion()
114 {
115 VersionRange range = parseValid( "[1]" );
116 assertContains( range, "1" );
117 assertEquals( range, parseValid( range.toString() ) );
118
119 range = parseValid( "[1,1]" );
120 assertContains( range, "1" );
121 assertEquals( range, parseValid( range.toString() ) );
122 }
123
124 @Test
125 public void testSingleWildcardVersion()
126 {
127 VersionRange range = parseValid( "[1.2.*]" );
128 assertContains( range, "1.2-alpha-1" );
129 assertContains( range, "1.2-SNAPSHOT" );
130 assertContains( range, "1.2" );
131 assertContains( range, "1.2.9999999" );
132 assertNotContains( range, "1.3-rc-1" );
133 assertEquals( range, parseValid( range.toString() ) );
134 }
135
136 @Test
137 public void testMissingOpenCloseDelimiter()
138 {
139 parseInvalid( "1.0" );
140 }
141
142 @Test
143 public void testMissingOpenDelimiter()
144 {
145 parseInvalid( "1.0]" );
146 parseInvalid( "1.0)" );
147 }
148
149 @Test
150 public void testMissingCloseDelimiter()
151 {
152 parseInvalid( "[1.0" );
153 parseInvalid( "(1.0" );
154 }
155
156 @Test
157 public void testTooManyVersions()
158 {
159 parseInvalid( "[1,2,3]" );
160 parseInvalid( "(1,2,3)" );
161 parseInvalid( "[1,2,3)" );
162 }
163
164 }