Make refactoring, rename class members, add comment
This commit is contained in:
parent
220384023c
commit
e5041f42cb
|
@ -33,11 +33,12 @@ import java.util.regex.Pattern;
|
|||
*/
|
||||
public class Version implements Comparable<Version> {
|
||||
|
||||
private int major;
|
||||
private int minor;
|
||||
private int patch;
|
||||
private String preRelease;
|
||||
private String build;
|
||||
private int majorVersion;
|
||||
private int minorVersion;
|
||||
private int patchVersion;
|
||||
|
||||
private String preReleaseVersion;
|
||||
private String buildVersion;
|
||||
|
||||
private static final String NORMAL_VERSION =
|
||||
"((?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+))";
|
||||
|
@ -59,73 +60,73 @@ public class Version implements Comparable<Version> {
|
|||
"Illegal version format"
|
||||
);
|
||||
}
|
||||
major = Integer.parseInt(matcher.group("major"));
|
||||
minor = Integer.parseInt(matcher.group("minor"));
|
||||
patch = Integer.parseInt(matcher.group("patch"));
|
||||
majorVersion = Integer.parseInt(matcher.group("major"));
|
||||
minorVersion = Integer.parseInt(matcher.group("minor"));
|
||||
patchVersion = Integer.parseInt(matcher.group("patch"));
|
||||
|
||||
preRelease = matcher.group("preRelease");
|
||||
build = matcher.group("build");
|
||||
preReleaseVersion = matcher.group("preRelease");
|
||||
buildVersion = matcher.group("build");
|
||||
}
|
||||
|
||||
public int getMajor() {
|
||||
return major;
|
||||
public int getMajorVersion() {
|
||||
return majorVersion;
|
||||
}
|
||||
|
||||
public int getMinor() {
|
||||
return minor;
|
||||
public int getMinorVersion() {
|
||||
return minorVersion;
|
||||
}
|
||||
|
||||
public int getPatch() {
|
||||
return patch;
|
||||
public int getPatchVersion() {
|
||||
return patchVersion;
|
||||
}
|
||||
|
||||
public String getPreRelease() {
|
||||
return preRelease;
|
||||
public String getPreReleaseVersion() {
|
||||
return preReleaseVersion;
|
||||
}
|
||||
|
||||
public String getBuild() {
|
||||
return build;
|
||||
public String getBuildVersion() {
|
||||
return buildVersion;
|
||||
}
|
||||
|
||||
public void bumpMajor() {
|
||||
major = major + 1;
|
||||
minor = 0;
|
||||
patch = 0;
|
||||
public void bumpMajorVersion() {
|
||||
majorVersion = majorVersion + 1;
|
||||
minorVersion = 0;
|
||||
patchVersion = 0;
|
||||
}
|
||||
|
||||
public void bumpMinor() {
|
||||
minor = minor + 1;
|
||||
patch = 0;
|
||||
public void bumpMinorVersion() {
|
||||
minorVersion = minorVersion + 1;
|
||||
patchVersion = 0;
|
||||
}
|
||||
|
||||
public void bumpPatch() {
|
||||
patch = patch + 1;
|
||||
public void bumpPatchVersion() {
|
||||
patchVersion = patchVersion + 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Version other) {
|
||||
int result = compareNormalVersions(other);
|
||||
if (result == 0 && preRelease != null) {
|
||||
if (result == 0 && preReleaseVersion != null) {
|
||||
result = compareAlphaNumericVersions(
|
||||
preRelease,
|
||||
other.getPreRelease()
|
||||
preReleaseVersion,
|
||||
other.getPreReleaseVersion()
|
||||
);
|
||||
}
|
||||
if (result == 0 && build != null) {
|
||||
if (result == 0 && buildVersion != null) {
|
||||
result = compareAlphaNumericVersions(
|
||||
build,
|
||||
other.getBuild()
|
||||
buildVersion,
|
||||
other.getBuildVersion()
|
||||
);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private int compareNormalVersions(Version other) {
|
||||
int result = compareInts(major, other.getMajor());
|
||||
int result = compareInts(majorVersion, other.getMajorVersion());
|
||||
if (result == 0) {
|
||||
result = compareInts(minor, other.getMinor());
|
||||
result = compareInts(minorVersion, other.getMinorVersion());
|
||||
if (result == 0) {
|
||||
result = compareInts(patch, other.getPatch());
|
||||
result = compareInts(patchVersion, other.getPatchVersion());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
@ -148,8 +149,7 @@ public class Version implements Comparable<Version> {
|
|||
|
||||
private int compareIdentifierArrays(String[] thisArr, String[] otherArr) {
|
||||
int result = 0;
|
||||
int loopCount = getSmallestArrayLength(thisArr, otherArr);
|
||||
for (int i = 0; i < loopCount; i++) {
|
||||
for (int i = 0; i < getSmallestArrayLength(thisArr, otherArr); i++) {
|
||||
result = compareIdentifiers(thisArr[i], otherArr[i]);
|
||||
if (result != 0) {
|
||||
break;
|
||||
|
@ -173,6 +173,10 @@ public class Version implements Comparable<Version> {
|
|||
Integer.parseInt(otherIdent)
|
||||
);
|
||||
} else if (isInt(thisIdent) || isInt(otherIdent)) {
|
||||
/**
|
||||
* Numeric identifiers always have lower precedence
|
||||
* than non-numeric identifiers.
|
||||
*/
|
||||
return isInt(thisIdent) ? -1 : 1;
|
||||
} else {
|
||||
return thisIdent.compareTo(otherIdent);
|
||||
|
|
|
@ -36,17 +36,17 @@ public class VersionTest {
|
|||
@Test public void
|
||||
mustConsistOfMajorMinorAndPatchVersions() {
|
||||
Version version = new Version("1.2.3");
|
||||
assertNotNull(version.getMajor());
|
||||
assertNotNull(version.getMinor());
|
||||
assertNotNull(version.getPatch());
|
||||
assertNotNull(version.getMajorVersion());
|
||||
assertNotNull(version.getMinorVersion());
|
||||
assertNotNull(version.getPatchVersion());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
mustTakeTheFormOfXDotYDotZWhereXyzAreNonNegativeIntegers() {
|
||||
Version version = new Version("1.2.3");
|
||||
assertEquals(1, version.getMajor());
|
||||
assertEquals(2, version.getMinor());
|
||||
assertEquals(3, version.getPatch());
|
||||
assertEquals(1, version.getMajorVersion());
|
||||
assertEquals(2, version.getMinorVersion());
|
||||
assertEquals(3, version.getPatchVersion());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
|
@ -65,54 +65,54 @@ public class VersionTest {
|
|||
@Test public void
|
||||
mustIncreaseEachElementNumericallyByIncrementsOfOne() {
|
||||
Version version = new Version("1.2.3");
|
||||
version.bumpPatch();
|
||||
assertEquals(4, version.getPatch());
|
||||
version.bumpMinor();
|
||||
assertEquals(3, version.getMinor());
|
||||
version.bumpMajor();
|
||||
assertEquals(2, version.getMajor());
|
||||
version.bumpPatchVersion();
|
||||
assertEquals(4, version.getPatchVersion());
|
||||
version.bumpMinorVersion();
|
||||
assertEquals(3, version.getMinorVersion());
|
||||
version.bumpMajorVersion();
|
||||
assertEquals(2, version.getMajorVersion());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
mustResetToZeroMinorAndPatchVersionsWhenMajorVersionIsIncremented() {
|
||||
Version version = new Version("1.2.3");
|
||||
version.bumpMajor();
|
||||
assertEquals(2, version.getMajor());
|
||||
assertEquals(0, version.getMinor());
|
||||
assertEquals(0, version.getPatch());
|
||||
version.bumpMajorVersion();
|
||||
assertEquals(2, version.getMajorVersion());
|
||||
assertEquals(0, version.getMinorVersion());
|
||||
assertEquals(0, version.getPatchVersion());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
mustResetToZeroPatchVersionWhenMinorVersionIsIncremented() {
|
||||
Version version = new Version("1.2.3");
|
||||
version.bumpMinor();
|
||||
assertEquals(1, version.getMajor());
|
||||
assertEquals(3, version.getMinor());
|
||||
assertEquals(0, version.getPatch());
|
||||
version.bumpMinorVersion();
|
||||
assertEquals(1, version.getMajorVersion());
|
||||
assertEquals(3, version.getMinorVersion());
|
||||
assertEquals(0, version.getPatchVersion());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
mayHavePreReleaseVersionFollowingPatchVersionAppendedWithDash() {
|
||||
Version version = new Version("1.2.3-alpha");
|
||||
assertEquals("alpha", version.getPreRelease());
|
||||
assertEquals("alpha", version.getPreReleaseVersion());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
preReleaseVersionMustCompriseDotSeparatedIdentifiersOfAlphaNumericsAndDash() {
|
||||
Version version = new Version("1.0.0-x.7.z.92");
|
||||
assertEquals("x.7.z.92", version.getPreRelease());
|
||||
assertEquals("x.7.z.92", version.getPreReleaseVersion());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
mayHaveBuildVersionFollowingPatchOrPreReleaseVersionsAppendedWithPlus() {
|
||||
Version version = new Version("1.2.3+build");
|
||||
assertEquals("build", version.getBuild());
|
||||
assertEquals("build", version.getBuildVersion());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
buildVersionMustCompriseDotSeparatedIdentifiersOfAlphaNumericsAndDash() {
|
||||
Version version = new Version("1.3.7+build.11.e0f985a");
|
||||
assertEquals("build.11.e0f985a", version.getBuild());
|
||||
assertEquals("build.11.e0f985a", version.getBuildVersion());
|
||||
}
|
||||
|
||||
@Test public void
|
||||
|
|
Loading…
Reference in New Issue
Block a user