View Javadoc
1   package org.eclipse.aether.util.version;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   * 
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   * 
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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 }