summaryrefslogtreecommitdiffstats
path: root/bank-eiffel/account.e
diff options
context:
space:
mode:
Diffstat (limited to 'bank-eiffel/account.e')
-rw-r--r--bank-eiffel/account.e34
1 files changed, 23 insertions, 11 deletions
diff --git a/bank-eiffel/account.e b/bank-eiffel/account.e
index 39e4167..61145f0 100644
--- a/bank-eiffel/account.e
+++ b/bank-eiffel/account.e
@@ -62,14 +62,14 @@ feature {NONE} -- Initialization
62 a_credit_line_range.count() = 2 62 a_credit_line_range.count() = 2
63 an_interest_debit_range.count() = 2 63 an_interest_debit_range.count() = 2
64 an_interest_deposit_range.count() = 2 64 an_interest_deposit_range.count() = 2
65 a_credit_line_range.item (0) < a_credit_line_range.item (1) 65 a_credit_line_range.item (1) < a_credit_line_range.item (2)
66 an_interest_debit_range.item (0) < an_interest_debit_range.item (1) 66 an_interest_debit_range.item (1) < an_interest_debit_range.item (2)
67 an_interest_deposit_range.item (0) < an_interest_deposit_range.item (1) 67 an_interest_deposit_range.item (1) < an_interest_deposit_range.item (2)
68 do 68 do
69 create authorized_signers.make(1) 69 create authorized_signers.make(1)
70 add_authorized_signer (an_authorized_signer) 70 add_authorized_signer (an_authorized_signer)
71 transfer_minamount := 2 71 transfer_minamount := 2.0
72 balance := 0 72 balance := 0.0
73 creditline := a_credit_line 73 creditline := a_credit_line
74 interest_debit := an_interest_debit 74 interest_debit := an_interest_debit
75 interest_deposit := an_interest_deposit 75 interest_deposit := an_interest_deposit
@@ -139,7 +139,6 @@ feature -- Basic operations
139 Result := authorized_signers.has (an_authorized_signer) 139 Result := authorized_signers.has (an_authorized_signer)
140 end 140 end
141 141
142
143 authorized_signers_count : INTEGER 142 authorized_signers_count : INTEGER
144 do 143 do
145 Result := authorized_signers.count 144 Result := authorized_signers.count
@@ -150,6 +149,19 @@ feature -- Basic operations
150 Result := transfer_minamount 149 Result := transfer_minamount
151 end 150 end
152 151
152 get_balance : REAL_64
153 do
154 Result := balance
155 end
156
157 advance
158 do
159 if balance < 0.0 then -- debit
160 balance := balance + (balance * interest_debit)
161 else -- deposit
162 balance := balance + (balance * interest_deposit)
163 end
164 end
153 165
154feature {NONE} -- Implementation 166feature {NONE} -- Implementation
155 167
@@ -191,13 +203,13 @@ feature {NONE} -- Implementation
191 203
192invariant 204invariant
193 interest_debit_within_bounds: 205 interest_debit_within_bounds:
194 interest_debit >= interest_debit_range.item (0) and 206 interest_debit >= interest_debit_range.item (1) and
195 interest_debit <= interest_debit_range.item (1) 207 interest_debit <= interest_debit_range.item (2)
196 interest_deposit_within_bounds: 208 interest_deposit_within_bounds:
197 interest_deposit >= interest_deposit_range.item (0) and 209 interest_deposit >= interest_deposit_range.item (1) and
198 interest_deposit <= interest_deposit_range.item (1) 210 interest_deposit <= interest_deposit_range.item (2)
199 authorized_signers_attached: authorized_signers /= Void 211 authorized_signers_attached: authorized_signers /= Void
200 authorized_signers_not_empty: authorized_signers.count > 0 212 authorized_signers_not_empty: authorized_signers.count > 0
201 transfer_minamount_positive: transfer_minamount > 0.0 213 transfer_minamount_positive: transfer_minamount > 0.0
202 creditline_range_correct: creditline >= creditline_range.item (0) and creditline <= creditline_range.item (1) 214 creditline_range_correct: creditline >= creditline_range.item (1) and creditline <= creditline_range.item (2)
203end 215end