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 AssertionError error =
48 new AssertionError( range + " should be valid but failed to parse due to: " + e.getMessage() );
49 error.initCause( e );
50 throw error;
51 }
52 }
53
54 private void parseInvalid( String range )
55 {
56 try
57 {
58 new GenericVersionRange( range );
59 fail( range + " should be invalid" );
60 }
61 catch ( InvalidVersionSpecificationException e )
62 {
63 assertTrue( true );
64 }
65 }
66
67 private void assertContains( VersionRange range, String version )
68 {
69 assertTrue( range + " should contain " + version, range.containsVersion( newVersion( version ) ) );
70 }
71
72 private void assertNotContains( VersionRange range, String version )
73 {
74 assertFalse( range + " should not contain " + version, range.containsVersion( newVersion( version ) ) );
75 }
76
77 @Test
78 public void testLowerBoundInclusiveUpperBoundInclusive()
79 {
80 VersionRange range = parseValid( "[1,2]" );
81 assertContains( range, "1" );
82 assertContains( range, "1.1-SNAPSHOT" );
83 assertContains( range, "2" );
84 assertEquals( range, parseValid( range.toString() ) );
85 }
86
87 @Test
88 public void testLowerBoundInclusiveUpperBoundExclusive()
89 {
90 VersionRange range = parseValid( "[1.2.3.4.5,1.2.3.4.6)" );
91 assertContains( range, "1.2.3.4.5" );
92 assertNotContains( range, "1.2.3.4.6" );
93 assertEquals( range, parseValid( range.toString() ) );
94 }
95
96 @Test
97 public void testLowerBoundExclusiveUpperBoundInclusive()
98 {
99 VersionRange range = parseValid( "(1a,1b]" );
100 assertNotContains( range, "1a" );
101 assertContains( range, "1b" );
102 assertEquals( range, parseValid( range.toString() ) );
103 }
104
105 @Test
106 public void testLowerBoundExclusiveUpperBoundExclusive()
107 {
108 VersionRange range = parseValid( "(1,3)" );
109 assertNotContains( range, "1" );
110 assertContains( range, "2-SNAPSHOT" );
111 assertNotContains( range, "3" );
112 assertEquals( range, parseValid( range.toString() ) );
113 }
114
115 @Test
116 public void testSingleVersion()
117 {
118 VersionRange range = parseValid( "[1]" );
119 assertContains( range, "1" );
120 assertEquals( range, parseValid( range.toString() ) );
121
122 range = parseValid( "[1,1]" );
123 assertContains( range, "1" );
124 assertEquals( range, parseValid( range.toString() ) );
125 }
126
127 @Test
128 public void testSingleWildcardVersion()
129 {
130 VersionRange range = parseValid( "[1.2.*]" );
131 assertContains( range, "1.2-alpha-1" );
132 assertContains( range, "1.2-SNAPSHOT" );
133 assertContains( range, "1.2" );
134 assertContains( range, "1.2.9999999" );
135 assertNotContains( range, "1.3-rc-1" );
136 assertEquals( range, parseValid( range.toString() ) );
137 }
138
139 @Test
140 public void testMissingOpenCloseDelimiter()
141 {
142 parseInvalid( "1.0" );
143 }
144
145 @Test
146 public void testMissingOpenDelimiter()
147 {
148 parseInvalid( "1.0]" );
149 parseInvalid( "1.0)" );
150 }
151
152 @Test
153 public void testMissingCloseDelimiter()
154 {
155 parseInvalid( "[1.0" );
156 parseInvalid( "(1.0" );
157 }
158
159 @Test
160 public void testTooManyVersions()
161 {
162 parseInvalid( "[1,2,3]" );
163 parseInvalid( "(1,2,3)" );
164 parseInvalid( "[1,2,3)" );
165 }
166
167 }