| /******************************************************************************* |
| * 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; |
| |
| /** |
| * Test common patterns: |
| * - Triplet |
| * - Mozilla |
| * - RPM |
| * - JSR277 (proposed version handling as documented Dec 30, 2008). |
| * |
| */ |
| public class CommonPatternsTest extends VersionTesting { |
| public static String MOZ_PREFIX = "format((<N=0;?s=m;?N=0;?s=m;?>(.<N=0;?s=m;?N=0;?s=m;?>)*)=p<0.m.0.m>;):"; |
| public static String TRIPLE_PREFIX = "format(n=0;[.n=0;[.n=0;]][dS=m;]):"; |
| public static String RPM_PREFIX = "format(<[n=0;:]a(d=[^a-zA-Z0-9@_-];?a)*>[-n[dS=!;]]):"; |
| public static String JSR277_PREFIX = "format(n(.n=0;){0,3}[-S=m;]):"; |
| |
| public void testMozillaPattern() { |
| |
| // 1.-1 |
| Version v1 = Version.parseVersion(MOZ_PREFIX + "1.-1"); |
| |
| // < 1 == 1. == 1.0 == 1.0.0 |
| Version v2 = Version.parseVersion(MOZ_PREFIX + "1"); |
| Version v2a = Version.parseVersion(MOZ_PREFIX + "1."); |
| Version v2b = Version.parseVersion(MOZ_PREFIX + "1.0"); |
| Version v2c = Version.parseVersion(MOZ_PREFIX + "1.0.0"); |
| |
| assertOrder(v1, v2); |
| assertEquals(v2, v2a); |
| assertEquals(v2a, v2b); |
| assertEquals(v2b, v2c); |
| |
| // < 1.1a < 1.1aa < 1.1ab < 1.1b < 1.1c |
| Version v3 = Version.parseVersion(MOZ_PREFIX + "1.1a"); |
| Version v4 = Version.parseVersion(MOZ_PREFIX + "1.1aa"); |
| Version v5 = Version.parseVersion(MOZ_PREFIX + "1.1ab"); |
| Version v6 = Version.parseVersion(MOZ_PREFIX + "1.1b"); |
| Version v7 = Version.parseVersion(MOZ_PREFIX + "1.1c"); |
| |
| assertOrder(v2c, v3); |
| assertOrder(v3, v4); |
| assertOrder(v4, v5); |
| assertOrder(v5, v6); |
| assertOrder(v6, v7); |
| |
| // < 1.1pre == 1.1pre0 == 1.0+ |
| Version v8 = Version.parseVersion(MOZ_PREFIX + "1.1pre"); |
| Version v8a = Version.parseVersion(MOZ_PREFIX + "1.1pre0"); |
| |
| assertOrder(v7, v8); |
| assertEquals(v8, v8a); |
| |
| /* NOT SUPPORTED BY OMNI VERSION: Version v8b = Version.parseVersion(MOZ_PREFIX +"1.0+"); */ |
| |
| // < 1.1pre1a < 1.1pre1aa < 1.1pre1b < 1.1pre1 |
| Version v9 = Version.parseVersion(MOZ_PREFIX + "1.1pre1a"); |
| Version v10 = Version.parseVersion(MOZ_PREFIX + "1.1pre1aa"); |
| Version v11 = Version.parseVersion(MOZ_PREFIX + "1.1pre1b"); |
| Version v12 = Version.parseVersion(MOZ_PREFIX + "1.1pre1"); |
| |
| assertOrder(v8a, v9); |
| assertOrder(v9, v10); |
| assertOrder(v10, v11); |
| assertOrder(v11, v12); |
| |
| // < 1.1pre2 |
| Version v13 = Version.parseVersion(MOZ_PREFIX + "1.1pre2"); |
| assertOrder(v12, v13); |
| |
| // < 1.1pre10 |
| Version v14 = Version.parseVersion(MOZ_PREFIX + "1.1pre10"); |
| assertOrder(v13, v14); |
| |
| //< 1.1.-1 |
| Version v15 = Version.parseVersion(MOZ_PREFIX + "1.1.-1"); |
| assertOrder(v14, v15); |
| |
| // < 1.1 == 1.1.0 == 1.1.00 |
| Version v16 = Version.parseVersion(MOZ_PREFIX + "1.1"); |
| Version v16a = Version.parseVersion(MOZ_PREFIX + "1.1.0"); |
| Version v16b = Version.parseVersion(MOZ_PREFIX + "1.1.00"); |
| |
| assertOrder(v15, v16); |
| assertEquals(v16, v16a); |
| assertEquals(v16a, v16b); |
| |
| // < 1.10 |
| Version v17 = Version.parseVersion(MOZ_PREFIX + "1.10"); |
| assertOrder(v16a, v17); |
| |
| // < 1.* < 1.*.1 |
| /* NOT SUPPORTED BY OMNIVERSION: Version v18 = Version.parseVersion(MOZ_PREFIX +"1.1a"); */ |
| |
| // < 2.0 |
| Version v18 = Version.parseVersion(MOZ_PREFIX + "2.0"); |
| assertOrder(v17, v18); |
| } |
| |
| public void testMozillaPatternToString() { |
| String test = MOZ_PREFIX + "1.1pre1aa"; |
| assertEquals(MOZ_PREFIX, Version.parseVersion(test).getFormat().toString() + ':'); |
| } |
| |
| public void testTripletPattern() { |
| Version v1 = Version.parseVersion(TRIPLE_PREFIX + "1"); |
| Version v1a = Version.parseVersion(TRIPLE_PREFIX + "1.0"); |
| Version v1b = Version.parseVersion(TRIPLE_PREFIX + "1.0.0"); |
| assertEquals(v1, v1a); |
| assertEquals(v1a, v1b); |
| |
| Version v2 = Version.parseVersion(TRIPLE_PREFIX + "1.0.0.a"); |
| assertOrder(v2, v1); // yes 1.0.0.a is OLDER |
| |
| Version v3 = Version.parseVersion(TRIPLE_PREFIX + "1.1"); |
| assertOrder(v1b, v3); |
| |
| Version v4 = Version.parseVersion(TRIPLE_PREFIX + "1.1.0.a"); |
| assertOrder(v4, v3); // yes 1.1.0.a is OLDER |
| |
| Version v5 = Version.parseVersion(TRIPLE_PREFIX + "2"); |
| assertOrder(v3, v5); |
| |
| Version v6 = Version.parseVersion(TRIPLE_PREFIX + "1.1-FC1"); |
| assertOrder(v6, v3); |
| } |
| |
| public void testTripletPatternToString() { |
| String test = TRIPLE_PREFIX + "1.0-FC1"; |
| assertEquals(TRIPLE_PREFIX, Version.parseVersion(test).getFormat().toString() + ':'); |
| } |
| |
| // TODO: Not clear what a missing RPM EPOCH (i.e. first '.n:' should be interpreted as |
| public void testRPMPattern() { |
| Version v1 = Version.parseVersion(RPM_PREFIX + "33:1.2.3a-23/i386"); |
| assertEquals(Version.parseVersion("raw:<33.1.2.3.'a'>.23"), v1); |
| Version v2 = Version.parseVersion(RPM_PREFIX + "34:1"); |
| assertOrder(v1, v2); |
| |
| Version v3 = Version.parseVersion(RPM_PREFIX + "33:1.2.3b"); |
| assertOrder(v1, v3); |
| Version v11 = Version.parseVersion(RPM_PREFIX + "1-1"); |
| Version v12 = Version.parseVersion(RPM_PREFIX + "1-2"); |
| Version v13 = Version.parseVersion(RPM_PREFIX + "1.0"); |
| Version v14 = Version.parseVersion(RPM_PREFIX + "1.1"); |
| assertOrder(v11, v12); |
| assertOrder(v12, v13); |
| |
| assertOrder(v11, v13); |
| assertOrder(v12, v13); |
| |
| assertOrder(v11, v14); |
| assertOrder(v12, v14); |
| assertOrder(v13, v14); |
| } |
| |
| public void testRPMPatternToString() { |
| String test = RPM_PREFIX + "33:1.2.3a-23/i386"; |
| assertEquals(RPM_PREFIX, Version.parseVersion(test).getFormat().toString() + ':'); |
| } |
| |
| /** |
| * JSR277 works like triplet, but has 4 elements. The last qualifier can be used without specifying the preceding |
| * three segments. |
| */ |
| public void testJsr277Pattern() { |
| Version v1 = Version.parseVersion(JSR277_PREFIX + "1"); |
| Version v1a = Version.parseVersion(JSR277_PREFIX + "1.0"); |
| Version v1b = Version.parseVersion(JSR277_PREFIX + "1.0.0"); |
| Version v1c = Version.parseVersion(JSR277_PREFIX + "1.0.0.0"); |
| assertEquals(v1, v1a); |
| assertEquals(v1a, v1b); |
| assertEquals(v1b, v1c); |
| |
| Version v2 = Version.parseVersion(JSR277_PREFIX + "1-a"); |
| Version v2a = Version.parseVersion(JSR277_PREFIX + "1.0-a"); |
| Version v2b = Version.parseVersion(JSR277_PREFIX + "1.0.0-a"); |
| Version v2c = Version.parseVersion(JSR277_PREFIX + "1.0.0.0-a"); |
| assertOrder(v2, v1); // yes 1.0.0.a is OLDER |
| assertEquals(v2, v2a); |
| assertEquals(v2a, v2b); |
| assertEquals(v2b, v2c); |
| |
| Version v3 = Version.parseVersion(JSR277_PREFIX + "1.1"); |
| assertOrder(v1b, v3); |
| |
| Version v4 = Version.parseVersion(JSR277_PREFIX + "1.1.0-a"); |
| assertOrder(v4, v3); // yes 1.1.0.a is OLDER |
| |
| Version v5 = Version.parseVersion(JSR277_PREFIX + "2"); |
| assertOrder(v3, v5); |
| } |
| |
| public void testJsr277PatternToString() { |
| String test = JSR277_PREFIX + "1.0.0.0-a"; |
| assertEquals(JSR277_PREFIX, Version.parseVersion(test).getFormat().toString() + ':'); |
| } |
| } |