blob: 65bd25cc00d4dca8bfc872da1450ecac812c5a14 [file] [log] [blame]
/*******************************************************************************
* 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.internal.provisional.p2.core.Version;
import org.eclipse.equinox.internal.provisional.p2.core.VersionRange;
/**
* Tests inclusion of original version range string in raw format.
* The tests in this class does not fully test the various "format(rules)" only that the sequence
* "raw RANGE/format():ORIGINAL RANGE" works, and that errors at the top level are caught.
*
*/
public class RawRangeWithOriginalTest extends VersionTesting {
public void testRawWithUnknownFormat() {
VersionRange v = new VersionRange("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S");
assertEquals(v, new VersionRange("raw:[1.0,2.0]"));
}
public void testRawWithUnknownFormatToString() {
assertEquals("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S", new VersionRange("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S").toString());
}
public void testRawWithUnknownFormatSerialized() {
assertSerialized(new VersionRange("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S"));
assertEquals("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S", getSerialized(new VersionRange("raw:[1.0,2.0]/:sailor.moon.R,sailor.moon.S")).toString());
}
public void testRawWithSimpleFormat() {
VersionRange v = new VersionRange("raw:[1.0,2.0]/format(n.n):[1.0,2.0]");
assertEquals(v, new VersionRange("raw:[1.0,2.0]"));
}
public void testRawWithSimpleFormatToString() {
// range brackets are normalized in toString - not needed in original
assertEquals("raw:[1.0,2.0]/format(n.n):1.0,2.0", new VersionRange("raw:[1.0,2.0]/format(n.n):[1.0,2.0]").toString());
}
public void testRawWithSimpleFormatSerialized() {
assertSerialized(new VersionRange("raw:[1.0,2.0]/format(n.n):[1.0,2.0]"));
// range brackets are normalized in toString - not needed in original
assertEquals("raw:[1.0,2.0]/format(n.n):1.0,2.0", getSerialized(new VersionRange("raw:[1.0,2.0]/format(n.n):[1.0,2.0]")).toString());
}
public void testOriginalStatedButMissing() {
try {
new VersionRange("raw:[1.0,2.0]/");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testOriginalAndUnknownStatedButMissing() {
try {
new VersionRange("raw:[1.0,2.0]/:");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testOriginalIllegalFormat() {
try {
new VersionRange("raw:[1.0,2.0]/foo:");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testOriginalIllegalFormat2() {
try {
new VersionRange("raw:[1.0,2.0]/100:");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testOriginalIllegalFormat3() {
try {
new VersionRange("raw:[1.0,2.0]/'format':");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testOriginalIllegalFormat4() {
try {
new VersionRange("raw:[1.0,2.0]//1.0");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testOriginalIllegalFormat5() {
try {
new VersionRange("raw:[1.0,2.0]/format:");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testOriginalFormatUnbalancedLeft() {
try {
new VersionRange("raw:[1.0,2.0]/formatn.n):");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testOriginalFormatUnbalancedRight() {
try {
new VersionRange("raw:[1.0,2.0]/format(n.n:1.0");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testOriginalFormatOriginalMissing() {
try {
new VersionRange("raw:[1.0,2.0]/format(n.n):");
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testGreaterThan() {
// any version equal or greater than 1.0.0 is ok
VersionRange lowerBound = new VersionRange("raw:2.1.0.M/format(n[.n=0;[.n=0;]][d?S=M;]):2.1");
assertNotIncludedInRange("1.0", lowerBound, "raw:2.0.9");
assertIncludedInRange("1.1", lowerBound, "raw:2.2");
assertIncludedInRange("1.3", lowerBound, "raw:999.999.999.'foo'");
}
public void testMinBoundary() {
String rangeString = "raw:[-M,2.1.0.M]/format(n[.n=0;[.n=0;]][d?S=M;]):-M,2.1";
VersionRange range = new VersionRange(rangeString);
assertEquals(rangeString, range.toString());
VersionRange range1 = new VersionRange(range.getMinimum(), range.getIncludeMinimum(), range.getMaximum(), range.getIncludeMaximum());
assertEquals(range1, range);
VersionRange range2 = new VersionRange(null, true, range.getMaximum(), range.getIncludeMaximum());
assertEquals(range2, range);
}
public void testOSGiMinBoundary() {
String rangeString = "raw:[-M,2.1.0]/format(n[.n=0;[.n=0;[.S=[A-Za-z0-9_-];]]]):-M,2.1.0";
VersionRange range = new VersionRange(rangeString);
VersionRange range1 = new VersionRange("[0.0.0,2.1.0]");
assertEquals(range1, range);
assertEquals("[0.0.0,2.1.0]", range.toString());
VersionRange range2 = new VersionRange(null, true, range.getMaximum(), range.getIncludeMaximum());
assertEquals(range2, range);
}
public void testMaxBoundary() {
String rangeString = "raw:[2.1.0.M,MpM]/format(n[.n=0;[.n=0;]][d?S=M;]):2.1,MpM";
VersionRange range = new VersionRange(rangeString);
assertEquals("raw:2.1.0.M/format(n[.n=0;[.n=0;]][d?S=M;]):2.1", range.toString());
VersionRange range1 = new VersionRange(range.getMinimum(), range.getIncludeMinimum(), range.getMaximum(), range.getIncludeMaximum());
assertEquals(range1, range);
VersionRange range2 = new VersionRange(range.getMinimum(), true, null, true);
assertEquals(range2, range);
}
public void testRecreateUsingMaxUpper() {
Version v = new Version("format(n[.n=0;[.n=0;]][d?S=M;]):2.1");
VersionRange range = new VersionRange(v, true, null, true);
Version min = range.getMinimum();
Version max = range.getMaximum();
VersionRange range2 = new VersionRange(min, true, max, true);
assertEquals(range2, range);
}
public void testRecreateUsingMinLower() {
Version v = new Version("format(n[.n=0;[.n=0;]][d?S=M;]):2.1");
VersionRange range = new VersionRange(null, true, v, true);
Version min = range.getMinimum();
Version max = range.getMaximum();
VersionRange range2 = new VersionRange(min, true, max, true);
assertEquals(range2, range);
}
public void testOSGiMaxBoundary() {
String rangeString = "raw:[2.1.0,MpM]/format(n[.n=0;[.n=0;[.S=[A-Za-z0-9_-];]]]):2.1.0,MpM";
VersionRange range = new VersionRange(rangeString);
VersionRange range1 = new VersionRange("2.1.0");
assertEquals(range1, range);
assertEquals("2.1.0", range.toString());
VersionRange range2 = new VersionRange(range.getMinimum(), true, null, true);
assertEquals(range2, range);
}
}