1 package org.apache.maven.artifact.versioning; 2 3 18 19 import junit.framework.TestCase; 20 21 import java.util.List ; 22 23 29 public class VersionRangeTest 30 extends TestCase 31 { 32 private static final String CHECK_NUM_RESTRICTIONS = "check number of restrictions"; 33 34 private static final String CHECK_UPPER_BOUND = "check upper bound"; 35 36 private static final String CHECK_UPPER_BOUND_INCLUSIVE = "check upper bound is inclusive"; 37 38 private static final String CHECK_LOWER_BOUND = "check lower bound"; 39 40 private static final String CHECK_LOWER_BOUND_INCLUSIVE = "check lower bound is inclusive"; 41 42 private static final String CHECK_VERSION_RECOMMENDATION = "check version recommended"; 43 44 public void testRange() 45 throws InvalidVersionSpecificationException 46 { 47 VersionRange range = VersionRange.createFromVersionSpec( "(,1.0]" ); 48 List 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 checkInvalidRange( "[1.0,1.2),(1.1,1.3]" ); 136 checkInvalidRange( "[1.1,1.3),(1.0,1.2]" ); 138 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 assertEquals( CHECK_VERSION_RECOMMENDATION, "1.0", mergedRange.getRecommendedVersion().toString() ); 151 List 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 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 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 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 } 635 } 636 } 637 | Popular Tags |