summaryrefslogtreecommitdiff
path: root/Data/Libraries/Penlight/tests/test-class2.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Data/Libraries/Penlight/tests/test-class2.lua')
-rw-r--r--Data/Libraries/Penlight/tests/test-class2.lua28
1 files changed, 28 insertions, 0 deletions
diff --git a/Data/Libraries/Penlight/tests/test-class2.lua b/Data/Libraries/Penlight/tests/test-class2.lua
new file mode 100644
index 0000000..b463b6e
--- /dev/null
+++ b/Data/Libraries/Penlight/tests/test-class2.lua
@@ -0,0 +1,28 @@
+-- animal.lua
+require 'pl.app'.require_here 'lua'
+
+local test = require 'pl.test'
+local asserteq = test.asserteq
+
+local A = require 'animal'
+
+local fido, felix, leo
+fido = A.Dog('Fido')
+felix = A.Cat('Felix','Tabby')
+leo = A.Lion('Leo','African')
+
+asserteq(fido:speak(),'bark')
+asserteq(felix:speak(),'meow')
+asserteq(leo:speak(),'roar')
+
+asserteq(tostring(leo),'Leo: roar')
+
+test.assertraise(function() leo:circus_act() end, "no such method circus_act")
+
+asserteq(leo:is_a(A.Animal),true)
+asserteq(leo:is_a(A.Dog),false)
+asserteq(leo:is_a(A.Cat),true)
+
+asserteq(A.Dog:class_of(leo),false)
+asserteq(A.Cat:class_of(leo),true)
+asserteq(A.Lion:class_of(leo),true)