package com.github.qwazer.mavenplugins.gitlog;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.junit.Test;
import java.util.LinkedList;
import java.util.List;
import static java.util.Arrays.asList;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
public class VersionUtilTest {
@Test
public void testCalculateVersionTagNamePartPatch() throws Exception {
String version = "1.2.3";
String part = VersionUtil.calculateVersionTagNamePart(version, CalculateRuleForSinceTagName.LATEST_RELEASE_VERSION);
assertEquals("1.2.2", part);
}
@Test
public void testCalculateVersionTagNamePartPatchSame() throws Exception {
String version = "1.2.0";
String part = VersionUtil.calculateVersionTagNamePart(version, CalculateRuleForSinceTagName.LATEST_RELEASE_VERSION);
assertEquals("1.2.0", part);
}
@Test
public void testCalculateVersionTagNamePartMinor() throws Exception {
String version = "1.2.1";
String part = VersionUtil.calculateVersionTagNamePart(version, CalculateRuleForSinceTagName.CURRENT_MINOR_VERSION);
assertEquals("1.2.0", part);
}
@Test
public void testCalculateVersionTagNamePartMinorZeroPatch() throws Exception {
String version = "1.2.0";
String part = VersionUtil.calculateVersionTagNamePart(version, CalculateRuleForSinceTagName.CURRENT_MINOR_VERSION);
assertEquals("1.2.0", part);
}
@Test
public void testCalculateVersionTagNamePartMajor() throws Exception {
String version = "1.2.0";
String part = VersionUtil.calculateVersionTagNamePart(version, CalculateRuleForSinceTagName.CURRENT_MAJOR_VERSION);
assertEquals("1.0.0", part);
}
@Test
public void testCalculateVersionTagNamePartMajorZero() throws Exception {
String version = "2.0.0";
String part = VersionUtil.calculateVersionTagNamePart(version, CalculateRuleForSinceTagName.CURRENT_MAJOR_VERSION);
assertEquals("2.0.0", part);
}
@Test
public void testParseArtifactVersionSimple() throws Exception {
String version = "2.1.10";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(2, artifactVersion.getMajorVersion());
assertEquals(1, artifactVersion.getMinorVersion());
assertEquals(10, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionSimple2() throws Exception {
String version = "v25.1.9010";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(25, artifactVersion.getMajorVersion());
assertEquals(1, artifactVersion.getMinorVersion());
assertEquals(9010, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionSimple3() throws Exception {
String version = "saasa v254545.11.9010";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(254545, artifactVersion.getMajorVersion());
assertEquals(11, artifactVersion.getMinorVersion());
assertEquals(9010, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionPrefix() throws Exception {
String version = "asa-2.1.10";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(2, artifactVersion.getMajorVersion());
assertEquals(1, artifactVersion.getMinorVersion());
assertEquals(10, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionPrefix2() throws Exception {
String version = "V 2.1.10";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(2, artifactVersion.getMajorVersion());
assertEquals(1, artifactVersion.getMinorVersion());
assertEquals(10, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionSuffix() throws Exception {
String version = "2.1.10-V";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(2, artifactVersion.getMajorVersion());
assertEquals(1, artifactVersion.getMinorVersion());
assertEquals(10, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionIncomplete() throws Exception {
String version = "2.1";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(2, artifactVersion.getMajorVersion());
assertEquals(1, artifactVersion.getMinorVersion());
assertEquals(0, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionSuffix2() throws Exception {
String version = "2.1.10 v";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(2, artifactVersion.getMajorVersion());
assertEquals(1, artifactVersion.getMinorVersion());
assertEquals(10, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionSuffix3() throws Exception {
String version = "2.v";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(2, artifactVersion.getMajorVersion());
assertEquals(0, artifactVersion.getMinorVersion());
assertEquals(0, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionSuffix4() throws Exception {
String version = "25 version of progamm";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(25, artifactVersion.getMajorVersion());
assertEquals(0, artifactVersion.getMinorVersion());
assertEquals(0, artifactVersion.getIncrementalVersion());
}
@Test
public void testParseArtifactVersionMix() throws Exception {
String version = "this is version 25.9 of progamm";
ArtifactVersion artifactVersion = VersionUtil.parseArtifactVersion(version);
assertEquals(25, artifactVersion.getMajorVersion());
assertEquals(9, artifactVersion.getMinorVersion());
assertEquals(0, artifactVersion.getIncrementalVersion());
}
@Test
public void testAddSuffixIfNeeded() throws Exception {
String s = VersionUtil.addSuffixDelimeterIfNeeded("1.2.3v");
assertEquals("1.2.3-v", s);
}
@Test
public void testAddSuffixIfNeeded2() throws Exception {
String s = VersionUtil.addSuffixDelimeterIfNeeded("1.2.3.v");
assertEquals("1.2.3-v", s);
}
@Test
public void testFindNearestVersionTagsBefore() throws Exception {
List<String> list = asList("1.0.0", "1.1.0", "2.0.0");
String version = "1.2.0";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("1.1.0", foundVersion);
}
@Test
public void testFindNearestVersionTagsBeforeRC() throws Exception {
List<String> list = asList("1.0.0-RC1", "1.0.0-RC2", "1.0.0-RC3");
String version = "1.0.0-RC2";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("1.0.0-RC2", foundVersion);
}
@Test
public void testFindNearestVersionTagsBeforeRC3() throws Exception {
List<String> list = asList("1.0.0-RC1", "1.0.0-RC2", "1.0.0-RC4");
String version = "1.0.0-RC3";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("1.0.0-RC2", foundVersion);
}
@Test
public void testFindNearestVersionTagsBeforeMC1() throws Exception {
List<String> list = asList("1.0.0-M01", "1.0.0-RC2", "1.0.0-RC4");
String version = "1.0.0-RC3";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("1.0.0-RC2", foundVersion);
}
@Test
public void testFindNearestVersionTagsBeforeMC2() throws Exception {
List<String> list = asList("1.0.0-M01", "1.0.0-M2", "1.0.0-RC4");
String version = "1.0.0-RC3";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("1.0.0-M2", foundVersion);
}
@Test
public void testFindNearestVersionTagsBefore1() throws Exception {
List<String> list = asList("1.0.0");
String version = "1.2.0";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("1.0.0", foundVersion);
}
@Test
public void testFindNearestVersionTagsBeforeNull() throws Exception {
List<String> list = asList();
String version = "1.2.0";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals(null, foundVersion);
}
@Test
public void testFindNearestVersionTagsBefore12() throws Exception {
List<String> list = asList("tagName");
String version = "1.2.0";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("tagName", foundVersion);
}
@Test
public void testFindNearestVersionTagsBeforeLeadingZero() throws Exception {
List<String> list = asList("01.05", "01.03", "01.01");
String version = "01.02";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("01.01", foundVersion);
}
@Test
public void testFindNearestVersionTagsBeforeLeadingZeroPrefix() throws Exception {
List<String> list = asList("v01.05", "v01.03", "v01.01");
String version = "01.02";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("v01.01", foundVersion);
}
@Test
public void testRemoveNonDigitPrefix() throws Exception {
String s = "1.2.3";
String r = VersionUtil.removeNonDigitPrefix(s);
assertEquals(s, r);
}
@Test
public void testRemoveNonDigitPrefix2() throws Exception {
String s = "abs-1.2.3";
String r = VersionUtil.removeNonDigitPrefix(s);
assertEquals("1.2.3", r);
}
@Test
public void testRemoveNonDigitPrefix3() throws Exception {
String s = "";
String r = VersionUtil.removeNonDigitPrefix(s);
assertEquals("", r);
}
@Test
public void testFindNearestVersionTagsRealCase01() throws Exception {
List<String> list = asList("7.17.1_deals_config_fix", "7.17.8", "7.18.0",
"7.18.1", "7.18.2", "7.18.3", "build-6.2.14", "build-6.2.4", "build-6.2.5",
"build-6.2.6", "build-6.2.7", "build-6.3", "build-6.4", "build-6.4.1",
"build-6.6.29", "build-6.8", "build-7.6.122", "cummulative",
"v7.18.4", "v7.19.0", "v7.19.1", "v7.19.2", "v7.19.3", "v7.19.4", "v7.19.5", "v7.20.0",
"v7.20.1", "v7.20.2", "v7.20.3", "v7.20.4", "v7.20.5", "v7.20.6", "v8.0.0",
"v8.0.1", "v8.0.2", "v8.0.3", "v8.0.4", "v8.0.5", "v8.0.6", "v8.0.7", "v8.0.9",
"v8.1.1", "v8.1.2", "v8.1.3", "v8.2.0", "v8.2.1", "v8.2.2", "v8.2.3", "v8.2.4",
"v8.2.5", "v8.3.0", "v8.3.1");
String version = "8.1.0";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("v8.0.9", foundVersion);
}
@Test
public void testFindNearestVersionTagsRealCase02() throws Exception {
List<String> list = asList("7.17.1_deals_config_fix", "7.17.8", "7.18.0",
"7.18.1", "7.18.2", "7.18.3", "build-6.2.14", "build-6.2.4", "build-6.2.5",
"build-6.2.6", "build-6.2.7", "build-6.3", "build-6.4", "build-6.4.1",
"build-6.6.29", "build-6.8", "build-7.6.122", "cummulative",
"v7.18.4", "v7.19.0", "v7.19.1", "v7.19.2", "v7.19.3", "v7.19.4", "v7.19.5", "v7.20.0",
"v7.20.1", "v7.20.2", "v7.20.3", "v7.20.4", "v7.20.5", "v7.20.6", "v8.0.0",
"v8.0.1", "v8.0.2", "v8.0.3", "v8.0.4", "v8.0.5", "v8.0.6", "v8.0.7", "v8.0.9",
"v8.1.1", "v8.1.2", "v8.1.3", "v8.2.0", "v8.2.1", "v8.2.2", "v8.2.3", "v8.2.4",
"v8.2.5", "v8.3.0", "v8.3.1");
String version = "8.2.0";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("v8.2.0", foundVersion);
}
@Test
public void testFindNearestVersionTagsRealCase03() throws Exception {
List<String> list = asList("1.0.0.M1", "1.0.0.M2", "1.0.0.RC1", "1.0.0.RC2",
"1.0.0.RC3", "1.0.0.RC4", "1.0.0.RELEASE",
"1.0.1.RELEASE", "1.0.2.RELEASE", "1.1.0.M2",
"1.1.0.M3", "1.1.0.RC1", "1.1.0.RELEASE", "1.1.1.RELEASE",
"1.1.2.RELEASE", "1.1.3.RELEASE", "1.1.4.RELEASE", "1.1.5.RELEASE",
"1.2.0.M1", "1.2.0.RC1", "1.2.0.RELEASE", "1.2.1.RELEASE", "1.2.2.RELEASE",
"1.2.3.RELEASE", "1.2.4.RELEASE", "1.2.5.RELEASE", "1.3.0.RELEASE", "1.3.1.RC1",
"1.3.1.RC2", "1.3.1.RELEASE");
String version = "1.3.0";
String foundVersion = VersionUtil.findNearestVersionTagsBefore(list, version);
assertEquals("1.3.0.RELEASE", foundVersion);
}
@Test
public void testSortAndFilter() throws Exception {
List<String> list = asList("1.0.0.M1", "1.1.0.M2", "1.1.1.RELEASE","1.2.5.RELEASE" );
LinkedList linkedList = VersionUtil.sortAndFilter(list, "1.1.0.M2", "1.1.1.RELEASE") ;
assertEquals(2, linkedList.size());
assertTrue(linkedList.contains("1.1.0.M2"));
assertTrue(linkedList.contains("1.1.1.RELEASE"));
}
@Test(expected = IllegalArgumentException.class)
public void testSortAndFilterIllegal() throws Exception {
List<String> list = asList("1.0.0.M1", "1.1.0.M2", "1.1.1.RELEASE","1.2.5.RELEASE" );
LinkedList linkedList = VersionUtil.sortAndFilter(list, "2.1.0.M2", "1.1.1.RELEASE") ;
}
}