1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
public class MoneyTest {
@Test public void test1Multipl(){ Money dollar10 = Money.dollar(10); Expression dollar20 =dollar10.times(2); assertEquals(Money.dollar(20), dollar20); Expression dollar30 =dollar10.times(3); assertEquals(Money.dollar(30), dollar30); } @Test public void test1equality(){ assertTrue(Money.dollar(10).equals(Money.dollar(10))); assertFalse(Money.dollar(10).equals(Money.dollar(11))); assertTrue(Money.franc(10).equals(Money.franc(10))); assertFalse(Money.franc(10).equals(Money.franc(11))); assertFalse(Money.dollar(10).equals(Money.franc(10))); assertFalse(Money.franc(10).equals(Money.dollar(10))); }
@Test public void test1FrancMultipl(){ Money franc10 = Money.franc(10); Expression franc20 =franc10.times(2); assertEquals(Money.franc(20), franc20); Expression franc30 =franc10.times(3); assertEquals(Money.franc(30), franc30); }
@Test public void testCurrency(){ assertEquals("USD", Money.dollar(1).currency()); assertEquals("CHF", Money.franc(1).currency()); }
@Test public void testSum(){
Money five = Money.dollar(5); Expression sum = five.plus(five); Bank bank = new Bank(); Expression reduced = bank.reduce(sum, "USD"); assertTrue(reduced.equals(Money.dollar(10)) ); } @Test public void testplusReturnSum(){ Money five = Money.dollar(5); Expression expression = five.plus(five); Sum sum =(Sum) expression; Bank bank = new Bank(); Expression reduced = bank.reduce(sum, "USD"); assertTrue(reduced.equals(Money.dollar(10)) ); } @Test public void testReduceSum(){ Sum sum = new Sum(Money.dollar(10), Money.dollar(10)); Bank bank = new Bank(); Expression reduced = bank.reduce(sum, "USD"); assertTrue(reduced.equals(Money.dollar(20)) ); } @Test public void testReduceDollar(){ Bank bank = new Bank(); Expression reduced = bank.reduce(Money.dollar(1), "USD"); assertTrue(reduced.equals(Money.dollar(1)) ); } @Test public void testBankDifferentCurrency(){ Bank bank = new Bank(); bank.addRate("CHF", "USD", 2); Expression reduced = bank.reduce(Money.franc(2), "USD"); assertTrue(reduced.equals(Money.dollar(1)) ); }
@Test public void testIdentityRates(){ assertEquals(1, new Bank().rate("USD", "USD")); }
@Test public void testBankDifferentCurrencySum(){ Expression franc = Money.franc(10); Expression dollar = Money.dollar(10); Bank bank = new Bank(); bank.addRate("CHF", "USD", 2); Expression plus = franc.plus(dollar); Expression reduced = bank.reduce(plus, "USD"); assertTrue(reduced.equals(Money.dollar(15)) ); }
@Test public void testMoneySum(){ Expression franc = Money.franc(10); Expression dollar = Money.dollar(10); Bank bank = new Bank(); bank.addRate("CHF", "USD", 2); Expression sum = new Sum(franc, dollar).plus(dollar); Expression reduced = bank.reduce(sum, "USD"); assertTrue(reduced.equals(Money.dollar(25)) ); } @Test public void testExpressionTimes(){ Expression franc = Money.franc(10); Expression dollar = Money.dollar(10); Bank bank = new Bank(); bank.addRate("CHF", "USD", 2); Expression sum = new Sum(franc, dollar); Expression times = sum.times(2); Expression reduced = bank.reduce(times, "USD"); assertTrue(reduced.equals(Money.dollar(30)) ); }
}
|