summaryrefslogtreecommitdiffstats
path: root/component
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2017-05-10 15:55:04 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2017-05-10 15:55:04 +0200
commitdf46d7d7fdf89868036dc6e2158737106fb91796 (patch)
treeb6b582e3c6933e859da2626fbdb544fe1e2d5b4b /component
parent238389de531bf219aacfddee0e54f21ae1fd3033 (diff)
Add comparison methods for readability
Diffstat (limited to 'component')
-rw-r--r--component/src/main/java/com/yahoo/component/Version.java16
-rw-r--r--component/src/test/java/com/yahoo/component/VersionTestCase.java39
2 files changed, 51 insertions, 4 deletions
diff --git a/component/src/main/java/com/yahoo/component/Version.java b/component/src/main/java/com/yahoo/component/Version.java
index 8ef540c2ae7..53931406bb0 100644
--- a/component/src/main/java/com/yahoo/component/Version.java
+++ b/component/src/main/java/com/yahoo/component/Version.java
@@ -360,10 +360,20 @@ public final class Version implements Comparable<Version> {
return getQualifier().compareTo(other.getQualifier());
}
+
+ /** Returns whether this version number (ignoring qualifier) is strictly lower than the given version */
+ public boolean isBefore(Version other) {
+ if (this.major == other.major && this.minor == other.minor) return this.micro < other.micro;
+ if (this.major == other.major) return this.minor < other.minor;
+ return this.major < other.major;
+ }
- /**
- * Creates a version specification that only matches this version.
- */
+ /** Returns whether this version number (ignoring qualifier) is strictly higher than the given version */
+ public boolean isAfter(Version other) {
+ return ! this.isBefore(other) && ! this.equals(other);
+ }
+
+ /** Creates a version specification that only matches this version */
public VersionSpecification toSpecification() {
if (this == emptyVersion)
return VersionSpecification.emptyVersionSpecification;
diff --git a/component/src/test/java/com/yahoo/component/VersionTestCase.java b/component/src/test/java/com/yahoo/component/VersionTestCase.java
index 99a27347d5f..c35a007b2a5 100644
--- a/component/src/test/java/com/yahoo/component/VersionTestCase.java
+++ b/component/src/test/java/com/yahoo/component/VersionTestCase.java
@@ -3,12 +3,18 @@ package com.yahoo.component;
import com.yahoo.text.Utf8Array;
import com.yahoo.text.Utf8String;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
/**
* @author bratseth
*/
-public class VersionTestCase extends junit.framework.TestCase {
+public class VersionTestCase {
+ @Test
public void testPrimitiveCreation() {
Version version=new Version(1,2,3,"qualifier");
assertEquals(1,version.getMajor());
@@ -17,6 +23,7 @@ public class VersionTestCase extends junit.framework.TestCase {
assertEquals("qualifier",version.getQualifier());
}
+ @Test
public void testUnderspecifiedPrimitiveCreation() {
Version version=new Version(1);
assertEquals(1,version.getMajor());
@@ -26,6 +33,7 @@ public class VersionTestCase extends junit.framework.TestCase {
assertEquals("",version.getQualifier());
}
+ @Test
public void testStringCreation() {
Version version=new Version("1.2.3.qualifier");
assertEquals(1,version.getMajor());
@@ -33,6 +41,8 @@ public class VersionTestCase extends junit.framework.TestCase {
assertEquals(3,version.getMicro());
assertEquals("qualifier",version.getQualifier());
}
+
+ @Test
public void testUtf8StringCreation() {
Version version=new Version((Utf8Array)new Utf8String("1.2.3.qualifier"));
assertEquals(1,version.getMajor());
@@ -41,6 +51,7 @@ public class VersionTestCase extends junit.framework.TestCase {
assertEquals("qualifier",version.getQualifier());
}
+ @Test
public void testUnderspecifiedStringCreation() {
Version version=new Version("1");
assertEquals(1,version.getMajor());
@@ -49,6 +60,7 @@ public class VersionTestCase extends junit.framework.TestCase {
assertEquals("",version.getQualifier());
}
+ @Test
public void testEquality() {
assertEquals(new Version(),Version.emptyVersion);
assertEquals(new Version(),new Version(""));
@@ -59,6 +71,7 @@ public class VersionTestCase extends junit.framework.TestCase {
assertEquals(new Version(1,2,3,"qualifier"),new Version("1.2.3.qualifier"));
}
+ @Test
public void testToString() {
assertEquals("",new Version().toString());
assertEquals("1",new Version(1).toString());
@@ -67,6 +80,7 @@ public class VersionTestCase extends junit.framework.TestCase {
assertEquals("1.2.3.qualifier",new Version(1,2,3,"qualifier").toString());
}
+ @Test
public void testToFullString() {
assertEquals("0.0.0",new Version().toFullString());
assertEquals("1.0.0",new Version(1).toFullString());
@@ -75,6 +89,7 @@ public class VersionTestCase extends junit.framework.TestCase {
assertEquals("1.2.3.qualifier",new Version(1,2,3,"qualifier").toFullString());
}
+ @Test
public void testOrder() {
assertTrue(new Version("1.2.3").compareTo(new Version("1.2.3"))==0);
assertTrue(new Version("1.2.3").compareTo(new Version("1.2.4"))<0);
@@ -85,5 +100,27 @@ public class VersionTestCase extends junit.framework.TestCase {
assertTrue(new Version("1.0.0").compareTo(new Version("1"))==0);
}
+
+ @Test
+ public void testBefore() {
+ assertFalse(new Version("1.2.3").isBefore(new Version("0.2.3")));
+ assertFalse(new Version("1.2.3").isBefore(new Version("1.1.3")));
+ assertFalse(new Version("1.2.3").isBefore(new Version("1.2.2")));
+ assertFalse(new Version("1.2.3").isBefore(new Version("1.2.3")));
+ assertTrue( new Version("1.2.3").isBefore(new Version("1.2.4")));
+ assertTrue( new Version("1.2.3").isBefore(new Version("1.3.3")));
+ assertTrue( new Version("1.2.3").isBefore(new Version("2.2.3")));
+ }
+
+ @Test
+ public void testAfter() {
+ assertTrue( new Version("1.2.3").isAfter(new Version("0.2.3")));
+ assertTrue( new Version("1.2.3").isAfter(new Version("1.1.3")));
+ assertTrue( new Version("1.2.3").isAfter(new Version("1.2.2")));
+ assertFalse(new Version("1.2.3").isAfter(new Version("1.2.3")));
+ assertFalse(new Version("1.2.3").isAfter(new Version("1.2.4")));
+ assertFalse(new Version("1.2.3").isAfter(new Version("1.3.3")));
+ assertFalse(new Version("1.2.3").isAfter(new Version("2.2.3")));
+ }
}