KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > maven > artifact > versioning > VersionRangeTest


1 package org.apache.maven.artifact.versioning;
2
3 /*
4  * Copyright 2001-2005 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * 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, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19 import junit.framework.TestCase;
20
21 import java.util.List JavaDoc;
22
23 /**
24  * Tests version range construction.
25  *
26  * @author <a HREF="mailto:brett@apache.org">Brett Porter</a>
27  * @version $Id: VersionRangeTest.java 280489 2005-09-13 04:20:44Z brett $
28  */

29 public class VersionRangeTest
30     extends TestCase
31 {
32     private static final String JavaDoc CHECK_NUM_RESTRICTIONS = "check number of restrictions";
33
34     private static final String JavaDoc CHECK_UPPER_BOUND = "check upper bound";
35
36     private static final String JavaDoc CHECK_UPPER_BOUND_INCLUSIVE = "check upper bound is inclusive";
37
38     private static final String JavaDoc CHECK_LOWER_BOUND = "check lower bound";
39
40     private static final String JavaDoc CHECK_LOWER_BOUND_INCLUSIVE = "check lower bound is inclusive";
41
42     private static final String JavaDoc CHECK_VERSION_RECOMMENDATION = "check version recommended";
43
44     public void testRange()
45         throws InvalidVersionSpecificationException
46     {
47         VersionRange range = VersionRange.createFromVersionSpec( "(,1.0]" );
48         List JavaDoc restrictions = range.getRestrictions();
49         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
50         Restriction restriction = (Restriction) restrictions.get( 0 );
51         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
52         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
53         assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() );
54         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
55         assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
56
57         range = VersionRange.createFromVersionSpec( "1.0" );
58         assertEquals( CHECK_VERSION_RECOMMENDATION, "1.0", range.getRecommendedVersion().toString() );
59         restrictions = range.getRestrictions();
60         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
61         restriction = (Restriction) restrictions.get( 0 );
62         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
63         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
64         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
65         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
66
67         range = VersionRange.createFromVersionSpec( "[1.0]" );
68         restrictions = range.getRestrictions();
69         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
70         restriction = (Restriction) restrictions.get( 0 );
71         assertEquals( CHECK_LOWER_BOUND, "1.0", restriction.getLowerBound().toString() );
72         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
73         assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() );
74         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
75         assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
76
77         range = VersionRange.createFromVersionSpec( "[1.2,1.3]" );
78         restrictions = range.getRestrictions();
79         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
80         restriction = (Restriction) restrictions.get( 0 );
81         assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound().toString() );
82         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
83         assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() );
84         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
85         assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
86
87         range = VersionRange.createFromVersionSpec( "[1.0,2.0)" );
88         restrictions = range.getRestrictions();
89         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
90         restriction = (Restriction) restrictions.get( 0 );
91         assertEquals( CHECK_LOWER_BOUND, "1.0", restriction.getLowerBound().toString() );
92         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
93         assertEquals( CHECK_UPPER_BOUND, "2.0", restriction.getUpperBound().toString() );
94         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
95         assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
96
97         range = VersionRange.createFromVersionSpec( "[1.5,)" );
98         restrictions = range.getRestrictions();
99         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
100         restriction = (Restriction) restrictions.get( 0 );
101         assertEquals( CHECK_LOWER_BOUND, "1.5", restriction.getLowerBound().toString() );
102         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
103         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
104         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
105         assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
106
107         range = VersionRange.createFromVersionSpec( "(,1.0],[1.2,)" );
108         restrictions = range.getRestrictions();
109         assertEquals( CHECK_NUM_RESTRICTIONS, 2, restrictions.size() );
110         restriction = (Restriction) restrictions.get( 0 );
111         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
112         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
113         assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() );
114         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
115         assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
116         restriction = (Restriction) restrictions.get( 1 );
117         assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound().toString() );
118         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
119         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
120         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
121         assertNull( CHECK_VERSION_RECOMMENDATION, range.getRecommendedVersion() );
122     }
123
124     public void testInvalidRanges()
125     {
126         checkInvalidRange( "(1.0)" );
127         checkInvalidRange( "[1.0)" );
128         checkInvalidRange( "(1.0]" );
129         checkInvalidRange( "(1.0,1.0]" );
130         checkInvalidRange( "[1.0,1.0)" );
131         checkInvalidRange( "(1.0,1.0)" );
132         checkInvalidRange( "[1.1,1.0]" );
133         checkInvalidRange( "[1.0,1.2),1.3" );
134         // overlap
135
checkInvalidRange( "[1.0,1.2),(1.1,1.3]" );
136         // overlap
137
checkInvalidRange( "[1.1,1.3),(1.0,1.2]" );
138         // ordering
139
checkInvalidRange( "(1.1,1.2],[1.0,1.1)" );
140     }
141
142     public void testIntersections()
143         throws InvalidVersionSpecificationException
144     {
145         VersionRange range1 = VersionRange.createFromVersionSpec( "1.0" );
146         VersionRange range2 = VersionRange.createFromVersionSpec( "1.1" );
147         VersionRange mergedRange = range1.restrict( range2 );
148         // TODO: current policy is to retain the original version - is this correct, do we need strategies or is that handled elsewhere?
149
// assertEquals( CHECK_VERSION_RECOMMENDATION, "1.1", mergedRange.getRecommendedVersion().toString() );
150
assertEquals( CHECK_VERSION_RECOMMENDATION, "1.0", mergedRange.getRecommendedVersion().toString() );
151         List JavaDoc restrictions = mergedRange.getRestrictions();
152         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
153         Restriction restriction = (Restriction) restrictions.get( 0 );
154         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
155         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
156         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
157         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
158
159         mergedRange = range2.restrict( range1 );
160         assertEquals( CHECK_VERSION_RECOMMENDATION, "1.1", mergedRange.getRecommendedVersion().toString() );
161         restrictions = mergedRange.getRestrictions();
162         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
163         restriction = (Restriction) restrictions.get( 0 );
164         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
165         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
166         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
167         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
168
169         // TODO: test reversed restrictions on all below
170
range1 = VersionRange.createFromVersionSpec( "[1.0,)" );
171         range2 = VersionRange.createFromVersionSpec( "1.1" );
172         mergedRange = range1.restrict( range2 );
173         assertEquals( CHECK_VERSION_RECOMMENDATION, "1.1", mergedRange.getRecommendedVersion().toString() );
174         restrictions = mergedRange.getRestrictions();
175         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
176         restriction = (Restriction) restrictions.get( 0 );
177         assertEquals( CHECK_LOWER_BOUND, "1.0", restriction.getLowerBound().toString() );
178         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
179         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
180         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
181
182         range1 = VersionRange.createFromVersionSpec( "[1.1,)" );
183         range2 = VersionRange.createFromVersionSpec( "1.1" );
184         mergedRange = range1.restrict( range2 );
185         assertEquals( CHECK_VERSION_RECOMMENDATION, "1.1", mergedRange.getRecommendedVersion().toString() );
186         restrictions = mergedRange.getRestrictions();
187         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
188         restriction = (Restriction) restrictions.get( 0 );
189         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
190         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
191         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
192         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
193
194         range1 = VersionRange.createFromVersionSpec( "[1.1]" );
195         range2 = VersionRange.createFromVersionSpec( "1.1" );
196         mergedRange = range1.restrict( range2 );
197         assertEquals( CHECK_VERSION_RECOMMENDATION, "1.1", mergedRange.getRecommendedVersion().toString() );
198         restrictions = mergedRange.getRestrictions();
199         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
200         restriction = (Restriction) restrictions.get( 0 );
201         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
202         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
203         assertEquals( CHECK_UPPER_BOUND, "1.1", restriction.getLowerBound().toString() );
204         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
205
206         range1 = VersionRange.createFromVersionSpec( "(1.1,)" );
207         range2 = VersionRange.createFromVersionSpec( "1.1" );
208         mergedRange = range1.restrict( range2 );
209         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
210         restrictions = mergedRange.getRestrictions();
211         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
212         restriction = (Restriction) restrictions.get( 0 );
213         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
214         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
215         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
216         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
217
218         range1 = VersionRange.createFromVersionSpec( "[1.2,)" );
219         range2 = VersionRange.createFromVersionSpec( "1.1" );
220         mergedRange = range1.restrict( range2 );
221         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
222         restrictions = mergedRange.getRestrictions();
223         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
224         restriction = (Restriction) restrictions.get( 0 );
225         assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound().toString() );
226         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
227         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
228         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
229
230         range1 = VersionRange.createFromVersionSpec( "(,1.2]" );
231         range2 = VersionRange.createFromVersionSpec( "1.1" );
232         mergedRange = range1.restrict( range2 );
233         assertEquals( CHECK_VERSION_RECOMMENDATION, "1.1", mergedRange.getRecommendedVersion().toString() );
234         restrictions = mergedRange.getRestrictions();
235         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
236         restriction = (Restriction) restrictions.get( 0 );
237         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
238         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
239         assertEquals( CHECK_UPPER_BOUND, "1.2", restriction.getUpperBound().toString() );
240         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
241
242         range1 = VersionRange.createFromVersionSpec( "(,1.1]" );
243         range2 = VersionRange.createFromVersionSpec( "1.1" );
244         mergedRange = range1.restrict( range2 );
245         assertEquals( CHECK_VERSION_RECOMMENDATION, "1.1", mergedRange.getRecommendedVersion().toString() );
246         restrictions = mergedRange.getRestrictions();
247         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
248         restriction = (Restriction) restrictions.get( 0 );
249         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
250         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
251         assertEquals( CHECK_UPPER_BOUND, "1.1", restriction.getUpperBound().toString() );
252         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
253
254         range1 = VersionRange.createFromVersionSpec( "(,1.1)" );
255         range2 = VersionRange.createFromVersionSpec( "1.1" );
256         mergedRange = range1.restrict( range2 );
257         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
258         restrictions = mergedRange.getRestrictions();
259         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
260         restriction = (Restriction) restrictions.get( 0 );
261         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
262         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
263         assertEquals( CHECK_UPPER_BOUND, "1.1", restriction.getUpperBound().toString() );
264         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
265
266         range1 = VersionRange.createFromVersionSpec( "(,1.0]" );
267         range2 = VersionRange.createFromVersionSpec( "1.1" );
268         mergedRange = range1.restrict( range2 );
269         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
270         restrictions = mergedRange.getRestrictions();
271         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
272         restriction = (Restriction) restrictions.get( 0 );
273         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
274         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
275         assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() );
276         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
277
278         range1 = VersionRange.createFromVersionSpec( "(,1.0], [1.1,)" );
279         range2 = VersionRange.createFromVersionSpec( "1.2" );
280         mergedRange = range1.restrict( range2 );
281         assertEquals( CHECK_VERSION_RECOMMENDATION, "1.2", mergedRange.getRecommendedVersion().toString() );
282         restrictions = mergedRange.getRestrictions();
283         assertEquals( CHECK_NUM_RESTRICTIONS, 2, restrictions.size() );
284         restriction = (Restriction) restrictions.get( 0 );
285         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
286         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
287         assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() );
288         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
289         restriction = (Restriction) restrictions.get( 1 );
290         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
291         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
292         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
293         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
294
295         range1 = VersionRange.createFromVersionSpec( "(,1.0], [1.1,)" );
296         range2 = VersionRange.createFromVersionSpec( "1.0.5" );
297         mergedRange = range1.restrict( range2 );
298         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
299         restrictions = mergedRange.getRestrictions();
300         assertEquals( CHECK_NUM_RESTRICTIONS, 2, restrictions.size() );
301         restriction = (Restriction) restrictions.get( 0 );
302         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
303         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
304         assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound().toString() );
305         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
306         restriction = (Restriction) restrictions.get( 1 );
307         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
308         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
309         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
310         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
311
312         range1 = VersionRange.createFromVersionSpec( "(,1.1), (1.1,)" );
313         range2 = VersionRange.createFromVersionSpec( "1.1" );
314         mergedRange = range1.restrict( range2 );
315         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
316         restrictions = mergedRange.getRestrictions();
317         assertEquals( CHECK_NUM_RESTRICTIONS, 2, restrictions.size() );
318         restriction = (Restriction) restrictions.get( 0 );
319         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
320         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
321         assertEquals( CHECK_UPPER_BOUND, "1.1", restriction.getUpperBound().toString() );
322         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
323         restriction = (Restriction) restrictions.get( 1 );
324         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
325         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
326         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
327         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
328
329         range1 = VersionRange.createFromVersionSpec( "[1.1,1.3]" );
330         range2 = VersionRange.createFromVersionSpec( "(1.1,)" );
331         mergedRange = range1.restrict( range2 );
332         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
333         restrictions = mergedRange.getRestrictions();
334         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
335         restriction = (Restriction) restrictions.get( 0 );
336         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
337         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
338         assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() );
339         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
340
341         range1 = VersionRange.createFromVersionSpec( "(,1.3)" );
342         range2 = VersionRange.createFromVersionSpec( "[1.2,1.3]" );
343         mergedRange = range1.restrict( range2 );
344         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
345         restrictions = mergedRange.getRestrictions();
346         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
347         restriction = (Restriction) restrictions.get( 0 );
348         assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound().toString() );
349         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
350         assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() );
351         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
352
353         range1 = VersionRange.createFromVersionSpec( "[1.1,1.3]" );
354         range2 = VersionRange.createFromVersionSpec( "[1.2,)" );
355         mergedRange = range1.restrict( range2 );
356         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
357         restrictions = mergedRange.getRestrictions();
358         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
359         restriction = (Restriction) restrictions.get( 0 );
360         assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound().toString() );
361         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
362         assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() );
363         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
364
365         range1 = VersionRange.createFromVersionSpec( "(,1.3]" );
366         range2 = VersionRange.createFromVersionSpec( "[1.2,1.4]" );
367         mergedRange = range1.restrict( range2 );
368         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
369         restrictions = mergedRange.getRestrictions();
370         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
371         restriction = (Restriction) restrictions.get( 0 );
372         assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound().toString() );
373         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
374         assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() );
375         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
376
377         range1 = VersionRange.createFromVersionSpec( "(1.2,1.3]" );
378         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4]" );
379         mergedRange = range1.restrict( range2 );
380         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
381         restrictions = mergedRange.getRestrictions();
382         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
383         restriction = (Restriction) restrictions.get( 0 );
384         assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound().toString() );
385         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
386         assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() );
387         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
388
389         range1 = VersionRange.createFromVersionSpec( "(1.2,1.3)" );
390         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4]" );
391         mergedRange = range1.restrict( range2 );
392         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
393         restrictions = mergedRange.getRestrictions();
394         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
395         restriction = (Restriction) restrictions.get( 0 );
396         assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound().toString() );
397         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
398         assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() );
399         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
400
401         range1 = VersionRange.createFromVersionSpec( "[1.2,1.3)" );
402         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4]" );
403         mergedRange = range1.restrict( range2 );
404         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
405         restrictions = mergedRange.getRestrictions();
406         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
407         restriction = (Restriction) restrictions.get( 0 );
408         assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound().toString() );
409         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
410         assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound().toString() );
411         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
412
413         range1 = VersionRange.createFromVersionSpec( "[1.0,1.1]" );
414         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4]" );
415         mergedRange = range1.restrict( range2 );
416         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
417         restrictions = mergedRange.getRestrictions();
418         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
419         restriction = (Restriction) restrictions.get( 0 );
420         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
421         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
422         assertEquals( CHECK_UPPER_BOUND, "1.1", restriction.getUpperBound().toString() );
423         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
424
425         range1 = VersionRange.createFromVersionSpec( "[1.0,1.1)" );
426         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4]" );
427         mergedRange = range1.restrict( range2 );
428         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
429         restrictions = mergedRange.getRestrictions();
430         assertEquals( CHECK_NUM_RESTRICTIONS, 0, restrictions.size() );
431
432         range1 = VersionRange.createFromVersionSpec( "[1.0,1.2],[1.3,1.5]" );
433         range2 = VersionRange.createFromVersionSpec( "[1.1]" );
434         mergedRange = range1.restrict( range2 );
435         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
436         restrictions = mergedRange.getRestrictions();
437         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
438         restriction = (Restriction) restrictions.get( 0 );
439         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
440         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
441         assertEquals( CHECK_UPPER_BOUND, "1.1", restriction.getUpperBound().toString() );
442         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
443
444         range1 = VersionRange.createFromVersionSpec( "[1.0,1.2],[1.3,1.5]" );
445         range2 = VersionRange.createFromVersionSpec( "[1.4]" );
446         mergedRange = range1.restrict( range2 );
447         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
448         restrictions = mergedRange.getRestrictions();
449         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
450         restriction = (Restriction) restrictions.get( 0 );
451         assertEquals( CHECK_LOWER_BOUND, "1.4", restriction.getLowerBound().toString() );
452         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
453         assertEquals( CHECK_UPPER_BOUND, "1.4", restriction.getUpperBound().toString() );
454         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
455
456         range1 = VersionRange.createFromVersionSpec( "[1.0,1.2],[1.3,1.5]" );
457         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4]" );
458         mergedRange = range1.restrict( range2 );
459         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
460         restrictions = mergedRange.getRestrictions();
461         assertEquals( CHECK_NUM_RESTRICTIONS, 2, restrictions.size() );
462         restriction = (Restriction) restrictions.get( 0 );
463         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
464         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
465         assertEquals( CHECK_UPPER_BOUND, "1.2", restriction.getUpperBound().toString() );
466         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
467         restriction = (Restriction) restrictions.get( 1 );
468         assertEquals( CHECK_LOWER_BOUND, "1.3", restriction.getLowerBound().toString() );
469         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
470         assertEquals( CHECK_UPPER_BOUND, "1.4", restriction.getUpperBound().toString() );
471         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
472
473         range1 = VersionRange.createFromVersionSpec( "[1.0,1.2),(1.3,1.5]" );
474         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4]" );
475         mergedRange = range1.restrict( range2 );
476         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
477         restrictions = mergedRange.getRestrictions();
478         assertEquals( CHECK_NUM_RESTRICTIONS, 2, restrictions.size() );
479         restriction = (Restriction) restrictions.get( 0 );
480         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
481         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
482         assertEquals( CHECK_UPPER_BOUND, "1.2", restriction.getUpperBound().toString() );
483         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
484         restriction = (Restriction) restrictions.get( 1 );
485         assertEquals( CHECK_LOWER_BOUND, "1.3", restriction.getLowerBound().toString() );
486         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
487         assertEquals( CHECK_UPPER_BOUND, "1.4", restriction.getUpperBound().toString() );
488         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
489
490         range1 = VersionRange.createFromVersionSpec( "[1.0,1.2],[1.3,1.5]" );
491         range2 = VersionRange.createFromVersionSpec( "(1.1,1.4)" );
492         mergedRange = range1.restrict( range2 );
493         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
494         restrictions = mergedRange.getRestrictions();
495         assertEquals( CHECK_NUM_RESTRICTIONS, 2, restrictions.size() );
496         restriction = (Restriction) restrictions.get( 0 );
497         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
498         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
499         assertEquals( CHECK_UPPER_BOUND, "1.2", restriction.getUpperBound().toString() );
500         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
501         restriction = (Restriction) restrictions.get( 1 );
502         assertEquals( CHECK_LOWER_BOUND, "1.3", restriction.getLowerBound().toString() );
503         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
504         assertEquals( CHECK_UPPER_BOUND, "1.4", restriction.getUpperBound().toString() );
505         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
506
507         range1 = VersionRange.createFromVersionSpec( "[1.0,1.2),(1.3,1.5]" );
508         range2 = VersionRange.createFromVersionSpec( "(1.1,1.4)" );
509         mergedRange = range1.restrict( range2 );
510         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
511         restrictions = mergedRange.getRestrictions();
512         assertEquals( CHECK_NUM_RESTRICTIONS, 2, restrictions.size() );
513         restriction = (Restriction) restrictions.get( 0 );
514         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
515         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
516         assertEquals( CHECK_UPPER_BOUND, "1.2", restriction.getUpperBound().toString() );
517         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
518         restriction = (Restriction) restrictions.get( 1 );
519         assertEquals( CHECK_LOWER_BOUND, "1.3", restriction.getLowerBound().toString() );
520         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
521         assertEquals( CHECK_UPPER_BOUND, "1.4", restriction.getUpperBound().toString() );
522         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
523
524         range1 = VersionRange.createFromVersionSpec( "(,1.1),(1.4,)" );
525         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4]" );
526         mergedRange = range1.restrict( range2 );
527         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
528         restrictions = mergedRange.getRestrictions();
529         assertEquals( CHECK_NUM_RESTRICTIONS, 0, restrictions.size() );
530
531         range1 = VersionRange.createFromVersionSpec( "(,1.1],[1.4,)" );
532         range2 = VersionRange.createFromVersionSpec( "(1.1,1.4)" );
533         mergedRange = range1.restrict( range2 );
534         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
535         restrictions = mergedRange.getRestrictions();
536         assertEquals( CHECK_NUM_RESTRICTIONS, 0, restrictions.size() );
537
538         range1 = VersionRange.createFromVersionSpec( "[,1.1],[1.4,]" );
539         range2 = VersionRange.createFromVersionSpec( "[1.2,1.3]" );
540         mergedRange = range1.restrict( range2 );
541         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
542         restrictions = mergedRange.getRestrictions();
543         assertEquals( CHECK_NUM_RESTRICTIONS, 0, restrictions.size() );
544
545         range1 = VersionRange.createFromVersionSpec( "[1.0,1.2],[1.3,1.5]" );
546         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4],[1.6,]" );
547         mergedRange = range1.restrict( range2 );
548         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
549         restrictions = mergedRange.getRestrictions();
550         assertEquals( CHECK_NUM_RESTRICTIONS, 2, restrictions.size() );
551         restriction = (Restriction) restrictions.get( 0 );
552         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
553         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
554         assertEquals( CHECK_UPPER_BOUND, "1.2", restriction.getUpperBound().toString() );
555         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
556         restriction = (Restriction) restrictions.get( 1 );
557         assertEquals( CHECK_LOWER_BOUND, "1.3", restriction.getLowerBound().toString() );
558         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
559         assertEquals( CHECK_UPPER_BOUND, "1.4", restriction.getUpperBound().toString() );
560         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
561
562         range1 = VersionRange.createFromVersionSpec( "[1.0,1.2],[1.3,1.5]" );
563         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4],[1.5,]" );
564         mergedRange = range1.restrict( range2 );
565         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
566         restrictions = mergedRange.getRestrictions();
567         assertEquals( CHECK_NUM_RESTRICTIONS, 3, restrictions.size() );
568         restriction = (Restriction) restrictions.get( 0 );
569         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
570         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
571         assertEquals( CHECK_UPPER_BOUND, "1.2", restriction.getUpperBound().toString() );
572         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
573         restriction = (Restriction) restrictions.get( 1 );
574         assertEquals( CHECK_LOWER_BOUND, "1.3", restriction.getLowerBound().toString() );
575         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
576         assertEquals( CHECK_UPPER_BOUND, "1.4", restriction.getUpperBound().toString() );
577         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
578         restriction = (Restriction) restrictions.get( 2 );
579         assertEquals( CHECK_LOWER_BOUND, "1.5", restriction.getLowerBound().toString() );
580         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
581         assertEquals( CHECK_UPPER_BOUND, "1.5", restriction.getUpperBound().toString() );
582         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
583
584         range1 = VersionRange.createFromVersionSpec( "[1.0,1.2],[1.3,1.7]" );
585         range2 = VersionRange.createFromVersionSpec( "[1.1,1.4],[1.5,1.6]" );
586         mergedRange = range1.restrict( range2 );
587         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
588         restrictions = mergedRange.getRestrictions();
589         assertEquals( CHECK_NUM_RESTRICTIONS, 3, restrictions.size() );
590         restriction = (Restriction) restrictions.get( 0 );
591         assertEquals( CHECK_LOWER_BOUND, "1.1", restriction.getLowerBound().toString() );
592         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
593         assertEquals( CHECK_UPPER_BOUND, "1.2", restriction.getUpperBound().toString() );
594         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
595         restriction = (Restriction) restrictions.get( 1 );
596         assertEquals( CHECK_LOWER_BOUND, "1.3", restriction.getLowerBound().toString() );
597         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
598         assertEquals( CHECK_UPPER_BOUND, "1.4", restriction.getUpperBound().toString() );
599         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
600         restriction = (Restriction) restrictions.get( 2 );
601         assertEquals( CHECK_LOWER_BOUND, "1.5", restriction.getLowerBound().toString() );
602         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, restriction.isLowerBoundInclusive() );
603         assertEquals( CHECK_UPPER_BOUND, "1.6", restriction.getUpperBound().toString() );
604         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, restriction.isUpperBoundInclusive() );
605
606         // test restricting empty sets
607
range1 = VersionRange.createFromVersionSpec( "[,1.1],[1.4,]" );
608         range2 = VersionRange.createFromVersionSpec( "[1.2,1.3]" );
609         range1 = range1.restrict( range2 );
610         mergedRange = range1.restrict( range2 );
611         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
612         restrictions = mergedRange.getRestrictions();
613         assertEquals( CHECK_NUM_RESTRICTIONS, 0, restrictions.size() );
614
615         range1 = VersionRange.createFromVersionSpec( "[,1.1],[1.4,]" );
616         range2 = VersionRange.createFromVersionSpec( "[1.2,1.3]" );
617         range2 = range1.restrict( range2 );
618         mergedRange = range1.restrict( range2 );
619         assertNull( CHECK_VERSION_RECOMMENDATION, mergedRange.getRecommendedVersion() );
620         restrictions = mergedRange.getRestrictions();
621         assertEquals( CHECK_NUM_RESTRICTIONS, 0, restrictions.size() );
622     }
623
624     private void checkInvalidRange( String JavaDoc version )
625     {
626         try
627         {
628             VersionRange.createFromVersionSpec( version );
629             fail( "Version " + version + " should have failed to construct" );
630         }
631         catch ( InvalidVersionSpecificationException expected )
632         {
633             // expected
634
}
635     }
636 }
637
Popular Tags