From be3258068761a7c9eba329d205195f4cb3dd1eef Mon Sep 17 00:00:00 2001 From: totycro Date: Sun, 22 May 2011 22:13:33 +0200 Subject: Added preset ranges for values to accout --- bank-eiffel/account.e | 34 ++++++++++++++++++++++++++++++---- bank-eiffel/tests/test_account.e | 16 +++++++++++++++- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/bank-eiffel/account.e b/bank-eiffel/account.e index 3ef7a8b..0a7d202 100644 --- a/bank-eiffel/account.e +++ b/bank-eiffel/account.e @@ -20,6 +20,16 @@ create feature -- Access + creditline_range: ARRAY[REAL_64] + attribute Result := ({like creditline_range}).default end --| Remove line when Void Safety is properly set + + interest_debit_range: ARRAY[REAL_64] + attribute Result := ({like interest_debit_range}).default end --| Remove line when Void Safety is properly set + + interest_deposit_range: ARRAY[REAL_64] + -- min/max for interest_deposit + attribute Result := ({like interest_deposit_range}).default end --| Remove line when Void Safety is properly set + transfer_minamount: REAL_64 assign set_transfer_minamount -- Mindestbetrag für jede Einzahlung, Auszahlung und Überweisung @@ -41,12 +51,24 @@ feature -- Access feature {NONE} -- Initialization - make (an_authorized_signer: PERSON) + make (an_authorized_signer: PERSON; + an_interest_deposit: REAL_64; + an_interest_debit: REAL_64; + a_credit_line: REAL_64; + an_interest_deposit_range: ARRAY[REAL_64]; + an_interest_debit_range: ARRAY[REAL_64]; + a_credit_line_range: ARRAY[REAL_64]) do create authorized_signers.make(1) add_authorized_signer (an_authorized_signer) transfer_minamount := 2 balance := 0 + creditline := a_credit_line + interest_debit := an_interest_debit + interest_deposit := an_interest_deposit + interest_deposit_range := an_interest_deposit_range + interest_debit_range := an_interest_debit_range + creditline_range := a_credit_line_range end feature -- Basic operations @@ -137,8 +159,6 @@ feature {NONE} -- Implementation set_interest_debit (an_interest_debit: like interest_debit) -- Assign `interest_debit' with `an_interest_debit'. - require - an_interest_debit_within_bounds: an_interest_debit >= 0.0 and an_interest_debit <= 1.0 do interest_debit := an_interest_debit ensure @@ -146,9 +166,15 @@ feature {NONE} -- Implementation end invariant - interest_debit_within_bounds: interest_debit >= 0.0 and interest_debit <= 1.0 + interest_debit_within_bounds: + interest_debit >= interest_debit_range.item (0) and + interest_debit <= interest_debit_range.item (1) + interest_deposit_within_bounds: + interest_deposit >= interest_deposit_range.item (0) and + interest_deposit <= interest_deposit_range.item (1) interest_deposit_within_bounds: interest_deposit >= 0.0 and interest_deposit <= 1.0 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) end diff --git a/bank-eiffel/tests/test_account.e b/bank-eiffel/tests/test_account.e index a460023..3086402 100644 --- a/bank-eiffel/tests/test_account.e +++ b/bank-eiffel/tests/test_account.e @@ -20,10 +20,24 @@ 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 account.make (person1) + + 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) account.add_authorized_signer (person2) --assert ("not_implemented", False) end -- cgit v1.2.3