32 lines
737 B
Lua
32 lines
737 B
Lua
package.path = "?.lua;src/test/res/?.lua"
|
|
require 'ids'
|
|
|
|
-- The purpose of this test case is to demonstrate that
|
|
-- basic metatable operations on non-table types work.
|
|
-- i.e. that s.sub(s,...) could be used in place of string.sub(s,...)
|
|
local s = "hello"
|
|
print(s:sub(2,4))
|
|
|
|
local t = {}
|
|
function op(name,...)
|
|
a,b,c,d = pcall( setmetatable, t, ... )
|
|
print( name, id(t), id(getmetatable(t)), id(a), id(b), id(c), id(d) )
|
|
end
|
|
op('set{} ',{})
|
|
op('set-nil',nil)
|
|
op('set{} ',{})
|
|
op('set')
|
|
op('set{} ',{})
|
|
op('set{} ',{})
|
|
op('set{}{}',{},{})
|
|
op('set-nil',nil)
|
|
op('set{__}',{__metatable={}})
|
|
op('set{} ',{})
|
|
op('set-nil',nil)
|
|
t = {}
|
|
op('set{} ',{})
|
|
op('set-nil',nil)
|
|
op('set{__}',{__metatable='abc'})
|
|
op('set{} ',{})
|
|
op('set-nil',nil)
|