コード例 #1
0
 public void TestReduceMoneyDifferentCurrency()
 {
     Bank bank = new Bank();
     bank.AddRate("CHF", "USD", 2);
     Money result = bank.Reduce(Money.CreateFranc(2), "USD");
     Assert.AreEqual(Money.CreateDollar(1), result);
 }
コード例 #2
0
 public void TestMixedAddition()
 {
     Expression fiveDollars = Money.CreateDollar(5);
     Expression tenFrancs = Money.CreateFranc(10);
     Bank bank = new Bank();
     bank.AddRate("CHF", "USD", 2);
     Money result = bank.Reduce(fiveDollars.Plus(tenFrancs), "USD");
     Assert.AreEqual(Money.CreateDollar(10), result);
 }
コード例 #3
0
 public Money Reduce(Bank bank, string targetCurrency)
 {
     int rate = bank.GetRate(_currency, targetCurrency);
     return new Money(Amount / rate, targetCurrency);
 }
コード例 #4
0
 public void TestSimpleAddition()
 {
     Money five = Money.CreateDollar(5);
     Expression sum = five.Plus(five);
     Bank bank = new Bank();
     Money reduced = bank.Reduce(sum, "USD");
     Assert.AreEqual(Money.CreateDollar(10), reduced);
 }
コード例 #5
0
 public void TestReduceSum()
 {
     Expression sum = new Sum(Money.CreateDollar(3), Money.CreateDollar(4));
     Bank bank = new Bank();
     Money result = bank.Reduce(sum, "USD");
     Assert.AreEqual(Money.CreateDollar(7), result);
 }
コード例 #6
0
 public void TestReduceMoney()
 {
     Bank bank = new Bank();
     Money result = bank.Reduce(Money.CreateDollar(1), "USD");
     Assert.AreEqual(Money.CreateDollar(1), result);
 }
コード例 #7
0
 public void TestSumTimes()
 {
     Expression fiveDollars = Money.CreateDollar(5);
     Expression tenFrancs = Money.CreateFranc(10);
     Bank bank = new Bank();
     bank.AddRate("CHF", "USD", 2);
     Expression sum = new Sum(fiveDollars, tenFrancs).Times(2);
     Money result = bank.Reduce(sum, "USD");
     Assert.AreEqual(Money.CreateDollar(20), result);
 }
コード例 #8
0
 public Money Reduce(Bank bank, string targetCurrency)
 {
     int amount = Augend.Reduce(bank, targetCurrency).Amount + Addend.Reduce(bank, targetCurrency).Amount;
     return new Money(amount, targetCurrency);
 }