Instructions: Work with your neighbors in groups.
public class InClassTest {
private EH eh1; private EH eh2; private EH eh3;
// Question 1
@Before public void setUp() { eh1 = new EH(3); eh2 = new EH(5); eh3 = new EH(3); }
@Test public void noNPE() {...} // Question 2
@Test public void equalsFalse() {...} // Question 3
@Test public void equalsTrue() {...} // Question 4
@Test public void hashConsistent() {...} // Question 5
}
class EH {
private int x;
public EH(int x) { this.x = x; }
@Override public boolean equals(Object obj) {
if (!(obj instanceof EH)) return false;
return ((EH) obj).x == this.x;
}
// @Override public int hashCode() { return x; }
}
-
Given the 4
@Test
methods shown, how many times does the
@Before
method execute?
-
The contract for
equals()
states that no exceptions may be thrown.
Instead, equals()
is supposed to return false
if passed a null
argument.
Write a JUnit test that verifies this property for the EH
class.
-
Using the given
EH
objects,
write a test that verifies that equals()
returns false
if the objects are, in fact, not equal.
-
Using the given
EH
objects,
write a test that verifies that equals()
returns true
if the objects are, in fact, equal.
-
Using the given
EH
objects,
write a test to verify that hashCode()
is consistent
with equals.
This test should fail
if hashCode()
is commented out (as shown),
but pass
if hashCode()
is implemented.