package org.codehaus.gmavenplus.model;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* Unit tests for the Version class.
*
* @author Keegan Witt
*/
public class VersionTest {
@Test
public void testCompare() {
assertTrue(new Version(1, 9).compareTo(new Version(1, 10)) < 0);
}
@Test
public void testCompareWithTag() {
Version v1 = Version.parseFromString("1.0.0");
Version v2 = Version.parseFromString("1.0.0-beta-1");
assertTrue(v1.compareTo(v2) > 0);
}
@Test
public void testCompareWithTwoTags() {
Version v1 = Version.parseFromString("1.0.0-beta-1");
Version v2 = Version.parseFromString("1.0.0-beta-2");
assertTrue(v1.compareTo(v2) < 0);
}
@Test
public void testCompareWithTwoTagsDifferentStartUppercase() {
Version v1 = Version.parseFromString("1.0.0-beta-1");
Version v2 = Version.parseFromString("1.0.0-RC-2");
assertTrue(v1.compareTo(v2) < 0);
}
@Test
public void testCompareWithTwoTagsDifferentStartLowercase() {
Version v1 = Version.parseFromString("1.0.0-beta-1");
Version v2 = Version.parseFromString("1.0.0-rc-2");
assertTrue(v1.compareTo(v2) < 0);
}
@Test
public void testCompareWithSnapshotTag() {
Version v1 = Version.parseFromString("1.0-SNAPSHOT");
Version v2 = Version.parseFromString("1.0");
assertTrue(v1.compareTo(v2) < 0);
}
@Test
public void testCompareWithSnapshotTagOtherHasRevision() {
Version v1 = Version.parseFromString("1.0-SNAPSHOT");
Version v2 = Version.parseFromString("1.0.1");
assertTrue(v1.compareTo(v2) < 0);
}
@Test
public void testCompareWithTwoTagsOneSnapshot() {
Version v1 = Version.parseFromString("1.0.0-beta-1");
Version v2 = Version.parseFromString("1.0.0-beta-2-SNAPSHOT");
assertTrue(v1.compareTo(v2) < 0);
v1 = Version.parseFromString("1.0.0-beta-1-SNAPSHOT");
v2 = Version.parseFromString("1.0.0-beta-2");
assertTrue(v1.compareTo(v2) < 0);
}
@Test
public void testSort() {
Version v1 = Version.parseFromString("1.0.0-beta-1");
Version v2 = Version.parseFromString("1.0.0-beta-2");
Version v3 = Version.parseFromString("1.0.0");
Version v4 = Version.parseFromString("1.0.1");
Version v5 = Version.parseFromString("1.1.0");
Version v6 = Version.parseFromString("2.0.0");
List<Version> versions = new ArrayList<Version>();
versions.add(v1);
versions.add(v2);
versions.add(v3);
versions.add(v4);
versions.add(v5);
versions.add(v6);
Collections.sort(versions);
assertEquals(v1, versions.get(0));
assertEquals(v2, versions.get(1));
assertEquals(v3, versions.get(2));
assertEquals(v4, versions.get(3));
assertEquals(v5, versions.get(4));
assertEquals(v6, versions.get(5));
}
@Test(expected = IllegalArgumentException.class)
public void testConstructorWithNegatives() {
new Version(-1);
}
@Test
public void testNotEqualsWithNonVersion() {
Version version = new Version(0);
assertFalse(version.toString().equals(""));
}
@Test(expected = IllegalArgumentException.class)
public void testParseFromStringMajorIsNotInteger() {
Version.parseFromString("a.b");
}
@Test
public void testParseFromStringMinorIsNotInteger() {
Version version = Version.parseFromString("0.a");
assertEquals(0, version.getMinor());
}
@Test(expected = IllegalArgumentException.class)
public void testParseFromStringNull() {
Version.parseFromString(null);
}
@Test(expected = IllegalArgumentException.class)
public void testParseFromStringEmpty() {
Version.parseFromString("");
}
@Test
public void testParseFromStringAndToStringWithMultiPartTag() {
assertEquals(5, Version.parseFromString("0-multi-part-tag").toString().split("-").length);
}
@Test
public void testParsingJavaVersion() {
assertTrue(Version.parseFromString("1.7.0_45").compareTo(new Version(1, 7), false) >= 0);
}
@Test
public void testGettersAndSetters() {
int num = 1;
String str = "string";
Version version = new Version(0)
.setMajor(num)
.setMinor(num)
.setRevision(num)
.setTag(str);
assertEquals(num, version.getMajor());
assertEquals(num, version.getMinor());
assertEquals(num, version.getRevision());
assertEquals(str, version.getTag());
}
@Test
public void testHashCodeSame() {
Version one = new Version(1, 2, 3);
Version two = new Version(1, 2, 3);
assertEquals(one.hashCode(), two.hashCode());
}
}