1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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)
|