package org.kalisen.test; import org.testng.Assert; import org.testng.annotations.Test; public class TestEqualHelper { private Object o1 = null; private Object o2 = null; private Object o3 = null; public TestEqualHelper(Object o1, Object o2, Object o3) { if (o1 == null) { throw new IllegalArgumentException("null is not a valid argument"); } if (o2 == null) { throw new IllegalArgumentException("null is not a valid argument"); } if (o3 == null) { throw new IllegalArgumentException("null is not a valid argument"); } this.o1 = o1; this.o2 = o2; this.o3 = o3; } @Test public void equalIsReflexive() { Assert.assertTrue(this.o1.equals(this.o1)); } @Test public void equalIsSymetric() { Assert.assertTrue(this.o1.equals(this.o2)); Assert.assertTrue(this.o2.equals(this.o1)); } @Test public void equalIsTransitive() { Assert.assertTrue(this.o1.equals(this.o2)); Assert.assertTrue(this.o2.equals(this.o3)); Assert.assertTrue(this.o1.equals(this.o3)); } @Test public void equalToNullShouldReturnFalse() { Assert.assertFalse(this.o1.equals(null)); } @Test public void equalShouldBeConsistentFromCallToCall() { Assert.assertTrue(this.o1.equals(this.o2)); Assert.assertTrue(this.o1.equals(this.o2)); Assert.assertTrue(this.o1.equals(this.o2)); } @Test public void hashcodeShouldBeConsistentFromCallToCall() { int hashCode = this.o1.hashCode(); Assert.assertEquals(hashCode, this.o1.hashCode()); Assert.assertEquals(hashCode, this.o1.hashCode()); } @Test public void hashcodesMustBeEqualIfObjectsAreEqual() { Assert.assertTrue(this.o1.equals(this.o2)); Assert.assertEquals(this.o1.hashCode(), this.o2.hashCode()); } }