/*
* Copyright (C) 2010 Brockmann Consult GmbH (info@brockmann-consult.de)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option)
* any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see http://www.gnu.org/licenses/
*/
package com.bc.ceres.core.runtime.internal;
import junit.framework.TestCase;
import com.bc.ceres.core.runtime.Version;
public class VersionTest extends TestCase {
public void testParsing() {
try {
Version.parseVersion(null);
fail();
} catch (NullPointerException e) {
}
testVersion(Version.parseVersion(""), 1, 0, 0, "");
testVersion(Version.parseVersion(" "), 1, 0, 0, "");
testVersion(Version.parseVersion("A"), 1, 0, 0, "A");
testVersion(Version.parseVersion(" A"), 1, 0, 0, "A");
testVersion(Version.parseVersion("1"), 1, 0, 0, "");
testVersion(Version.parseVersion("1.0"), 1, 0, 0, "");
testVersion(Version.parseVersion("1.0.0"), 1, 0, 0, "");
testVersion(Version.parseVersion("1.0.0.23"), new int[]{1, 0, 0, 23}, "");
testVersion(Version.parseVersion("2"), 2, 0, 0, "");
testVersion(Version.parseVersion("2.5"), 2, 5, 0, "");
testVersion(Version.parseVersion("2.5.1"), 2, 5, 1, "");
testVersion(Version.parseVersion("2.5.1.23"), new int[]{2, 5, 1, 23}, "");
testVersion(Version.parseVersion("4-M1"), 4, 0, 0, "M1");
testVersion(Version.parseVersion("4.3-M1"), 4, 3, 0, "M1");
testVersion(Version.parseVersion("4.3.0-M1"), 4, 3, 0, "M1");
testVersion(Version.parseVersion("4.3.0-M1-SNAPSHOT"), 4, 3, 0, "M1-SNAPSHOT");
testVersion(Version.parseVersion("543"), 543, 0, 0, "");
testVersion(Version.parseVersion("543.765"), 543, 765, 0, "");
testVersion(Version.parseVersion("543.765.93452"), 543, 765, 93452, "");
testVersion(Version.parseVersion("543.765.93452.6743.865.654"), new int[]{543, 765, 93452, 6743, 865, 654}, "");
testVersion(Version.parseVersion("13A"), 1, 0, 0, "13A");
testVersion(Version.parseVersion("13.4A"), 13, 0, 0, "4A");
testVersion(Version.parseVersion("13.4.9656A"), 13, 4, 0, "9656A");
testVersion(Version.parseVersion("13.4.9656.A"), 13, 4, 9656, "A");
testVersion(Version.parseVersion("13.4.9656.12A"), 13, 4, 9656, "12A");
testVersion(Version.parseVersion("13A"), 1, 0, 0, "13A");
testVersion(Version.parseVersion("13-4A"), 13, 0, 0, "4A");
testVersion(Version.parseVersion("13-4-9656A"), 13, 4, 0, "9656A");
testVersion(Version.parseVersion("13-4-9656-A"), 13, 4, 9656, "A");
testVersion(Version.parseVersion("13-4-9656-12A"), 13, 4, 9656, "12A");
}
public void testToString() {
assertEquals("1.6.3-SNAPSHOT", new Version(1, 6, 3, "SNAPSHOT").toString());
assertEquals("1.6.3-SNAPSHOT", Version.parseVersion("1.6.3-SNAPSHOT").toString());
assertEquals("1-6-3_SNAPSHOT", Version.parseVersion("1-6-3_SNAPSHOT").toString());
assertEquals("1.0.0-RC4", new Version(1, 0, 0, "RC4").toString());
assertEquals("10.3.2-RC4", new Version(10, 3, 2, "RC4").toString());
}
public void testPartSeparators() {
assertEquals(Version.parseVersion("1.6"), Version.parseVersion("1.6"));
assertEquals(Version.parseVersion("1.6"), Version.parseVersion("1-6"));
assertEquals(Version.parseVersion("1.6"), Version.parseVersion("1_6"));
assertEquals(Version.parseVersion("1-6"), Version.parseVersion("1_6"));
}
public void testCompareMajor() {
Version v1;
Version v2;
v1 = new Version(4, 2, 6, "");
v2 = new Version(5, 2, 6, "");
assertTrue(v1.compareTo(v2) < 0);
v1 = new Version(4, 2, 6, "");
v2 = new Version(4, 2, 6, "");
assertTrue(v1.compareTo(v2) == 0);
v1 = new Version(4, 2, 6, "");
v2 = new Version(3, 2, 6, "");
assertTrue(v1.compareTo(v2) > 0);
}
public void testCompareMinor() {
Version v1;
Version v2;
v1 = new Version(4, 4, 12, "");
v2 = new Version(4, 9, 12, "");
assertTrue(v1.compareTo(v2) < 0);
v1 = new Version(4, 4, 12, "");
v2 = new Version(4, 4, 12, "");
assertTrue(v1.compareTo(v2) == 0);
v1 = new Version(4, 4, 12, "");
v2 = new Version(4, 1, 12, "");
assertTrue(v1.compareTo(v2) > 0);
}
public void testCompareMicro() {
Version v1;
Version v2;
v1 = new Version(4, 2, 4, "");
v2 = new Version(4, 2, 5, "");
assertTrue(v1.compareTo(v2) < 0);
v1 = new Version(4, 2, 4, "");
v2 = new Version(4, 2, 4, "");
assertTrue(v1.compareTo(v2) == 0);
v1 = new Version(4, 2, 4, "");
v2 = new Version(4, 2, 1, "");
assertTrue(v1.compareTo(v2) > 0);
}
public void testCompareSnapshot() {
Version v1;
Version v2;
v1 = Version.parseVersion("2.2");
v2 = Version.parseVersion("2.2-SNAPSHOT");
assertTrue(v1.compareTo(v2) > 0);
v1 = Version.parseVersion("2.2-SNAPSHOT");
v2 = Version.parseVersion("2.1-SNAPSHOT");
assertTrue(v1.compareTo(v2) > 0);
v1 = Version.parseVersion("2.2.4-SNAPSHOT");
v2 = Version.parseVersion("2.2.1-SNAPSHOT");
assertTrue(v1.compareTo(v2) > 0);
v1 = Version.parseVersion("2.2.1");
v2 = Version.parseVersion("2.2-SNAPSHOT");
assertTrue(v1.compareTo(v2) > 0);
v1 = Version.parseVersion("2.2.2-SNAPSHOT");
v2 = Version.parseVersion("2.2");
assertTrue(v1.compareTo(v2) > 0);
v1 = Version.parseVersion("2.2-SNAPSHOT");
v2 = Version.parseVersion("2.2-SNAPSHOT");
assertTrue(v1.compareTo(v2) == 0);
}
public void testCompareQualifier() {
Version v1;
Version v2;
v1 = new Version(4, 2, 1, "RC2");
v2 = new Version(4, 2, 1, "RC3");
assertTrue(v1.compareTo(v2) < 0);
v1 = new Version(4, 2, 1, "RC2");
v2 = new Version(4, 2, 1, "RC2");
assertTrue(v1.compareTo(v2) == 0);
v1 = new Version(4, 2, 1, "RC2");
v2 = new Version(4, 2, 1, "RC1");
assertTrue(v1.compareTo(v2) > 0);
v1 = new Version(4, 2, 1, "RC2");
v2 = new Version(4, 2, 1, "RC13");
assertTrue(v1.compareTo(v2) > 0);
v1 = new Version(4, 2, 1, "RC1");
v2 = new Version(4, 2, 1, "RC13");
assertTrue(v1.compareTo(v2) < 0);
v1 = new Version(4, 2, 1, "");
v2 = new Version(4, 2, 1, "RC13");
assertTrue(v1.compareTo(v2) > 0);
v1 = new Version(4, 2, 1, "");
v2 = new Version(4, 2, 1, "9785");
assertTrue(v1.compareTo(v2) < 0);
v1 = new Version(1, 0, 0, "SNAPSHOT-20120110135600");
v2 = new Version(1, 0, 0, "SNAPSHOT-20120110135601");
assertTrue(v1.compareTo(v2) < 0);
v1 = new Version(4, 2, 1, "");
v2 = new Version(4, 2, 1, "0");
assertTrue(v1.compareTo(v2) == 0);
v1 = new Version(4, 2, 1, "0000");
v2 = new Version(4, 2, 1, "");
assertTrue(v1.compareTo(v2) == 0);
v1 = new Version(4, 2, 1, "00.00");
v2 = new Version(4, 2, 1, "");
assertTrue(v1.compareTo(v2) == 0);
v1 = new Version(4, 2, 1, "54.324");
v2 = new Version(4, 2, 1, "54");
assertTrue(v1.compareTo(v2) > 0);
}
private static void testVersion(Version actualVersion,
int expectedMajor,
int expectedMinor,
int expectedMicro,
String expectedQualifier) {
assertEquals(expectedMajor, actualVersion.getMajor());
assertEquals(expectedMinor, actualVersion.getMinor());
assertEquals(expectedMicro, actualVersion.getMicro());
assertEquals(expectedQualifier, actualVersion.getQualifier());
}
private static void testVersion(Version actualVersion,
int[] expectedNumbers,
String expectedQualifier) {
assertEquals(expectedNumbers.length, actualVersion.getNumberCount());
for (int i = 0; i < expectedNumbers.length; i++) {
assertEquals("expectedNumbers[" + i + "]", expectedNumbers[i], actualVersion.getNumber(i));
}
assertEquals(expectedQualifier, actualVersion.getQualifier());
}
}