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 |
|
---|
7 | Option Explicit On
|
---|
8 |
|
---|
9 | Imports System
|
---|
10 | Imports NUnit.Framework
|
---|
11 |
|
---|
12 | Namespace NUnit.Samples
|
---|
13 |
|
---|
14 | <TestFixture()> _
|
---|
15 | Public Class MoneyTest
|
---|
16 |
|
---|
17 | Private f12CHF As Money
|
---|
18 | Private f14CHF As Money
|
---|
19 | Private f7USD As Money
|
---|
20 | Private f21USD As Money
|
---|
21 |
|
---|
22 | Private fMB1 As MoneyBag
|
---|
23 | Private fMB2 As MoneyBag
|
---|
24 |
|
---|
25 | <SetUp()> _
|
---|
26 | Protected Sub SetUp()
|
---|
27 |
|
---|
28 | f12CHF = New Money(12, "CHF")
|
---|
29 | f14CHF = New Money(14, "CHF")
|
---|
30 | f7USD = New Money(7, "USD")
|
---|
31 | f21USD = New Money(21, "USD")
|
---|
32 |
|
---|
33 | fMB1 = New MoneyBag(f12CHF, f7USD)
|
---|
34 | fMB2 = New MoneyBag(f14CHF, f21USD)
|
---|
35 |
|
---|
36 | End Sub
|
---|
37 |
|
---|
38 | <Test()> _
|
---|
39 | Public Sub BagMultiply()
|
---|
40 | ' {[12 CHF][7 USD]} *2 == {[24 CHF][14 USD]}
|
---|
41 | Dim bag() As Money = New Money() {New Money(24, "CHF"), New Money(14, "USD")}
|
---|
42 | Dim expected As New MoneyBag(bag)
|
---|
43 | Assert.AreEqual(expected, fMB1.Multiply(2))
|
---|
44 | Assert.AreEqual(fMB1, fMB1.Multiply(1))
|
---|
45 | Assert.IsTrue(fMB1.Multiply(0).IsZero)
|
---|
46 | End Sub
|
---|
47 |
|
---|
48 | <Test()> _
|
---|
49 | Public Sub BagNegate()
|
---|
50 | ' {[12 CHF][7 USD]} negate == {[-12 CHF][-7 USD]}
|
---|
51 | Dim bag() As Money = New Money() {New Money(-12, "CHF"), New Money(-7, "USD")}
|
---|
52 | Dim expected As New MoneyBag(bag)
|
---|
53 | Assert.AreEqual(expected, fMB1.Negate())
|
---|
54 | End Sub
|
---|
55 |
|
---|
56 | <Test()> _
|
---|
57 | Public Sub BagSimpleAdd()
|
---|
58 |
|
---|
59 | ' {[12 CHF][7 USD]} + [14 CHF] == {[26 CHF][7 USD]}
|
---|
60 | Dim bag() As Money = New Money() {New Money(26, "CHF"), New Money(7, "USD")}
|
---|
61 | Dim expected As New MoneyBag(bag)
|
---|
62 | Assert.AreEqual(expected, fMB1.Add(f14CHF))
|
---|
63 |
|
---|
64 | End Sub
|
---|
65 |
|
---|
66 | <Test()> _
|
---|
67 | Public Sub BagSubtract()
|
---|
68 | ' {[12 CHF][7 USD]} - {[14 CHF][21 USD] == {[-2 CHF][-14 USD]}
|
---|
69 | Dim bag() As Money = New Money() {New Money(-2, "CHF"), New Money(-14, "USD")}
|
---|
70 | Dim expected As New MoneyBag(bag)
|
---|
71 | Assert.AreEqual(expected, fMB1.Subtract(fMB2))
|
---|
72 | End Sub
|
---|
73 |
|
---|
74 | <Test()> _
|
---|
75 | Public Sub BagSumAdd()
|
---|
76 | ' {[12 CHF][7 USD]} + {[14 CHF][21 USD]} == {[26 CHF][28 USD]}
|
---|
77 | Dim bag() As Money = New Money() {New Money(26, "CHF"), New Money(28, "USD")}
|
---|
78 | Dim expected As New MoneyBag(bag)
|
---|
79 | Assert.AreEqual(expected, fMB1.Add(fMB2))
|
---|
80 | End Sub
|
---|
81 |
|
---|
82 | <Test()> _
|
---|
83 | Public Sub IsZero()
|
---|
84 | Assert.IsTrue(fMB1.Subtract(fMB1).IsZero)
|
---|
85 |
|
---|
86 | Dim bag() As Money = New Money() {New Money(0, "CHF"), New Money(0, "USD")}
|
---|
87 | Assert.IsTrue(New MoneyBag(bag).IsZero)
|
---|
88 | End Sub
|
---|
89 |
|
---|
90 | <Test()> _
|
---|
91 | Public Sub MixedSimpleAdd()
|
---|
92 | ' [12 CHF] + [7 USD] == {[12 CHF][7 USD]}
|
---|
93 | Dim bag() As Money = New Money() {f12CHF, f7USD}
|
---|
94 | Dim expected As New MoneyBag(bag)
|
---|
95 | Assert.AreEqual(expected, f12CHF.Add(f7USD))
|
---|
96 | End Sub
|
---|
97 |
|
---|
98 | <Test()> _
|
---|
99 | Public Sub MoneyBagEquals()
|
---|
100 | ' NOTE: Normally we use Assert.AreEqual to test whether two
|
---|
101 | ' objects are equal. But here we are testing the MoneyBag.Equals()
|
---|
102 | ' method itself, so using AreEqual would not serve the purpose.
|
---|
103 | Assert.IsFalse(fMB1.Equals(Nothing))
|
---|
104 |
|
---|
105 | Assert.IsTrue(fMB1.Equals(fMB1))
|
---|
106 | Dim equal As MoneyBag = New MoneyBag(New Money(12, "CHF"), New Money(7, "USD"))
|
---|
107 | Assert.IsTrue(fMB1.Equals(equal))
|
---|
108 | Assert.IsFalse(fMB1.Equals(f12CHF))
|
---|
109 | Assert.IsFalse(f12CHF.Equals(fMB1))
|
---|
110 | Assert.IsFalse(fMB1.Equals(fMB2))
|
---|
111 | End Sub
|
---|
112 |
|
---|
113 | <Test()> _
|
---|
114 | Public Sub MoneyBagHash()
|
---|
115 | Dim equal As MoneyBag = New MoneyBag(New Money(12, "CHF"), New Money(7, "USD"))
|
---|
116 | Assert.AreEqual(fMB1.GetHashCode(), equal.GetHashCode())
|
---|
117 | End Sub
|
---|
118 |
|
---|
119 | <Test()> _
|
---|
120 | Public Sub MoneyEquals()
|
---|
121 | ' NOTE: Normally we use Assert.AreEqual to test whether two
|
---|
122 | ' objects are equal. But here we are testing the MoneyBag.Equals()
|
---|
123 | ' method itself, so using AreEqual would not serve the purpose.
|
---|
124 | Assert.IsFalse(f12CHF.Equals(Nothing))
|
---|
125 | Dim equalMoney As Money = New Money(12, "CHF")
|
---|
126 | Assert.IsTrue(f12CHF.Equals(f12CHF))
|
---|
127 | Assert.IsTrue(f12CHF.Equals(equalMoney))
|
---|
128 | Assert.IsFalse(f12CHF.Equals(f14CHF))
|
---|
129 | End Sub
|
---|
130 |
|
---|
131 | <Test()> _
|
---|
132 | Public Sub MoneyHash()
|
---|
133 | Assert.IsFalse(f12CHF.Equals(Nothing))
|
---|
134 | Dim equal As Money = New Money(12, "CHF")
|
---|
135 | Assert.AreEqual(f12CHF.GetHashCode(), equal.GetHashCode())
|
---|
136 | End Sub
|
---|
137 |
|
---|
138 | <Test()> _
|
---|
139 | Public Sub Normalize()
|
---|
140 | Dim bag() As Money = New Money() {New Money(26, "CHF"), New Money(28, "CHF"), New Money(6, "CHF")}
|
---|
141 | Dim moneyBag As New MoneyBag(bag)
|
---|
142 | Dim expected() As Money = New Money() {New Money(60, "CHF")}
|
---|
143 | ' // note: expected is still a MoneyBag
|
---|
144 | Dim expectedBag As New MoneyBag(expected)
|
---|
145 | Assert.AreEqual(expectedBag, moneyBag)
|
---|
146 | End Sub
|
---|
147 |
|
---|
148 | <Test()> _
|
---|
149 | Public Sub Normalize2()
|
---|
150 | ' {[12 CHF][7 USD]} - [12 CHF] == [7 USD]
|
---|
151 | Dim expected As Money = New Money(7, "USD")
|
---|
152 | Assert.AreEqual(expected, fMB1.Subtract(f12CHF))
|
---|
153 | End Sub
|
---|
154 |
|
---|
155 | <Test()> _
|
---|
156 | Public Sub Normalize3()
|
---|
157 | ' {[12 CHF][7 USD]} - {[12 CHF][3 USD]} == [4 USD]
|
---|
158 | Dim s1() As Money = New Money() {New Money(12, "CHF"), New Money(3, "USD")}
|
---|
159 | Dim ms1 As New MoneyBag(s1)
|
---|
160 | Dim expected As New Money(4, "USD")
|
---|
161 | Assert.AreEqual(expected, fMB1.Subtract(ms1))
|
---|
162 | End Sub
|
---|
163 |
|
---|
164 | <Test()> _
|
---|
165 | Public Sub Normalize4()
|
---|
166 | ' [12 CHF] - {[12 CHF][3 USD]} == [-3 USD]
|
---|
167 | Dim s1() As Money = New Money() {New Money(12, "CHF"), New Money(3, "USD")}
|
---|
168 | Dim ms1 As New MoneyBag(s1)
|
---|
169 | Dim expected As New Money(-3, "USD")
|
---|
170 | Assert.AreEqual(expected, f12CHF.Subtract(ms1))
|
---|
171 | End Sub
|
---|
172 |
|
---|
173 | <Test()> _
|
---|
174 | Public Sub Print()
|
---|
175 | Assert.AreEqual("[12 CHF]", f12CHF.ToString())
|
---|
176 | End Sub
|
---|
177 |
|
---|
178 | <Test()> _
|
---|
179 | Public Sub SimpleAdd()
|
---|
180 |
|
---|
181 | ' [12 CHF] + [14 CHF] == [26 CHF]
|
---|
182 | Dim expected As Money = New Money(26, "CHF")
|
---|
183 | Assert.AreEqual(expected, f12CHF.Add(f14CHF))
|
---|
184 |
|
---|
185 | End Sub
|
---|
186 |
|
---|
187 | <Test()> _
|
---|
188 | Public Sub SimpleNegate()
|
---|
189 |
|
---|
190 | ' [14 CHF] negate == [-14 CHF]
|
---|
191 | Dim expected As New Money(-14, "CHF")
|
---|
192 | Assert.AreEqual(expected, f14CHF.Negate())
|
---|
193 |
|
---|
194 | End Sub
|
---|
195 |
|
---|
196 | <Test()> _
|
---|
197 | Public Sub SimpleSubtract()
|
---|
198 |
|
---|
199 | ' [14 CHF] - [12 CHF] == [2 CHF]
|
---|
200 | Dim expected As New Money(2, "CHF")
|
---|
201 | Assert.AreEqual(expected, f14CHF.Subtract(f12CHF))
|
---|
202 |
|
---|
203 | End Sub
|
---|
204 |
|
---|
205 | <Test()> _
|
---|
206 | Public Sub SimpleMultiply()
|
---|
207 |
|
---|
208 | ' [14 CHF] *2 == [28 CHF]
|
---|
209 | Dim expected As New Money(28, "CHF")
|
---|
210 | Assert.AreEqual(expected, f14CHF.Multiply(2))
|
---|
211 |
|
---|
212 | End Sub
|
---|
213 |
|
---|
214 | End Class
|
---|
215 |
|
---|
216 | End Namespace
|
---|