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 <[email protected]> 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 _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

