diff options
Diffstat (limited to 'tests/Smoke/account.lua')
-rw-r--r-- | tests/Smoke/account.lua | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/Smoke/account.lua b/tests/Smoke/account.lua new file mode 100644 index 0000000..e783c01 --- /dev/null +++ b/tests/Smoke/account.lua @@ -0,0 +1,35 @@ +-- account.lua +-- from PiL 1, Chapter 16 + +Account = {balance = 0} + +function Account:new (o, name) + o = o or {name=name} + setmetatable(o, self) + self.__index = self + return o +end + +function Account:deposit (v) + self.balance = self.balance + v +end + +function Account:withdraw (v) + if v > self.balance then error("insufficient funds on account "..self.name) end + self.balance = self.balance - v +end + +function Account:show (title) + print(title or "", self.name, self.balance) +end + +a = Account:new(nil,"demo") +a:show("after creation") +a:deposit(1000.00) +a:show("after deposit") +a:withdraw(100.00) +a:show("after withdraw") + +-- this would raise an error +b = Account:new(nil,"DEMO") +b:withdraw(100.00) |