Source of MoneyTest.java


  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:                 // {[12 CHF][7 USD]} *2 == {[24 CHF][14 USD]}
 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:                 // {[12 CHF][7 USD]} negate == {[-12 CHF][-7 USD]}
 35:                 IMoney expected= MoneyBag.create(new Money(-12, "CHF"), new Money(-7, "USD"));
 36:                 assertEquals(expected, fMB1.negate());
 37:         }
 38:         public void testBagSimpleAdd() {
 39:                 // {[12 CHF][7 USD]} + [14 CHF] == {[26 CHF][7 USD]}
 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:                 // {[12 CHF][7 USD]} - {[14 CHF][21 USD] == {[-2 CHF][-14 USD]}
 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:                 // {[12 CHF][7 USD]} + {[14 CHF][21 USD]} == {[26 CHF][28 USD]}
 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:                 // [12 CHF] + [7 USD] == {[12 CHF][7 USD]}
 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:                 // {[12 CHF][7 USD]} - [12 CHF] == [7 USD]
 99:                 Money expected= new Money(7, "USD");
100:                 assertEquals(expected, fMB1.subtract(f12CHF));
101:         }
102:         public void testNormalize3() {
103:                 // {[12 CHF][7 USD]} - {[12 CHF][3 USD]} == [4 USD]
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:                 // [12 CHF] - {[12 CHF][3 USD]} == [-3 USD]
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:                 // [12 CHF] + [14 CHF] == [26 CHF]
119:                 Money expected= new Money(26, "CHF");
120:                 assertEquals(expected, f12CHF.add(f14CHF));
121:         }
122:         public void testSimpleBagAdd() {
123:                 // [14 CHF] + {[12 CHF][7 USD]} == {[26 CHF][7 USD]}
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:                 // [14 CHF] *2 == [28 CHF]
129:                 Money expected= new Money(28, "CHF");
130:                 assertEquals(expected, f14CHF.multiply(2));
131:         }
132:         public void testSimpleNegate() {
133:                 // [14 CHF] negate == [-14 CHF]
134:                 Money expected= new Money(-14, "CHF");
135:                 assertEquals(expected, f14CHF.negate());
136:         }
137:         public void testSimpleSubtract() {
138:                 // [14 CHF] - [12 CHF] == [2 CHF]
139:                 Money expected= new Money(2, "CHF");
140:                 assertEquals(expected, f14CHF.subtract(f12CHF));
141:         }
142: }