| /******************************************************************************* |
| * Copyright (c) 2009 Cloudsmith Inc. and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Cloudsmith Inc. - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.equinox.p2.tests.omniVersion; |
| |
| import org.eclipse.equinox.p2.metadata.Version; |
| import org.eclipse.equinox.p2.metadata.VersionRange; |
| |
| /** |
| * Tests version ranges specified using raw. |
| * |
| */ |
| public class RawRangeTest extends VersionTesting { |
| public void testEmptyRange() { |
| VersionRange range = new VersionRange("raw:''"); |
| assertIncludedInRange("#1", range, "raw:'a'"); |
| |
| try { |
| new VersionRange("raw:"); |
| fail("Uncaught error: a raw range can not be empty."); |
| } catch (IllegalArgumentException e) { |
| assertTrue(true); |
| } |
| } |
| |
| public void testRangeDelimitersInStrings() { |
| VersionRange range = null; |
| range = new VersionRange("raw:['one\\,\\ two','three\\,\\ \\[and\\]\\ four']"); |
| assertIncludedInRange("#1", range, "raw:'one, two'"); |
| assertIncludedInRange("#2", range, "raw:'three, [and] four'"); |
| } |
| |
| public void testRangeDelimitersInStringstoString() { |
| VersionRange range = null; |
| String s = null; |
| range = new VersionRange(s = "raw:['one\\,\\ two','three\\,\\ \\[and\\]\\ four']"); |
| assertEquals(s, range.toString()); |
| } |
| |
| public void testSingleVersionRange() { |
| VersionRange range; |
| range = new VersionRange("raw:[1.0.0, 1.0.0.'-')"); |
| assertEquals("0.1", Version.parseVersion("raw:1.0.0"), range.getMinimum()); |
| assertEquals("0.2", Version.parseVersion("raw:1.0.0.'-'"), range.getMaximum()); |
| |
| assertNotIncludedInRange("0.9", range, "raw:0.9"); |
| assertNotIncludedInRange("1.0", range, "raw:1"); // this is not osgi versions 1 is before than 1.0 |
| assertNotIncludedInRange("1.1", range, "raw:1.0"); // this is not osgi, version 1.0 is before 1.0.0 |
| assertIncludedInRange("1.2", range, "raw:1.0.0"); |
| assertNotIncludedInRange("2.1", range, "raw:1.0.0.'0'"); |
| assertNotIncludedInRange("2.2", range, "raw:1.0.1"); |
| assertNotIncludedInRange("2.3", range, "raw:1.1"); |
| assertNotIncludedInRange("2.4", range, "raw:2"); |
| } |
| |
| public void testInvertedRange() { |
| try { |
| new VersionRange("raw:[2.0.0, 1.0.0]"); |
| fail("Inverted range is not allowed"); |
| } catch (IllegalArgumentException e) { |
| assertTrue(true); |
| } |
| } |
| |
| public void testGreaterThan() { |
| // any version equal or greater than 1.0.0 is ok |
| VersionRange lowerBound = new VersionRange("raw:1.0.0"); |
| assertNotIncludedInRange("1.0", lowerBound, "raw:0.9.0"); |
| assertIncludedInRange("1.1", lowerBound, "raw:1.0.0"); |
| assertIncludedInRange("1.2", lowerBound, "raw:1.9.9.'x'"); |
| assertIncludedInRange("1.3", lowerBound, "raw:999.999.999.'foo'"); |
| assertIncludedInRange("1.3", lowerBound, "raw:M.M.M.m"); |
| } |
| |
| public void testGreaterThanSmallest() { |
| // any version equal or greater than -M' (empty string) is ok |
| VersionRange lowerBound = new VersionRange("raw:-M"); |
| assertIncludedInRange("#1", lowerBound, "raw:-M"); |
| assertIncludedInRange("#1.1", lowerBound, "raw:''"); |
| assertIncludedInRange("#1.1", lowerBound, "raw:m"); |
| assertIncludedInRange("#2", lowerBound, "raw:0.9.0"); |
| assertIncludedInRange("#3", lowerBound, "raw:1.0.0"); |
| assertIncludedInRange("#4", lowerBound, "raw:1.9.9.'x'"); |
| assertIncludedInRange("#5", lowerBound, "raw:999.999.999.'foo'"); |
| assertIncludedInRange("#6", lowerBound, "raw:M.M.M.m"); |
| assertIncludedInRange("#7", lowerBound, "raw:M"); |
| assertIncludedInRange("#8", lowerBound, "raw:MpM"); |
| } |
| |
| public void testLowerThan() { |
| // any version lower than 2.0 is ok |
| VersionRange upperBound = new VersionRange("raw:[0, 2.0)"); |
| assertIncludedInRange("1.0", upperBound, "raw:0.0"); |
| assertIncludedInRange("1.1", upperBound, "raw:0.9"); |
| assertIncludedInRange("1.2", upperBound, "raw:1.0"); |
| assertIncludedInRange("1.3", upperBound, "raw:1.9.9.'x'"); |
| assertNotIncludedInRange("1.4", upperBound, "raw:2.0"); |
| assertNotIncludedInRange("1.5", upperBound, "raw:2.1"); |
| } |
| |
| public void testSerialize() { |
| VersionRange v = null; |
| |
| v = new VersionRange("raw:1.0.0"); |
| assertSerialized(v); |
| v = new VersionRange("raw:[1.0.0,2.0.0]"); |
| assertSerialized(v); |
| v = new VersionRange("raw:(1.0.0,2.0.0]"); |
| assertSerialized(v); |
| v = new VersionRange("raw:[1.0.0,2.0.0)"); |
| assertSerialized(v); |
| v = new VersionRange("raw:(1.0.0,2.0.0)"); |
| assertSerialized(v); |
| |
| v = new VersionRange("raw:1.0.0.'abcdef'"); |
| assertSerialized(v); |
| v = new VersionRange("raw:[1.0.0.'abcdef',2.0.0.'abcdef']"); |
| assertSerialized(v); |
| v = new VersionRange("raw:(1.0.0.'abcdef',2.0.0.'abcdef']"); |
| assertSerialized(v); |
| v = new VersionRange("raw:[1.0.0.'abcdef',2.0.0.'abcdef')"); |
| assertSerialized(v); |
| v = new VersionRange("raw:(1.0.0.'abcdef',2.0.0.'abcdef')"); |
| assertSerialized(v); |
| } |
| |
| public void testToString() { |
| VersionRange v = null; |
| String s = null; |
| v = new VersionRange(s = "raw:1.0.0"); |
| assertEquals(s, v.toString()); |
| v = new VersionRange(s = "raw:[1.0.0,2.0.0]"); |
| assertEquals(s, v.toString()); |
| v = new VersionRange(s = "raw:(1.0.0,2.0.0]"); |
| assertEquals(s, v.toString()); |
| v = new VersionRange(s = "raw:[1.0.0,2.0.0)"); |
| assertEquals(s, v.toString()); |
| v = new VersionRange(s = "raw:(1.0.0,2.0.0)"); |
| assertEquals(s, v.toString()); |
| |
| v = new VersionRange(s = "raw:1.0.0.'abcdef'"); |
| assertEquals(s, v.toString()); |
| v = new VersionRange(s = "raw:[1.0.0.'abcdef',2.0.0.'abcdef']"); |
| assertEquals(s, v.toString()); |
| v = new VersionRange(s = "raw:(1.0.0.'abcdef',2.0.0.'abcdef']"); |
| assertEquals(s, v.toString()); |
| v = new VersionRange(s = "raw:[1.0.0.'abcdef',2.0.0.'abcdef')"); |
| assertEquals(s, v.toString()); |
| v = new VersionRange(s = "raw:(1.0.0.'abcdef',2.0.0.'abcdef')"); |
| assertEquals(s, v.toString()); |
| } |
| |
| } |