[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