[jsemver] 07/95: Refactor Version.compareTo() method
Alexandre Viau
reazem-guest at moszumanska.debian.org
Mon Feb 16 14:58:24 UTC 2015
This is an automated email from the git hooks/post-receive script.
reazem-guest pushed a commit to branch master
in repository jsemver.
commit e0bca455ae8b1840b65bd902fd9794de87b4d910
Author: Zafar Khaja <zafarkhaja at gmail.com>
Date: Sat Nov 24 21:20:15 2012 +0400
Refactor Version.compareTo() method
According to the Specification the pre-release version should
have a lower precedence than the associated normal version and the
build version should have a higher precedence than the associated
normal version.
---
.../java/com/github/zafarkhaja/semver/Version.java | 48 +++++++++++++++++-----
.../com/github/zafarkhaja/semver/VersionTest.java | 16 ++++++++
2 files changed, 54 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/github/zafarkhaja/semver/Version.java b/src/main/java/com/github/zafarkhaja/semver/Version.java
index 0ac0066..06a998d 100644
--- a/src/main/java/com/github/zafarkhaja/semver/Version.java
+++ b/src/main/java/com/github/zafarkhaja/semver/Version.java
@@ -148,17 +148,11 @@ public class Version implements Comparable<Version> {
@Override
public int compareTo(Version other) {
int result = compareNormalVersions(other);
- if (result == 0 && preReleaseVersion != null) {
- result = compareAlphaNumericVersions(
- preReleaseVersion,
- other.getPreReleaseVersion()
- );
+ if (result == 0) {
+ result = comparePreReleaseVersions(other);
}
- if (result == 0 && buildVersion != null) {
- result = compareAlphaNumericVersions(
- buildVersion,
- other.getBuildVersion()
- );
+ if (result == 0) {
+ result = compareBuildVersions(other);
}
return result;
}
@@ -178,6 +172,40 @@ public class Version implements Comparable<Version> {
return (thisOp == otherOp) ? 0 : ((thisOp > otherOp) ? 1 : -1);
}
+ private int comparePreReleaseVersions(Version other) {
+ int result;
+ if (preReleaseVersion == null &&
+ other.getPreReleaseVersion() == null) {
+ result = 0;
+ } else if (preReleaseVersion == null ||
+ other.getPreReleaseVersion() == null) {
+ result = preReleaseVersion == null ? 1 : -1;
+ } else {
+ result = compareAlphaNumericVersions(
+ preReleaseVersion,
+ other.getPreReleaseVersion()
+ );
+ }
+ return result;
+ }
+
+ private int compareBuildVersions(Version other) {
+ int result;
+ if (buildVersion == null &&
+ other.getBuildVersion()== null) {
+ result = 0;
+ } else if (buildVersion == null ||
+ other.getBuildVersion()== null) {
+ result = buildVersion == null ? -1 : 1;
+ } else {
+ result = compareAlphaNumericVersions(
+ buildVersion,
+ other.getBuildVersion()
+ );
+ }
+ return result;
+ }
+
private int compareAlphaNumericVersions(String thisOp, String otherOp) {
String[] thisIdents = thisOp.split("\\.");
String[] otherIdents = otherOp.split("\\.");
diff --git a/src/test/java/com/github/zafarkhaja/semver/VersionTest.java b/src/test/java/com/github/zafarkhaja/semver/VersionTest.java
index a820883..7e8be8e 100644
--- a/src/test/java/com/github/zafarkhaja/semver/VersionTest.java
+++ b/src/test/java/com/github/zafarkhaja/semver/VersionTest.java
@@ -138,6 +138,14 @@ public class VersionTest {
}
@Test public void
+ preReleaseVersionShouldHaveLowerPrecedenceThanAssociatedNormalVersion() {
+ Version version1 = new Version("1.3.7");
+ Version version2 = new Version("1.3.7-alpha");
+ assertEquals(1, version1.compareTo(version2));
+ assertEquals(-1, version2.compareTo(version1));
+ }
+
+ @Test public void
shouldCompareBuildVersionsIfNormalAndPreReleaseVersionsAreEqual() {
Version version1 = new Version("1.3.7-beta+build.1");
Version version2 = new Version("1.3.7-beta+build.2");
@@ -145,6 +153,14 @@ public class VersionTest {
}
@Test public void
+ buildVersionShouldHaveHigherPrecedenceThanAssociatedNormalVersion() {
+ Version version1 = new Version("1.3.7");
+ Version version2 = new Version("1.3.7+build");
+ assertEquals(-1, version1.compareTo(version2));
+ assertEquals(1, version2.compareTo(version1));
+ }
+
+ @Test public void
shouldCompareAccordingToIdentifiersCountIfCommonIdentifiersAreEqual() {
Version version1 = new Version("1.3.7-beta+build.3");
Version version2 = new Version("1.3.7-beta+build");
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jsemver.git
More information about the pkg-java-commits
mailing list