summaryrefslogtreecommitdiffstats
path: root/tests/Smoke/account.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Smoke/account.lua')
-rw-r--r--tests/Smoke/account.lua35
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)