1 package junit.samples.money;
2
3 import junit.framework.*;
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 protected void setUp() {
18 f12CHF= new Money(12, "CHF");
19 f14CHF= new Money(14, "CHF");
20 f7USD= new Money( 7, "USD");
21 f21USD= new Money(21, "USD");
22
23 fMB1= MoneyBag.create(f12CHF, f7USD);
24 fMB2= MoneyBag.create(f14CHF, f21USD);
25 }
26 public void testBagMultiply() {
27
28 IMoney expected= MoneyBag.create(new Money(24, "CHF"), new Money(14, "USD"));
29 assertEquals(expected, fMB1.multiply(2));
30 assertEquals(fMB1, fMB1.multiply(1));
31 assertTrue(fMB1.multiply(0).isZero());
32 }
33 public void testBagNegate() {
34
35 IMoney expected= MoneyBag.create(new Money(-12, "CHF"), new Money(-7, "USD"));
36 assertEquals(expected, fMB1.negate());
37 }
38 public void testBagSimpleAdd() {
39
40 IMoney expected= MoneyBag.create(new Money(26, "CHF"), new Money(7, "USD"));
41 assertEquals(expected, fMB1.add(f14CHF));
42 }
43 public void testBagSubtract() {
44
45 IMoney expected= MoneyBag.create(new Money(-2, "CHF"), new Money(-14, "USD"));
46 assertEquals(expected, fMB1.subtract(fMB2));
47 }
48 public void testBagSumAdd() {
49
50 IMoney expected= MoneyBag.create(new Money(26, "CHF"), new Money(28, "USD"));
51 assertEquals(expected, fMB1.add(fMB2));
52 }
53 public void testIsZero() {
54 assertTrue(fMB1.subtract(fMB1).isZero());
55 assertTrue(MoneyBag.create(new Money (0, "CHF"), new Money (0, "USD")).isZero());
56 }
57 public void testMixedSimpleAdd() {
58
59 IMoney expected= MoneyBag.create(f12CHF, f7USD);
60 assertEquals(expected, f12CHF.add(f7USD));
61 }
62 public void testBagNotEquals() {
63 IMoney bag= MoneyBag.create(f12CHF, f7USD);
64 assertFalse(bag.equals(new Money(12, "DEM").add(f7USD)));
65 }
66 public void testMoneyBagEquals() {
67 assertTrue(!fMB1.equals(null));
68
69 assertEquals(fMB1, fMB1);
70 IMoney equal= MoneyBag.create(new Money(12, "CHF"), new Money(7, "USD"));
71 assertTrue(fMB1.equals(equal));
72 assertTrue(!fMB1.equals(f12CHF));
73 assertTrue(!f12CHF.equals(fMB1));
74 assertTrue(!fMB1.equals(fMB2));
75 }
76 public void testMoneyBagHash() {
77 IMoney equal= MoneyBag.create(new Money(12, "CHF"), new Money(7, "USD"));
78 assertEquals(fMB1.hashCode(), equal.hashCode());
79 }
80 public void testMoneyEquals() {
81 assertTrue(!f12CHF.equals(null));
82 Money equalMoney= new Money(12, "CHF");
83 assertEquals(f12CHF, f12CHF);
84 assertEquals(f12CHF, equalMoney);
85 assertEquals(f12CHF.hashCode(), equalMoney.hashCode());
86 assertTrue(!f12CHF.equals(f14CHF));
87 }
88 public void testMoneyHash() {
89 assertTrue(!f12CHF.equals(null));
90 Money equal= new Money(12, "CHF");
91 assertEquals(f12CHF.hashCode(), equal.hashCode());
92 }
93 public void testSimplify() {
94 IMoney money= MoneyBag.create(new Money(26, "CHF"), new Money(28, "CHF"));
95 assertEquals(new Money(54, "CHF"), money);
96 }
97 public void testNormalize2() {
98
99 Money expected= new Money(7, "USD");
100 assertEquals(expected, fMB1.subtract(f12CHF));
101 }
102 public void testNormalize3() {
103
104 IMoney ms1= MoneyBag.create(new Money(12, "CHF"), new Money(3, "USD"));
105 Money expected= new Money(4, "USD");
106 assertEquals(expected, fMB1.subtract(ms1));
107 }
108 public void testNormalize4() {
109
110 IMoney ms1= MoneyBag.create(new Money(12, "CHF"), new Money(3, "USD"));
111 Money expected= new Money(-3, "USD");
112 assertEquals(expected, f12CHF.subtract(ms1));
113 }
114 public void testPrint() {
115 assertEquals("[12 CHF]", f12CHF.toString());
116 }
117 public void testSimpleAdd() {
118
119 Money expected= new Money(26, "CHF");
120 assertEquals(expected, f12CHF.add(f14CHF));
121 }
122 public void testSimpleBagAdd() {
123
124 IMoney expected= MoneyBag.create(new Money(26, "CHF"), new Money(7, "USD"));
125 assertEquals(expected, f14CHF.add(fMB1));
126 }
127 public void testSimpleMultiply() {
128
129 Money expected= new Money(28, "CHF");
130 assertEquals(expected, f14CHF.multiply(2));
131 }
132 public void testSimpleNegate() {
133
134 Money expected= new Money(-14, "CHF");
135 assertEquals(expected, f14CHF.negate());
136 }
137 public void testSimpleSubtract() {
138
139 Money expected= new Money(2, "CHF");
140 assertEquals(expected, f14CHF.subtract(f12CHF));
141 }
142 }