source: BMXNET_RPMS_dotNET_UTILITIES-BMX/branch/IHS BMX Framework/lib/NUnit/NUnit-2.5.10.11092/samples/csharp/money/MoneyTest.cs@ 1146

Last change on this file since 1146 was 1146, checked in by Sam Habiel, 13 years ago

Initial Import of BMX4

File size: 7.4 KB
Line 
1// ****************************************************************
2// This is free software licensed under the NUnit license. You
3// may obtain a copy of the license as well as information regarding
4// copyright ownership at http://nunit.org/?p=license&r=2.4.
5// ****************************************************************
6
7namespace NUnit.Samples.Money
8{
9 using System;
10 using NUnit.Framework;
11 /// <summary>
12 ///
13 /// </summary>
14 ///
15 [TestFixture]
16 public class MoneyTest
17 {
18 private Money f12CHF;
19 private Money f14CHF;
20 private Money f7USD;
21 private Money f21USD;
22
23 private MoneyBag fMB1;
24 private MoneyBag fMB2;
25
26 /// <summary>
27 ///
28 /// </summary>
29 ///
30 [SetUp]
31 protected void SetUp()
32 {
33 f12CHF= new Money(12, "CHF");
34 f14CHF= new Money(14, "CHF");
35 f7USD= new Money( 7, "USD");
36 f21USD= new Money(21, "USD");
37
38 fMB1= new MoneyBag(f12CHF, f7USD);
39 fMB2= new MoneyBag(f14CHF, f21USD);
40 }
41
42 /// <summary>
43 ///
44 /// </summary>
45 ///
46 [Test]
47 public void BagMultiply()
48 {
49 // {[12 CHF][7 USD]} *2 == {[24 CHF][14 USD]}
50 Money[] bag = { new Money(24, "CHF"), new Money(14, "USD") };
51 MoneyBag expected= new MoneyBag(bag);
52 Assert.AreEqual(expected, fMB1.Multiply(2));
53 Assert.AreEqual(fMB1, fMB1.Multiply(1));
54 Assert.IsTrue(fMB1.Multiply(0).IsZero);
55 }
56
57 /// <summary>
58 ///
59 /// </summary>
60 ///
61 [Test]
62 public void BagNegate()
63 {
64 // {[12 CHF][7 USD]} negate == {[-12 CHF][-7 USD]}
65 Money[] bag= { new Money(-12, "CHF"), new Money(-7, "USD") };
66 MoneyBag expected= new MoneyBag(bag);
67 Assert.AreEqual(expected, fMB1.Negate());
68 }
69
70 /// <summary>
71 ///
72 /// </summary>
73 ///
74 [Test]
75 public void BagSimpleAdd()
76 {
77 // {[12 CHF][7 USD]} + [14 CHF] == {[26 CHF][7 USD]}
78 Money[] bag= { new Money(26, "CHF"), new Money(7, "USD") };
79 MoneyBag expected= new MoneyBag(bag);
80 Assert.AreEqual(expected, fMB1.Add(f14CHF));
81 }
82
83 /// <summary>
84 ///
85 /// </summary>
86 ///
87 [Test]
88 public void BagSubtract()
89 {
90 // {[12 CHF][7 USD]} - {[14 CHF][21 USD] == {[-2 CHF][-14 USD]}
91 Money[] bag= { new Money(-2, "CHF"), new Money(-14, "USD") };
92 MoneyBag expected= new MoneyBag(bag);
93 Assert.AreEqual(expected, fMB1.Subtract(fMB2));
94 }
95
96 /// <summary>
97 ///
98 /// </summary>
99 ///
100 [Test]
101 public void BagSumAdd()
102 {
103 // {[12 CHF][7 USD]} + {[14 CHF][21 USD]} == {[26 CHF][28 USD]}
104 Money[] bag= { new Money(26, "CHF"), new Money(28, "USD") };
105 MoneyBag expected= new MoneyBag(bag);
106 Assert.AreEqual(expected, fMB1.Add(fMB2));
107 }
108
109 /// <summary>
110 ///
111 /// </summary>
112 ///
113 [Test]
114 public void IsZero()
115 {
116 Assert.IsTrue(fMB1.Subtract(fMB1).IsZero);
117
118 Money[] bag = { new Money(0, "CHF"), new Money(0, "USD") };
119 Assert.IsTrue(new MoneyBag(bag).IsZero);
120 }
121
122 /// <summary>
123 ///
124 /// </summary>
125 ///
126 [Test]
127 public void MixedSimpleAdd()
128 {
129 // [12 CHF] + [7 USD] == {[12 CHF][7 USD]}
130 Money[] bag= { f12CHF, f7USD };
131 MoneyBag expected= new MoneyBag(bag);
132 Assert.AreEqual(expected, f12CHF.Add(f7USD));
133 }
134
135 /// <summary>
136 ///
137 /// </summary>
138 ///
139 [Test]
140 public void MoneyBagEquals()
141 {
142 //NOTE: Normally we use Assert.AreEqual to test whether two
143 // objects are equal. But here we are testing the MoneyBag.Equals()
144 // method itself, so using AreEqual would not serve the purpose.
145 Assert.IsFalse(fMB1.Equals(null));
146
147 Assert.IsTrue(fMB1.Equals( fMB1 ));
148 MoneyBag equal= new MoneyBag(new Money(12, "CHF"), new Money(7, "USD"));
149 Assert.IsTrue(fMB1.Equals(equal));
150 Assert.IsTrue(!fMB1.Equals(f12CHF));
151 Assert.IsTrue(!f12CHF.Equals(fMB1));
152 Assert.IsTrue(!fMB1.Equals(fMB2));
153 }
154
155 /// <summary>
156 ///
157 /// </summary>
158 ///
159 [Test]
160 public void MoneyBagHash()
161 {
162 MoneyBag equal= new MoneyBag(new Money(12, "CHF"), new Money(7, "USD"));
163 Assert.AreEqual(fMB1.GetHashCode(), equal.GetHashCode());
164 }
165
166 /// <summary>
167 ///
168 /// </summary>
169 ///
170 [Test]
171 public void MoneyEquals()
172 {
173 //NOTE: Normally we use Assert.AreEqual to test whether two
174 // objects are equal. But here we are testing the MoneyBag.Equals()
175 // method itself, so using AreEqual would not serve the purpose.
176 Assert.IsFalse(f12CHF.Equals(null));
177 Money equalMoney= new Money(12, "CHF");
178 Assert.IsTrue(f12CHF.Equals( f12CHF ));
179 Assert.IsTrue(f12CHF.Equals( equalMoney ));
180 Assert.IsFalse(f12CHF.Equals(f14CHF));
181 }
182
183 /// <summary>
184 ///
185 /// </summary>
186 ///
187 [Test]
188 public void MoneyHash()
189 {
190 Assert.IsFalse(f12CHF.Equals(null));
191 Money equal= new Money(12, "CHF");
192 Assert.AreEqual(f12CHF.GetHashCode(), equal.GetHashCode());
193 }
194
195 /// <summary>
196 ///
197 /// </summary>
198 ///
199 [Test]
200 public void Normalize()
201 {
202 Money[] bag= { new Money(26, "CHF"), new Money(28, "CHF"), new Money(6, "CHF") };
203 MoneyBag moneyBag= new MoneyBag(bag);
204 Money[] expected = { new Money(60, "CHF") };
205 // note: expected is still a MoneyBag
206 MoneyBag expectedBag= new MoneyBag(expected);
207 Assert.AreEqual(expectedBag, moneyBag);
208 }
209
210 /// <summary>
211 ///
212 /// </summary>
213 ///
214 [Test]
215 public void Normalize2()
216 {
217 // {[12 CHF][7 USD]} - [12 CHF] == [7 USD]
218 Money expected= new Money(7, "USD");
219 Assert.AreEqual(expected, fMB1.Subtract(f12CHF));
220 }
221
222 /// <summary>
223 ///
224 /// </summary>
225 ///
226 [Test]
227 public void Normalize3()
228 {
229 // {[12 CHF][7 USD]} - {[12 CHF][3 USD]} == [4 USD]
230 Money[] s1 = { new Money(12, "CHF"), new Money(3, "USD") };
231 MoneyBag ms1= new MoneyBag(s1);
232 Money expected= new Money(4, "USD");
233 Assert.AreEqual(expected, fMB1.Subtract(ms1));
234 }
235
236 /// <summary>
237 ///
238 /// </summary>
239 ///
240 [Test]
241 public void Normalize4()
242 {
243 // [12 CHF] - {[12 CHF][3 USD]} == [-3 USD]
244 Money[] s1 = { new Money(12, "CHF"), new Money(3, "USD") };
245 MoneyBag ms1= new MoneyBag(s1);
246 Money expected= new Money(-3, "USD");
247 Assert.AreEqual(expected, f12CHF.Subtract(ms1));
248 }
249
250 /// <summary>
251 ///
252 /// </summary>
253 ///
254 [Test]
255 public void Print()
256 {
257 Assert.AreEqual("[12 CHF]", f12CHF.ToString());
258 }
259
260 /// <summary>
261 ///
262 /// </summary>
263 ///
264 [Test]
265 public void SimpleAdd()
266 {
267 // [12 CHF] + [14 CHF] == [26 CHF]
268 Money expected= new Money(26, "CHF");
269 Assert.AreEqual(expected, f12CHF.Add(f14CHF));
270 }
271
272 /// <summary>
273 ///
274 /// </summary>
275 ///
276 [Test]
277 public void SimpleBagAdd()
278 {
279 // [14 CHF] + {[12 CHF][7 USD]} == {[26 CHF][7 USD]}
280 Money[] bag= { new Money(26, "CHF"), new Money(7, "USD") };
281 MoneyBag expected= new MoneyBag(bag);
282 Assert.AreEqual(expected, f14CHF.Add(fMB1));
283 }
284
285 /// <summary>
286 ///
287 /// </summary>
288 ///
289 [Test]
290 public void SimpleMultiply()
291 {
292 // [14 CHF] *2 == [28 CHF]
293 Money expected= new Money(28, "CHF");
294 Assert.AreEqual(expected, f14CHF.Multiply(2));
295 }
296
297 /// <summary>
298 ///
299 /// </summary>
300 ///
301 [Test]
302 public void SimpleNegate()
303 {
304 // [14 CHF] negate == [-14 CHF]
305 Money expected= new Money(-14, "CHF");
306 Assert.AreEqual(expected, f14CHF.Negate());
307 }
308
309 /// <summary>
310 ///
311 /// </summary>
312 ///
313 [Test]
314 public void SimpleSubtract()
315 {
316 // [14 CHF] - [12 CHF] == [2 CHF]
317 Money expected= new Money(2, "CHF");
318 Assert.AreEqual(expected, f14CHF.Subtract(f12CHF));
319 }
320 }
321}
Note: See TracBrowser for help on using the repository browser.