summaryrefslogtreecommitdiffstats
path: root/bank-eiffel
diff options
context:
space:
mode:
authortotycro <totycro@unknown-horizons.org>2011-05-23 01:21:19 +0200
committertotycro <totycro@unknown-horizons.org>2011-05-23 01:21:19 +0200
commit3d0cdbe62989a59975938d4a0ab734d3e7f41be8 (patch)
treec286ef9b2a3a56a78527d4f8930cc1012ba45d83 /bank-eiffel
parent559387cc3c179943d9b064b59c0ba10164bcef55 (diff)
downloadfoop-3d0cdbe62989a59975938d4a0ab734d3e7f41be8.tar.gz
foop-3d0cdbe62989a59975938d4a0ab734d3e7f41be8.tar.bz2
foop-3d0cdbe62989a59975938d4a0ab734d3e7f41be8.zip
added advance
Diffstat (limited to 'bank-eiffel')
-rw-r--r--bank-eiffel/account.e34
-rw-r--r--bank-eiffel/tests/test_account.e31
2 files changed, 39 insertions, 26 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
diff --git a/bank-eiffel/tests/test_account.e b/bank-eiffel/tests/test_account.e
index 6e65f52..e0dfe4d 100644
--- a/bank-eiffel/tests/test_account.e
+++ b/bank-eiffel/tests/test_account.e
@@ -20,30 +20,31 @@ feature -- Test routines
20 person1: PERSON 20 person1: PERSON
21 person2: PERSON 21 person2: PERSON
22 account: ACCOUNT 22 account: ACCOUNT
23 cre: ARRAY[REAL_64]
24 deb_rng: ARRAY[REAL_64]
25 dep_rng: ARRAY[REAL_64]
26 do 23 do
27 create person1.make ("SOME_SURNAME_1", "SOME_FIRSTNAME_1") 24 create person1.make ("SOME_SURNAME_1", "SOME_FIRSTNAME_1")
28 create person2.make ("SOME_SURNAME_2", "SOME_FIRSTNAME_2") 25 create person2.make ("SOME_SURNAME_2", "SOME_FIRSTNAME_2")
29 26
30 create cre.make_filled (0.0, 0, 1) 27 create account.make (person1, 0.01, 0.02, -50.0, <<0.01, 0.022>>, <<0.01, 0.02>>, <<-100, -50>>)
31 cre.put (-100.0, 0)
32 cre.put (-50.0, 1)
33 create deb_rng.make(0,1)
34 deb_rng.put (0.1, 0)
35 deb_rng.put (2.2, 1)
36 create dep_rng.make(0,1)
37 dep_rng.put (0.1, 0)
38 dep_rng.put (2.2, 1)
39
40 create account.make (person1, 1.0, 2.0, -50.0, deb_rng, dep_rng, cre)
41 account.add_authorized_signer (person2) 28 account.add_authorized_signer (person2)
42 29
43 30
44 --assert ("not_implemented", False) 31 --assert ("not_implemented", False)
45 end 32 end
46 33
47end 34 ADVANCE
35 local
36 person1: PERSON
37 account: ACCOUNT
38 b : REAL_64
39 do
40 create person1.make ("SOME_SURNAME_1", "SOME_FIRSTNAME_1")
41 create account.make (person1, 0.01, 0.02, -50.0, <<0.01, 0.022>>, <<0.01, 0.02>>, <<-100, -50>>)
42
43 account.deposit (100.0, person1)
44 account.advance
45
46 assert("balance not correct", account.get_balance = 101.0)
47 end
48 48
49end
49 50