Skip to main content
aboutsummaryrefslogblamecommitdiffstats
blob: eae2a61467c68f5f254d33959104463bf6281ea8 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13












                                                                                 

                                                    

















































































































































                                                                                                                   
/*******************************************************************************
 * 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());
	}

}

Back to the top