From 3d0cdbe62989a59975938d4a0ab734d3e7f41be8 Mon Sep 17 00:00:00 2001 From: totycro Date: Mon, 23 May 2011 01:21:19 +0200 Subject: added advance --- bank-eiffel/account.e | 34 +++++++++++++++++++++++----------- 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 a_credit_line_range.count() = 2 an_interest_debit_range.count() = 2 an_interest_deposit_range.count() = 2 - a_credit_line_range.item (0) < a_credit_line_range.item (1) - an_interest_debit_range.item (0) < an_interest_debit_range.item (1) - an_interest_deposit_range.item (0) < an_interest_deposit_range.item (1) + a_credit_line_range.item (1) < a_credit_line_range.item (2) + an_interest_debit_range.item (1) < an_interest_debit_range.item (2) + an_interest_deposit_range.item (1) < an_interest_deposit_range.item (2) do create authorized_signers.make(1) add_authorized_signer (an_authorized_signer) - transfer_minamount := 2 - balance := 0 + transfer_minamount := 2.0 + balance := 0.0 creditline := a_credit_line interest_debit := an_interest_debit interest_deposit := an_interest_deposit @@ -139,7 +139,6 @@ feature -- Basic operations Result := authorized_signers.has (an_authorized_signer) end - authorized_signers_count : INTEGER do Result := authorized_signers.count @@ -150,6 +149,19 @@ feature -- Basic operations Result := transfer_minamount end + get_balance : REAL_64 + do + Result := balance + end + + advance + do + if balance < 0.0 then -- debit + balance := balance + (balance * interest_debit) + else -- deposit + balance := balance + (balance * interest_deposit) + end + end feature {NONE} -- Implementation @@ -191,13 +203,13 @@ feature {NONE} -- Implementation invariant interest_debit_within_bounds: - interest_debit >= interest_debit_range.item (0) and - interest_debit <= interest_debit_range.item (1) + interest_debit >= interest_debit_range.item (1) and + interest_debit <= interest_debit_range.item (2) interest_deposit_within_bounds: - interest_deposit >= interest_deposit_range.item (0) and - interest_deposit <= interest_deposit_range.item (1) + interest_deposit >= interest_deposit_range.item (1) and + interest_deposit <= interest_deposit_range.item (2) authorized_signers_attached: authorized_signers /= Void authorized_signers_not_empty: authorized_signers.count > 0 transfer_minamount_positive: transfer_minamount > 0.0 - creditline_range_correct: creditline >= creditline_range.item (0) and creditline <= creditline_range.item (1) + creditline_range_correct: creditline >= creditline_range.item (1) and creditline <= creditline_range.item (2) 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 person1: PERSON person2: PERSON account: ACCOUNT - cre: ARRAY[REAL_64] - deb_rng: ARRAY[REAL_64] - dep_rng: ARRAY[REAL_64] do create person1.make ("SOME_SURNAME_1", "SOME_FIRSTNAME_1") create person2.make ("SOME_SURNAME_2", "SOME_FIRSTNAME_2") - create cre.make_filled (0.0, 0, 1) - cre.put (-100.0, 0) - cre.put (-50.0, 1) - create deb_rng.make(0,1) - deb_rng.put (0.1, 0) - deb_rng.put (2.2, 1) - create dep_rng.make(0,1) - dep_rng.put (0.1, 0) - dep_rng.put (2.2, 1) - - create account.make (person1, 1.0, 2.0, -50.0, deb_rng, dep_rng, cre) + create account.make (person1, 0.01, 0.02, -50.0, <<0.01, 0.022>>, <<0.01, 0.02>>, <<-100, -50>>) account.add_authorized_signer (person2) --assert ("not_implemented", False) end -end + ADVANCE + local + person1: PERSON + account: ACCOUNT + b : REAL_64 + do + create person1.make ("SOME_SURNAME_1", "SOME_FIRSTNAME_1") + create account.make (person1, 0.01, 0.02, -50.0, <<0.01, 0.022>>, <<0.01, 0.02>>, <<-100, -50>>) + + account.deposit (100.0, person1) + account.advance + + assert("balance not correct", account.get_balance = 101.0) + end +end -- cgit v1.2.3