앞장에서 우리는 각각의 비교를 equals() 통해서 이뤄 냈고
Money()로 캐스트를 함으로써 Franc과 Dollar의 비교에 대한 궁금증을 가지고 지금 여기 서 있다(?)
이렇게 테스트 코드를 만들어보자
@Test
public void testEquality(){
assertTrue(new Dollar(5).equals(new Dollar(5)));
assertFalse(new Dollar(5).equals(new Dollar(6)));
assertTrue(new Franc(5).equals(new Franc(5)));
assertFalse(new Franc(5).equals(new Franc(6)));
assertFalse(new Franc(5).equals(new Dollar(5)));//+
}
당연히 두개의 비교는 다르다고 나와야겠지만 우리는 Money라는 객체로 변환하여 비교하기때문에 같다고 나올것이다.
오직 금액과 클래스가 서로 동일할 때만 두 Money가 서로 같은것이다.
public boolean equals(Object o) {
Money money = (Money) o;
return amount == money.amount &&
getClass().equals(money.getClass());
}