summaryrefslogtreecommitdiffstats
path: root/bank-eiffel
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2011-05-22 17:21:36 +0200
committermanuel <manuel@mausz.at>2011-05-22 17:21:36 +0200
commit0edc8e98e274aadadc09f58f26beac2557eb3659 (patch)
treef14ce00a2b77d3bdeb6fa98e914530b1d3326ad6 /bank-eiffel
parentc4fbebf96418f14fd5b9f407f6a63c925b8f41a3 (diff)
downloadfoop-0edc8e98e274aadadc09f58f26beac2557eb3659.tar.gz
foop-0edc8e98e274aadadc09f58f26beac2557eb3659.tar.bz2
foop-0edc8e98e274aadadc09f58f26beac2557eb3659.zip
some changes
Diffstat (limited to 'bank-eiffel')
-rw-r--r--bank-eiffel/account.e34
-rw-r--r--bank-eiffel/person.e10
-rw-r--r--bank-eiffel/retireeaccount.e2
-rw-r--r--bank-eiffel/studentaccount.e2
-rw-r--r--bank-eiffel/tests/test_account.e6
-rw-r--r--bank-eiffel/tests/test_person.e39
6 files changed, 38 insertions, 55 deletions
diff --git a/bank-eiffel/account.e b/bank-eiffel/account.e
index 6c81313..154a1fa 100644
--- a/bank-eiffel/account.e
+++ b/bank-eiffel/account.e
@@ -23,7 +23,7 @@ feature -- Access
23 transfer_minamount: REAL_64 assign set_transfer_minamount 23 transfer_minamount: REAL_64 assign set_transfer_minamount
24 -- Mindestbetrag für jede Einzahlung, Auszahlung und Überweisung 24 -- Mindestbetrag für jede Einzahlung, Auszahlung und Überweisung
25 25
26 authorized_signers: SET [PERSON] 26 authorized_signers: ARRAYED_SET [PERSON]
27 -- Zeichnungsberechtigte 27 -- Zeichnungsberechtigte
28 attribute Result := ({like authorized_signers}).default end --| Remove line when Void Safety is properly set 28 attribute Result := ({like authorized_signers}).default end --| Remove line when Void Safety is properly set
29 29
@@ -39,11 +39,13 @@ feature -- Access
39 balance: REAL_64 39 balance: REAL_64
40 -- Kontostand 40 -- Kontostand
41 41
42feature -- Initialization 42feature {NONE} -- Initialization
43 43
44 make (an_authorized_signer: PERSON) 44 make (an_authorized_signer: PERSON)
45 do 45 do
46 create authorized_signers.make(1)
46 add_authorized_signer (an_authorized_signer) 47 add_authorized_signer (an_authorized_signer)
48 transfer_minamount := 2
47 balance := 0 49 balance := 0
48 end 50 end
49 51
@@ -67,21 +69,19 @@ feature -- Basic operations
67 do 69 do
68 balance := balance - an_amount 70 balance := balance - an_amount
69 ensure 71 ensure
70 balance_increased: balance < old balance 72 balance_decreased: balance < old balance
71 withdrawed: balance = old balance - an_amount 73 withdrawed: balance = old balance - an_amount
72 creditline_ok: balance >= creditline 74 creditline_ok: balance >= creditline
73 end 75 end
74 76
75feature -- Element change 77 transfer(an_amount: like transfer_minamount; an_account: like Current)
76
77 set_transfer_minamount (a_transfer_minamount: like transfer_minamount)
78 -- Assign `transfer_minamount' with `a_transfer_minamount'.
79 require 78 require
80 a_transfer_minamount_positive: a_transfer_minamount > 0.0 79 an_amount_positive: an_amount > 0.0
80 transfer_minamount_ok: an_amount >= transfer_minamount
81 an_account_attached: an_account /= Void
81 do 82 do
82 transfer_minamount := a_transfer_minamount 83 withdraw (an_amount)
83 ensure 84 an_account.deposit (an_amount)
84 transfer_minamount_assigned: transfer_minamount = a_transfer_minamount
85 end 85 end
86 86
87 add_authorized_signer (an_authorized_signer: PERSON) 87 add_authorized_signer (an_authorized_signer: PERSON)
@@ -105,6 +105,18 @@ feature -- Element change
105 authorized_signers_assigned: not authorized_signers.has (an_authorized_signer) 105 authorized_signers_assigned: not authorized_signers.has (an_authorized_signer)
106 end 106 end
107 107
108feature {NONE} -- Implementation
109
110 set_transfer_minamount (a_transfer_minamount: like transfer_minamount)
111 -- Assign `transfer_minamount' with `a_transfer_minamount'.
112 require
113 a_transfer_minamount_positive: a_transfer_minamount > 0.0
114 do
115 transfer_minamount := a_transfer_minamount
116 ensure
117 transfer_minamount_assigned: transfer_minamount = a_transfer_minamount
118 end
119
108 set_creditline (a_creditline: like creditline) 120 set_creditline (a_creditline: like creditline)
109 -- Assign `creditline' with `a_creditline'. 121 -- Assign `creditline' with `a_creditline'.
110 do 122 do
diff --git a/bank-eiffel/person.e b/bank-eiffel/person.e
index 5f7d0bc..54e1a45 100644
--- a/bank-eiffel/person.e
+++ b/bank-eiffel/person.e
@@ -10,7 +10,7 @@ class
10create 10create
11 make 11 make
12 12
13feature -- Initialization 13feature -- Access
14 14
15 surname: STRING_8 assign set_surname 15 surname: STRING_8 assign set_surname
16 -- Nachname 16 -- Nachname
@@ -20,15 +20,15 @@ feature -- Initialization
20 -- Vorname 20 -- Vorname
21 attribute Result := ({like firstname}).default end --| Remove line when Void Safety is properly set 21 attribute Result := ({like firstname}).default end --| Remove line when Void Safety is properly set
22 22
23feature -- Initialization 23feature {NONE} -- Initialization
24 24
25 make (a_surname: like surname; a_firstname: like firstname) 25 make (a_surname: like surname; a_firstname: like firstname)
26 do 26 do
27 set_surname (a_surname) 27 surname := a_surname
28 set_firstname (a_firstname) 28 firstname := a_firstname
29 end 29 end
30 30
31feature -- Element change 31feature {NONE} -- Implementation
32 32
33 set_surname (a_surname: like surname) 33 set_surname (a_surname: like surname)
34 -- Assign `surname' with `a_surname'. 34 -- Assign `surname' with `a_surname'.
diff --git a/bank-eiffel/retireeaccount.e b/bank-eiffel/retireeaccount.e
index 3b935d7..3f56fd4 100644
--- a/bank-eiffel/retireeaccount.e
+++ b/bank-eiffel/retireeaccount.e
@@ -10,4 +10,6 @@ class
10inherit 10inherit
11 ACCOUNT 11 ACCOUNT
12 12
13invariant
14 authorized_signers_only_one: authorized_signers.count = 1
13end 15end
diff --git a/bank-eiffel/studentaccount.e b/bank-eiffel/studentaccount.e
index 831cb6a..a80d4bb 100644
--- a/bank-eiffel/studentaccount.e
+++ b/bank-eiffel/studentaccount.e
@@ -10,4 +10,6 @@ class
10inherit 10inherit
11 ACCOUNT 11 ACCOUNT
12 12
13invariant
14 authorized_signers_only_one: authorized_signers.count = 1
13end 15end
diff --git a/bank-eiffel/tests/test_account.e b/bank-eiffel/tests/test_account.e
index 1820c45..7f16cc7 100644
--- a/bank-eiffel/tests/test_account.e
+++ b/bank-eiffel/tests/test_account.e
@@ -15,13 +15,13 @@ inherit
15 15
16feature -- Test routines 16feature -- Test routines
17 17
18 CREATE_ACCOUNT 18 CREATE_EDIT_ACCOUNT
19 -- New test routine
20 local 19 local
21 person1: PERSON 20 person1: PERSON
22 account: ACCOUNT 21 account: ACCOUNT
23 do 22 do
24 create person1.make ("VORNAME", "NACHNAME") 23 create person1.make ("SOME_SURNAME", "SOME_FIRSTNAME")
24 create account.make (person1)
25 --assert ("not_implemented", False) 25 --assert ("not_implemented", False)
26 end 26 end
27 27
diff --git a/bank-eiffel/tests/test_person.e b/bank-eiffel/tests/test_person.e
index cd66ccb..a501deb 100644
--- a/bank-eiffel/tests/test_person.e
+++ b/bank-eiffel/tests/test_person.e
@@ -23,15 +23,10 @@ feature -- Test routines
23 assert("CREATE_EDIT_PERSON_FIRSTNAME_1", person.firstname.is_equal("SOME_FIRSTNAME_1")) 23 assert("CREATE_EDIT_PERSON_FIRSTNAME_1", person.firstname.is_equal("SOME_FIRSTNAME_1"))
24 assert("CREATE_EDIT_PERSON_SURNAME_1", person.surname.is_equal("SOME_SURNAME_1")) 24 assert("CREATE_EDIT_PERSON_SURNAME_1", person.surname.is_equal("SOME_SURNAME_1"))
25 25
26 person.set_firstname("SOME_FIRSTNAME_2") 26 person.firstname := "SOME_FIRSTNAME_2"
27 assert("CREATE_EDIT_PERSON_FIRSTNAME_2", person.firstname.is_equal("SOME_FIRSTNAME_2")) 27 assert("CREATE_EDIT_PERSON_FIRSTNAME_2", person.firstname.is_equal("SOME_FIRSTNAME_2"))
28 person.set_surname("SOME_SURENAME_2") 28 person.surname := "SOME_SURNAME_2"
29 assert("CREATE_EDIT_PERSON_SURNAME_2", person.surname.is_equal("SOME_SURENAME_2")) 29 assert("CREATE_EDIT_PERSON_SURNAME_2", person.surname.is_equal("SOME_SURNAME_2"))
30
31 person.firstname := "SOME_FIRSTNAME_3"
32 assert("CREATE_EDIT_PERSON_FIRSTNAME_3", person.firstname.is_equal("SOME_FIRSTNAME_3"))
33 person.surname := "SOME_SURNAME_3"
34 assert("CREATE_EDIT_PERSON_SURNAME_3", person.surname.is_equal("SOME_SURNAME_3"))
35 end 30 end
36 31
37 CREATE_EDIT_PERSON_EMPTY_SURNAME 32 CREATE_EDIT_PERSON_EMPTY_SURNAME
@@ -63,20 +58,6 @@ feature -- Test routines
63 person.surname := void 58 person.surname := void
64 doretry := False 59 doretry := False
65 assert("CREATE_EDIT_PERSON_EMPTY_SURNAME_4", False) 60 assert("CREATE_EDIT_PERSON_EMPTY_SURNAME_4", False)
66 elseif retry_count = 4 then
67 doretry := False
68 create person.make("SOME_SURNAME", "SOME_FIRSTNAME")
69 doretry := True
70 person.set_surname("")
71 doretry := False
72 assert("CREATE_EDIT_PERSON_EMPTY_SURNAME_5", False)
73 elseif retry_count = 5 then
74 doretry := False
75 create person.make("SOME_SURNAME", "SOME_FIRSTNAME")
76 doretry := True
77 person.set_surname(void)
78 doretry := False
79 assert("CREATE_EDIT_PERSON_EMPTY_SURNAME_6", False)
80 else 61 else
81 doretry := False 62 doretry := False
82 end 63 end
@@ -116,20 +97,6 @@ feature -- Test routines
116 person.firstname := void 97 person.firstname := void
117 doretry := False 98 doretry := False
118 assert("CREATE_EDIT_PERSON_EMPTY_FIRSTNAME_4", False) 99 assert("CREATE_EDIT_PERSON_EMPTY_FIRSTNAME_4", False)
119 elseif retry_count = 4 then
120 doretry := False
121 create person.make("SOME_SURNAME", "SOME_FIRSTNAME")
122 doretry := True
123 person.set_firstname("")
124 doretry := False
125 assert("CREATE_EDIT_PERSON_EMPTY_FIRSTNAME_5", False)
126 elseif retry_count = 5 then
127 doretry := False
128 create person.make("SOME_SURNAME", "SOME_FIRSTNAME")
129 doretry := True
130 person.set_firstname(void)
131 doretry := False
132 assert("CREATE_EDIT_PERSON_EMPTY_FIRSTNAME_6", False)
133 else 100 else
134 doretry := False 101 doretry := False
135 end 102 end