@Test public void hashCodesAreEqualForEquivalentObjects() { // Arrange: final GroupElement g1 = MathUtils.getRandomGroupElement(); final GroupElement g2 = MathUtils.toRepresentation(g1, GroupElement.Representation.P2); final GroupElement g3 = MathUtils.toRepresentation(g1, GroupElement.Representation.P1P1); final GroupElement g4 = MathUtils.getRandomGroupElement(); // Assert Assert.assertThat(g2.hashCode(), IsEqual.equalTo(g1.hashCode())); Assert.assertThat(g3.hashCode(), IsEqual.equalTo(g1.hashCode())); Assert.assertThat(g1.hashCode(), IsNot.not(IsEqual.equalTo(g4.hashCode()))); Assert.assertThat(g2.hashCode(), IsNot.not(IsEqual.equalTo(g4.hashCode()))); Assert.assertThat(g3.hashCode(), IsNot.not(IsEqual.equalTo(g4.hashCode()))); }