### Question:
Cash implements CurrencyAmount { @Override public boolean equals(final Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } Cash(final String currency, final BigDecimal amount); static Cash of(final String currency, final BigDecimal amount); static Cash of(final String currency, final String amount); static Cash of(final String currency, final long amount); @Override String getCurrency(); @Override BigDecimal getAmount(); @Override String toString(); @Override int hashCode(); @Override boolean equals(final Object obj); @Override CurrencyAmount negate(); @Override CurrencyAmount add(final CurrencyAmount money); @Override CurrencyAmount subtract(final CurrencyAmount money);  }### Answer:
@Test public void testEquals() { final Cash money = Cash.of("USD", 1L); final Cash money2 = Cash.of("USD", 1L); assertThat(money).isEqualTo(money2); }