summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortotycro <totycro@unknown-horizons.org>2011-05-22 22:13:33 +0200
committertotycro <totycro@unknown-horizons.org>2011-05-22 22:13:33 +0200
commitbe3258068761a7c9eba329d205195f4cb3dd1eef (patch)
tree9bd8a7c99329718cade68ac17000df57538008c3
parent4453374f4e9ae51ea4d9dec4c4407e420e61b72f (diff)
downloadfoop-be3258068761a7c9eba329d205195f4cb3dd1eef.tar.gz
foop-be3258068761a7c9eba329d205195f4cb3dd1eef.tar.bz2
foop-be3258068761a7c9eba329d205195f4cb3dd1eef.zip
Added preset ranges for values to accout
-rw-r--r--bank-eiffel/account.e34
-rw-r--r--bank-eiffel/tests/test_account.e16
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
20 20
21feature -- Access 21feature -- Access
22 22
23 creditline_range: ARRAY[REAL_64]
24 attribute Result := ({like creditline_range}).default end --| Remove line when Void Safety is properly set
25
26 interest_debit_range: ARRAY[REAL_64]
27 attribute Result := ({like interest_debit_range}).default end --| Remove line when Void Safety is properly set
28
29 interest_deposit_range: ARRAY[REAL_64]
30 -- min/max for interest_deposit
31 attribute Result := ({like interest_deposit_range}).default end --| Remove line when Void Safety is properly set
32
23 transfer_minamount: REAL_64 assign set_transfer_minamount 33 transfer_minamount: REAL_64 assign set_transfer_minamount
24 -- Mindestbetrag für jede Einzahlung, Auszahlung und Überweisung 34 -- Mindestbetrag für jede Einzahlung, Auszahlung und Überweisung
25 35
@@ -41,12 +51,24 @@ feature -- Access
41 51
42feature {NONE} -- Initialization 52feature {NONE} -- Initialization
43 53
44 make (an_authorized_signer: PERSON) 54 make (an_authorized_signer: PERSON;
55 an_interest_deposit: REAL_64;
56 an_interest_debit: REAL_64;
57 a_credit_line: REAL_64;
58 an_interest_deposit_range: ARRAY[REAL_64];
59 an_interest_debit_range: ARRAY[REAL_64];
60 a_credit_line_range: ARRAY[REAL_64])
45 do 61 do
46 create authorized_signers.make(1) 62 create authorized_signers.make(1)
47 add_authorized_signer (an_authorized_signer) 63 add_authorized_signer (an_authorized_signer)
48 transfer_minamount := 2 64 transfer_minamount := 2
49 balance := 0 65 balance := 0
66 creditline := a_credit_line
67 interest_debit := an_interest_debit
68 interest_deposit := an_interest_deposit
69 interest_deposit_range := an_interest_deposit_range
70 interest_debit_range := an_interest_debit_range
71 creditline_range := a_credit_line_range
50 end 72 end
51 73
52feature -- Basic operations 74feature -- Basic operations
@@ -137,8 +159,6 @@ feature {NONE} -- Implementation
137 159
138 set_interest_debit (an_interest_debit: like interest_debit) 160 set_interest_debit (an_interest_debit: like interest_debit)
139 -- Assign `interest_debit' with `an_interest_debit'. 161 -- Assign `interest_debit' with `an_interest_debit'.
140 require
141 an_interest_debit_within_bounds: an_interest_debit >= 0.0 and an_interest_debit <= 1.0
142 do 162 do
143 interest_debit := an_interest_debit 163 interest_debit := an_interest_debit
144 ensure 164 ensure
@@ -146,9 +166,15 @@ feature {NONE} -- Implementation
146 end 166 end
147 167
148invariant 168invariant
149 interest_debit_within_bounds: interest_debit >= 0.0 and interest_debit <= 1.0 169 interest_debit_within_bounds:
170 interest_debit >= interest_debit_range.item (0) and
171 interest_debit <= interest_debit_range.item (1)
172 interest_deposit_within_bounds:
173 interest_deposit >= interest_deposit_range.item (0) and
174 interest_deposit <= interest_deposit_range.item (1)
150 interest_deposit_within_bounds: interest_deposit >= 0.0 and interest_deposit <= 1.0 175 interest_deposit_within_bounds: interest_deposit >= 0.0 and interest_deposit <= 1.0
151 authorized_signers_attached: authorized_signers /= Void 176 authorized_signers_attached: authorized_signers /= Void
152 authorized_signers_not_empty: authorized_signers.count > 0 177 authorized_signers_not_empty: authorized_signers.count > 0
153 transfer_minamount_positive: transfer_minamount > 0.0 178 transfer_minamount_positive: transfer_minamount > 0.0
179 creditline_range_correct: creditline >= creditline_range.item (0) and creditline <= creditline_range.item (1)
154end 180end
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
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]
23 do 26 do
24 create person1.make ("SOME_SURNAME_1", "SOME_FIRSTNAME_1") 27 create person1.make ("SOME_SURNAME_1", "SOME_FIRSTNAME_1")
25 create person2.make ("SOME_SURNAME_2", "SOME_FIRSTNAME_2") 28 create person2.make ("SOME_SURNAME_2", "SOME_FIRSTNAME_2")
26 create account.make (person1) 29
30 create cre.make_filled (0.0, 0, 1)
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)
27 account.add_authorized_signer (person2) 41 account.add_authorized_signer (person2)
28 --assert ("not_implemented", False) 42 --assert ("not_implemented", False)
29 end 43 end