Expression.plus를 끝내려면 Sum.plus()를 구현해야 한다. 그리고 Exprssion.times()를 구현하면 전체 예제가 끝난다.
Sum.plus()에 대한 테스트를 작성하자.
@Test
public void testSumPlusMoney() {
Expression fiveBucks = Money.dollar(5);
Expression tenFrancs = Money.franc(10);
Bank bank = new Bank();
bank.addRate("CHF", "USD", 2);
Expression sum = new Sum(fiveBucks, tenFrancs).plus(fiveBucks);
Money result = bank.reduce(sum, "USD");
assertEquals(Money.dollar(15), result);
}
Sum 클래스도 수정하자.
// Sum
public Expression plus(Expression addend) {
return new Sum(this, addend);
}
@Test
public void testSumPlusMoney() {
Expression fiveBucks = Money.dollar(5);
Expression tenFrancs = Money.franc(10);
Bank bank = new Bank();
bank.addRate("CHF", "USD", 2);
Expression sum = new Sum(fiveBucks, tenFrancs).times(2);
Money result = bank.reduce(sum, "USD", bank);
assertEquals(Money.dollar(20), result);
}
지금가지 우리는