package li.strolch.utils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; import li.strolch.utils.Version; import li.strolch.utils.helper.StringHelper; /** * Tests the {@link Version} class */ public class VersionTest { @Test public void shouldParseMajoMinoMicro() { Version version = Version.valueOf("1.0.2"); assertEquals(1, version.getMajor()); assertEquals(0, version.getMinor()); assertEquals(2, version.getMicro()); assertEquals(StringHelper.EMPTY, version.getQualifier()); assertEquals(StringHelper.EMPTY, version.getQualifier()); assertEquals("1.0.2", version.toString()); } @Test public void shouldParseVersion() { { Version version = Version.valueOf("7.5.6.1"); assertEquals(7, version.getMajor()); assertEquals(5, version.getMinor()); assertEquals(6, version.getMicro()); assertEquals("1", version.getQualifier()); assertTrue(version.isOsgiStyle()); } { Version version = Version.valueOf("7.5.6-1"); assertEquals(7, version.getMajor()); assertEquals(5, version.getMinor()); assertEquals(6, version.getMicro()); assertEquals("1", version.getQualifier()); assertFalse(version.isOsgiStyle()); } } @Test public void shouldCompareVersions() { assertEquals(0, Version.valueOf("7.5.6-1").compareTo(Version.valueOf("7.5.6-1"))); assertTrue(Version.valueOf("7.5.6-1").compareTo(Version.valueOf("7.5.6-2")) < 0); assertTrue(Version.valueOf("7.5.6-1").compareTo(Version.valueOf("7.6.0")) < 0); assertTrue(Version.valueOf("7.5.6-1").compareTo(Version.valueOf("7.6.1")) < 0); assertTrue(Version.valueOf("7.5.6-alpha").compareTo(Version.valueOf("7.6.1-beta")) < 0); assertTrue(Version.valueOf("7.7.0-0").compareTo(Version.valueOf("7.6.99-9")) > 0); assertTrue(Version.valueOf("0.0.1.a").compareTo(Version.valueOf("0.0.1.b")) < 0); assertTrue(Version.valueOf("0.0.1.b").compareTo(Version.valueOf("0.0.1.a")) > 0); assertTrue(Version.valueOf("0.0.1.a").compareTo(Version.valueOf("0.0.1.c")) < 0); assertTrue(Version.valueOf("0.0.1.a").compareTo(Version.valueOf("0.0.1.aa")) < 0); } @Test public void shouldConvertToMajorMinorString() { assertEquals("7.6", Version.valueOf("7.6.1-0").toMajorAndMinorString()); } @Test public void shouldKnowAboutBeingFullyQualified() { assertFalse(Version.valueOf("7").isFullyQualified()); assertFalse(Version.valueOf("7.6").isFullyQualified()); assertFalse(Version.valueOf("7.6.1").isFullyQualified()); assertTrue(Version.valueOf("7.6.1-0").isFullyQualified()); } @Test public void shouldDealWithEclipseStyleSnapshotQualifier() { assertEquals(Version.valueOf("7.6.1-SNAPSHOT").toOsgiStyleString(), "7.6.1.qualifier"); assertEquals(Version.valueOf("7.6.1-SNAPSHOT").toMavenStyleString(), "7.6.1-SNAPSHOT"); assertEquals(Version.valueOf("7.6.1.qualifier").toOsgiStyleString(), "7.6.1.qualifier"); assertEquals(Version.valueOf("7.6.1.qualifier").toMavenStyleString(), "7.6.1-SNAPSHOT"); } @Test public void shouldIncreaseVersion() { Version increased = Version.emptyVersion.add(0, 0, 0); assertEquals("0.0.0", increased.toString()); increased = increased.add(0, 0, 1); assertEquals("0.0.1", increased.toString()); increased = increased.add(0, 1, 0); assertEquals("0.1.1", increased.toString()); increased = increased.add(1, 0, 0); assertEquals("1.1.1", increased.toString()); increased = increased.add(-1, 0, 0); assertEquals("0.1.1", increased.toString()); increased = increased.add(0, -1, 0); assertEquals("0.0.1", increased.toString()); increased = increased.add(0, 0, -1); assertEquals("0.0.0", increased.toString()); } }