/** * Test method for {@link DivisionExpression#equals(java.lang.Object)} and {@link * DivisionExpression#hashCode()}. Asserts that: * * <ul> * <li>All and only expressions with equal divisor and dividend are equal * <li>{@code hashCode} is implemented accordingly * </ul> */ @Test public void equalsAndHashCode() { final DivisionExpression equalOne = new DivisionExpression( EVALUABLE_EXPRESSION_FACTORY.getAll()[0], EVALUABLE_EXPRESSION_FACTORY.getAll()[1]); final DivisionExpression equalTwo = new DivisionExpression( EVALUABLE_EXPRESSION_FACTORY.getAll()[0], EVALUABLE_EXPRESSION_FACTORY.getAll()[1]); final DivisionExpression differentDivident = new DivisionExpression( EVALUABLE_EXPRESSION_FACTORY.getAll()[2], EVALUABLE_EXPRESSION_FACTORY.getAll()[1]); final DivisionExpression differentDivisor = new DivisionExpression( EVALUABLE_EXPRESSION_FACTORY.getAll()[0], EVALUABLE_EXPRESSION_FACTORY.getAll()[2]); final DivisionExpression swapped = new DivisionExpression( EVALUABLE_EXPRESSION_FACTORY.getAll()[1], EVALUABLE_EXPRESSION_FACTORY.getAll()[0]); assertThat(equalOne, hasDefaultEqualsProperties()); assertThat( "expressions with equal divisor and divident should be equal", equalOne, is(equalTo(equalTwo))); assertThat(equalOne.hashCode(), is(equalTwo.hashCode())); assertThat( "expressions with different dividents must not be equal", equalOne, is(not(equalTo(differentDivident)))); assertThat( "expressions with different divisors must not be equal", equalOne, is(not(equalTo(differentDivisor)))); assertThat( "expressions with different dividends and divisiors must not be equal", equalOne, is(not(equalTo(swapped)))); }