Override equals() & hashCode() methods
This commit is contained in:
parent
e5041f42cb
commit
d670f15b16
|
@ -103,6 +103,32 @@ public class Version implements Comparable<Version> {
|
|||
patchVersion = patchVersion + 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
return true;
|
||||
}
|
||||
if (null == other || this.getClass() != other.getClass()) {
|
||||
return false;
|
||||
}
|
||||
return compareTo((Version) other) == 0 ? true : false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int hash = 5;
|
||||
hash = 97 * hash + majorVersion;
|
||||
hash = 97 * hash + minorVersion;
|
||||
hash = 97 * hash + patchVersion;
|
||||
hash = 97 * hash + (
|
||||
preReleaseVersion != null ? preReleaseVersion.hashCode(): 0
|
||||
);
|
||||
hash = 97 * hash + (
|
||||
buildVersion != null ? buildVersion.hashCode() : 0
|
||||
);
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Version other) {
|
||||
int result = compareNormalVersions(other);
|
||||
|
|
|
@ -157,4 +157,68 @@ public class VersionTest {
|
|||
Version version2 = new Version("1.3.7-beta+build.a");
|
||||
assertEquals(-1, version1.compareTo(version2));
|
||||
}
|
||||
|
||||
@Test public void
|
||||
shouldOverrideEqualsMethodForConvenience() {
|
||||
Version version1 = new Version("2.3.7");
|
||||
Version version2 = new Version("2.3.7");
|
||||
Version version3 = new Version("1.3.7");
|
||||
assertTrue(version1.equals(version1));
|
||||
assertTrue(version1.equals(version2));
|
||||
assertFalse(version1.equals(version3));
|
||||
}
|
||||
|
||||
@Test public void
|
||||
equalsMethodShouldBeReflexive() {
|
||||
Version version1 = new Version("2.3.7");
|
||||
assertTrue(version1.equals(version1));
|
||||
}
|
||||
|
||||
@Test public void
|
||||
equalsMethodShouldBeSymmetric() {
|
||||
Version version1 = new Version("2.3.7");
|
||||
Version version2 = new Version("2.3.7");
|
||||
assertTrue(version1.equals(version2));
|
||||
assertTrue(version2.equals(version1));
|
||||
}
|
||||
|
||||
@Test public void
|
||||
equalsMethodShouldBeTransitive() {
|
||||
Version version1 = new Version("2.3.7");
|
||||
Version version2 = new Version("2.3.7");
|
||||
Version version3 = new Version("2.3.7");
|
||||
assertTrue(version1.equals(version2));
|
||||
assertTrue(version2.equals(version3));
|
||||
assertTrue(version1.equals(version3));
|
||||
}
|
||||
|
||||
@Test public void
|
||||
equalsMethodShouldBeConsistent() {
|
||||
Version version1 = new Version("2.3.7");
|
||||
Version version2 = new Version("2.3.7");
|
||||
assertTrue(version1.equals(version2));
|
||||
assertTrue(version1.equals(version2));
|
||||
assertTrue(version1.equals(version2));
|
||||
}
|
||||
|
||||
@Test public void
|
||||
equalsMethodShouldReturnFalseIfOtherVersionIsNotInstanceOfVersion() {
|
||||
Version version1 = new Version("2.3.7");
|
||||
assertFalse(version1.equals(new String("2.3.7")));
|
||||
}
|
||||
|
||||
@Test public void
|
||||
equalsMethodShouldReturnFalseIfOtherVersionIsNull() {
|
||||
Version version1 = new Version("2.3.7");
|
||||
Version version2 = null;
|
||||
assertFalse(version1.equals(version2));
|
||||
}
|
||||
|
||||
@Test public void
|
||||
hashCodeMethodShouldReturnSameHashCodeIfVersionsAreEqual() {
|
||||
Version version1 = new Version("2.3.7");
|
||||
Version version2 = new Version("2.3.7");
|
||||
assertTrue(version1.equals(version2));
|
||||
assertEquals(version1.hashCode(), version2.hashCode());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user