public void TestSimpleAddition() { Money five = Money.Dollar(5); IBankExpression result = five.Plus(five); Sum sum = (Sum)result; Assert.Equal(five, sum.Augend); }
public void TestMixedAddition() { IBankExpression fiveBucks = Money.Dollar(5); IBankExpression tenFrancs = Money.Franc(10); var bank = new Bank(); bank.AddRate("CHF", "USD", 2); var result = bank.Reduce(fiveBucks.Plus(tenFrancs), "USD"); Assert.Equal(Money.Dollar(10), result); }
public void TestSumTimesMoney() { IBankExpression fiveBucks = Money.Dollar(5); IBankExpression tenFrancs = Money.Franc(10); var bank = new Bank(); bank.AddRate("CHF", "USD", 2); IBankExpression sum = new Sum(fiveBucks, tenFrancs).Times(2); var result = bank.Reduce(sum, "USD"); Assert.Equal(Money.Dollar(20), result); }
public Sum(IBankExpression augend, IBankExpression addend) { Augend = augend; Addend = addend; }
public IBankExpression Plus(IBankExpression addend) { return(new Sum(this, addend)); }
public Money Reduce(IBankExpression source, string to) { return(source.Reduce(this, to)); }
public void TestPlusSameCurrencyReturnsMoney() { IBankExpression sum = Money.Dollar(1).Plus(Money.Dollar(1)); Assert.True(sum is Sum); }