diff options
Diffstat (limited to 'bank-eiffel')
| -rw-r--r-- | bank-eiffel/account.e | 34 | ||||
| -rw-r--r-- | bank-eiffel/tests/test_account.e | 31 |
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 | ||
| 154 | feature {NONE} -- Implementation | 166 | feature {NONE} -- Implementation |
| 155 | 167 | ||
| @@ -191,13 +203,13 @@ feature {NONE} -- Implementation | |||
| 191 | 203 | ||
| 192 | invariant | 204 | invariant |
| 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) |
| 203 | end | 215 | end |
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 | ||
| 47 | end | 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 | ||
| 49 | end | ||
| 49 | 50 | ||
