1 package junit.samples.money;
2
3 import junit.framework.TestCase;
4
5 public class MoneyTest extends TestCase {
6 private Money f12CHF;
7 private Money f14CHF;
8 private Money f7USD;
9 private Money f21USD;
10
11 private IMoney fMB1;
12 private IMoney fMB2;
13
14 public static void main(String args[]) {
15 junit.textui.TestRunner.run(MoneyTest.class);
16 }
17
18 @Override
19 protected void setUp() {
20 f12CHF = new Money(12, "CHF");
21 f14CHF = new Money(14, "CHF");
22 f7USD = new Money(7, "USD");
23 f21USD = new Money(21, "USD");
24
25 fMB1 = MoneyBag.create(f12CHF, f7USD);
26 fMB2 = MoneyBag.create(f14CHF, f21USD);
27 }
28
29 public void testBagMultiply() {
30
31 IMoney expected = MoneyBag.create(new Money(24, "CHF"), new Money(14, "USD"));
32 assertEquals(expected, fMB1.multiply(2));
33 assertEquals(fMB1, fMB1.multiply(1));
34 assertTrue(fMB1.multiply(0).isZero());
35 }
36
37 public void testBagNegate() {
38
39 IMoney expected = MoneyBag.create(new Money(-12, "CHF"), new Money(-7, "USD"));
40 assertEquals(expected, fMB1.negate());
41 }
42
43 public void testBagSimpleAdd() {
44
45 IMoney expected = MoneyBag.create(new Money(26, "CHF"), new Money(7, "USD"));
46 assertEquals(expected, fMB1.add(f14CHF));
47 }
48
49 public void testBagSubtract() {
50
51 IMoney expected = MoneyBag.create(new Money(-2, "CHF"), new Money(-14, "USD"));
52 assertEquals(expected, fMB1.subtract(fMB2));
53 }
54
55 public void testBagSumAdd() {
56
57 IMoney expected = MoneyBag.create(new Money(26, "CHF"), new Money(28, "USD"));
58 assertEquals(expected, fMB1.add(fMB2));
59 }
60
61 public void testIsZero() {
62 assertTrue(fMB1.subtract(fMB1).isZero());
63 assertTrue(MoneyBag.create(new Money(0, "CHF"), new Money(0, "USD")).isZero());
64 }
65
66 public void testMixedSimpleAdd() {
67
68 IMoney expected = MoneyBag.create(f12CHF, f7USD);
69 assertEquals(expected, f12CHF.add(f7USD));
70 }
71
72 public void testBagNotEquals() {
73 IMoney bag = MoneyBag.create(f12CHF, f7USD);
74 assertFalse(bag.equals(new Money(12, "DEM").add(f7USD)));
75 }
76
77 public void testMoneyBagEquals() {
78 assertTrue(!fMB1.equals(null));
79
80 assertEquals(fMB1, fMB1);
81 IMoney equal = MoneyBag.create(new Money(12, "CHF"), new Money(7, "USD"));
82 assertTrue(fMB1.equals(equal));
83 assertTrue(!fMB1.equals(f12CHF));
84 assertTrue(!f12CHF.equals(fMB1));
85 assertTrue(!fMB1.equals(fMB2));
86 }
87
88 public void testMoneyBagHash() {
89 IMoney equal = MoneyBag.create(new Money(12, "CHF"), new Money(7, "USD"));
90 assertEquals(fMB1.hashCode(), equal.hashCode());
91 }
92
93 public void testMoneyEquals() {
94 assertTrue(!f12CHF.equals(null));
95 Money equalMoney = new Money(12, "CHF");
96 assertEquals(f12CHF, f12CHF);
97 assertEquals(f12CHF, equalMoney);
98 assertEquals(f12CHF.hashCode(), equalMoney.hashCode());
99 assertTrue(!f12CHF.equals(f14CHF));
100 }
101
102 public void testMoneyHash() {
103 assertTrue(!f12CHF.equals(null));
104 Money equal = new Money(12, "CHF");
105 assertEquals(f12CHF.hashCode(), equal.hashCode());
106 }
107
108 public void testSimplify() {
109 IMoney money = MoneyBag.create(new Money(26, "CHF"), new Money(28, "CHF"));
110 assertEquals(new Money(54, "CHF"), money);
111 }
112
113 public void testNormalize2() {
114
115 Money expected = new Money(7, "USD");
116 assertEquals(expected, fMB1.subtract(f12CHF));
117 }
118
119 public void testNormalize3() {
120
121 IMoney ms1 = MoneyBag.create(new Money(12, "CHF"), new Money(3, "USD"));
122 Money expected = new Money(4, "USD");
123 assertEquals(expected, fMB1.subtract(ms1));
124 }
125
126 public void testNormalize4() {
127
128 IMoney ms1 = MoneyBag.create(new Money(12, "CHF"), new Money(3, "USD"));
129 Money expected = new Money(-3, "USD");
130 assertEquals(expected, f12CHF.subtract(ms1));
131 }
132
133 public void testPrint() {
134 assertEquals("[12 CHF]", f12CHF.toString());
135 }
136
137 public void testSimpleAdd() {
138
139 Money expected = new Money(26, "CHF");
140 assertEquals(expected, f12CHF.add(f14CHF));
141 }
142
143 public void testSimpleBagAdd() {
144
145 IMoney expected = MoneyBag.create(new Money(26, "CHF"), new Money(7, "USD"));
146 assertEquals(expected, f14CHF.add(fMB1));
147 }
148
149 public void testSimpleMultiply() {
150
151 Money expected = new Money(28, "CHF");
152 assertEquals(expected, f14CHF.multiply(2));
153 }
154
155 public void testSimpleNegate() {
156
157 Money expected = new Money(-14, "CHF");
158 assertEquals(expected, f14CHF.negate());
159 }
160
161 public void testSimpleSubtract() {
162
163 Money expected = new Money(2, "CHF");
164 assertEquals(expected, f14CHF.subtract(f12CHF));
165 }
166 }