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;
|
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
|
@Override
|
||||||
public int compareTo(Version other) {
|
public int compareTo(Version other) {
|
||||||
int result = compareNormalVersions(other);
|
int result = compareNormalVersions(other);
|
||||||
|
|
|
@ -157,4 +157,68 @@ public class VersionTest {
|
||||||
Version version2 = new Version("1.3.7-beta+build.a");
|
Version version2 = new Version("1.3.7-beta+build.a");
|
||||||
assertEquals(-1, version1.compareTo(version2));
|
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