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