Skip to content

Commit 3cc7c99

Browse files
authored
Merge pull request #7 from janakaaleph/master
Implement comparable interface for Version
2 parents f19a09f + aedf3a3 commit 3cc7c99

File tree

4 files changed

+62
-1
lines changed

4 files changed

+62
-1
lines changed

versioncompare/src/main/java/com/g00fy2/versioncompare/Version.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import javax.annotation.Nullable;
77

88
@SuppressWarnings("WeakerAccess")
9-
public class Version {
9+
public class Version implements Comparable<Version> {
1010

1111
@Nullable private final String originalString;
1212
@Nonnull private final List<Integer> subversionNumbers = new ArrayList<>();
@@ -270,4 +270,17 @@ private void initVersion() {
270270
if (suffixSb != null) suffix = suffixSb.toString();
271271
}
272272
}
273+
274+
@Override
275+
public int compareTo(@Nonnull Version version) {
276+
if (this.isEqual(version)) return 0;
277+
else if (this.isLowerThan(version)) return -1;
278+
else return 1;
279+
}
280+
281+
@Override
282+
public boolean equals(Object o) {
283+
if (o instanceof Version && this.isEqual((Version)o)) return true;
284+
else return super.equals(o);
285+
}
273286
}

versioncompare/src/test/java/com/g00fy2/versioncompare/VersionTestEquals.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.junit.runners.Parameterized;
88
import org.junit.runners.Parameterized.Parameters;
99

10+
import static org.junit.Assert.assertEquals;
1011
import static org.junit.Assert.assertTrue;
1112

1213
@RunWith(Parameterized.class) public class VersionTestEquals {
@@ -33,13 +34,23 @@
3334
private final String equalVersionA;
3435
private final String equalVersionB;
3536

37+
private final Version equalVersionAObject;
38+
private final Version equalVersionBObject;
39+
3640
public VersionTestEquals(String versionA, String versionB) {
3741
equalVersionA = versionA;
42+
equalVersionAObject = new Version(equalVersionA);
43+
3844
equalVersionB = versionB;
45+
equalVersionBObject = new Version(equalVersionB);
3946
}
4047

4148
@Test public void isEqualIsCorrect() {
4249
assertTrue(equalVersionA + " and " + equalVersionB + " should be equal",
4350
new Version(equalVersionA).isEqual(equalVersionB));
4451
}
52+
53+
@Test public void isEqualsComparatorCorrect() {
54+
assertEquals(equalVersionA + " and " + equalVersionB + " should be equal", equalVersionAObject, equalVersionBObject);
55+
}
4556
}

versioncompare/src/test/java/com/g00fy2/versioncompare/VersionTestHigherLower.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,28 +47,54 @@
4747
private final String higherVersion;
4848
private final String lowerVersion;
4949

50+
private final Version higherVersionObject;
51+
private final Version lowerVersionObject;
52+
5053
public VersionTestHigherLower(String versionA, String versionB) {
5154
higherVersion = versionA;
55+
higherVersionObject = new Version(higherVersion);
56+
5257
lowerVersion = versionB;
58+
lowerVersionObject = new Version(lowerVersion);
5359
}
5460

5561
@Test public void isHigherThanIsCorrect() {
5662
assertTrue(higherVersion + " should be higher than " + lowerVersion,
5763
new Version(higherVersion).isHigherThan(lowerVersion));
5864
}
5965

66+
@Test public void isHigherThanComparatorIsCorrect() {
67+
assertTrue(higherVersion + " should be higher than " + lowerVersion,
68+
higherVersionObject.compareTo(lowerVersionObject) > 0);
69+
}
70+
6071
@Test public void isHigherThanIsNotCorrect() {
6172
assertFalse(lowerVersion + " should NOT be higher than " + higherVersion,
6273
new Version(lowerVersion).isHigherThan(higherVersion));
6374
}
6475

76+
@Test public void isHigherThanComparatorIsNotCorrect() {
77+
assertFalse(lowerVersion + " should NOT be higher than " + higherVersion,
78+
lowerVersionObject.compareTo(higherVersionObject) > 0);
79+
}
80+
6581
@Test public void isLowerThanIsCorrect() {
6682
assertTrue(lowerVersion + " should be lower than " + higherVersion,
6783
new Version(lowerVersion).isLowerThan(higherVersion));
6884
}
6985

86+
@Test public void isLowerThanComparatorIsCorrect() {
87+
assertTrue(lowerVersion + " should be lower than " + higherVersion,
88+
lowerVersionObject.compareTo(higherVersionObject) < 0);
89+
}
90+
7091
@Test public void isLowerThanIsNotCorrect() {
7192
assertFalse(higherVersion + " should NOT be lower than " + lowerVersion,
7293
new Version(higherVersion).isLowerThan(lowerVersion));
7394
}
95+
96+
@Test public void isLowerThanComparatorIsNotCorrect() {
97+
assertFalse(higherVersion + " should NOT be lower than " + lowerVersion,
98+
higherVersionObject.compareTo(lowerVersionObject) < 0);
99+
}
74100
}

versioncompare/src/test/java/com/g00fy2/versioncompare/VersionTestIsAtLeast.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,24 @@
3131
private final String atLeastVersionA;
3232
private final String atLeastVersionB;
3333

34+
private final Version atLeastVersionAObject;
35+
private final Version atLeastVersionBObject;
36+
3437
public VersionTestIsAtLeast(String versionA, String versionB) {
3538
atLeastVersionA = versionA;
39+
atLeastVersionAObject = new Version(atLeastVersionA);
40+
3641
atLeastVersionB = versionB;
42+
atLeastVersionBObject = new Version(atLeastVersionB);
3743
}
3844

3945
@Test public void isAtLeastIsCorrect() {
4046
assertTrue("Version " + atLeastVersionA + " should be equal or higher than " + atLeastVersionB,
4147
new Version(atLeastVersionA).isAtLeast(atLeastVersionB));
4248
}
49+
50+
@Test public void isAtLeastComparatorIsCorrect() {
51+
assertTrue("Version " + atLeastVersionA + " should be equal or higher than " + atLeastVersionB,
52+
atLeastVersionAObject.compareTo(atLeastVersionBObject) >= 0);
53+
}
4354
}

0 commit comments

Comments
 (0)