You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
3.2 KiB
Lua
136 lines
3.2 KiB
Lua
#!/usr/bin/lua
|
|
|
|
package.cpath = "./?.so;../?.so;.\\?.dll;..\\?.dll"
|
|
require( "sofix" )
|
|
|
|
local objex = require( "objex" )
|
|
local flgex = require( "flgex" )
|
|
local stkex = require( "stkex" )
|
|
|
|
|
|
print( _VERSION )
|
|
do
|
|
print( ("="):rep( 70 ) )
|
|
print( "[ objex test ]" )
|
|
local m = objex.getAmethods()
|
|
print( type( m ) )
|
|
if type( m ) == "table" then
|
|
for k,v in pairs( m ) do
|
|
print( k, v )
|
|
end
|
|
end
|
|
local a = objex.newA()
|
|
print( a, a.tag )
|
|
a:printme()
|
|
local b = a.b
|
|
print( a.b, b, a.c, b.f )
|
|
b.f = 1.0
|
|
print( pcall( function() b:printme() end ) )
|
|
a:printme()
|
|
a:switch()
|
|
print( pcall( function() b:printme() end ) )
|
|
print( a, a.tag )
|
|
a:printme()
|
|
local c = a.c
|
|
print( a.c, c, a.b )
|
|
c:printme()
|
|
local d = c.d
|
|
print( c.d, d, d.x, d.y )
|
|
d:printme()
|
|
d.x = 5
|
|
d.y = 10
|
|
print( d, d.x, d.y )
|
|
d:printme()
|
|
a:switch()
|
|
print( pcall( d.printme, d ) )
|
|
a:switch()
|
|
d:printme()
|
|
c:close()
|
|
print( pcall( d.printme, d ) )
|
|
local d2 = objex.getD()
|
|
print( d2, d2.x, d2.y )
|
|
d2:printme()
|
|
local d3 = objex.makeD( 100, 200 )
|
|
print( d3, d3.x, d3.y )
|
|
d3:printme()
|
|
local d4 = objex.newD()
|
|
print( d4, d4.x, d4.y )
|
|
d4:printme()
|
|
local c2 = objex.newC()
|
|
c2.d.x = 22
|
|
c2.d.y = 44
|
|
d2.x = 4
|
|
d2.y = 8
|
|
print( c2 )
|
|
c2:printme()
|
|
c2.d = d2
|
|
c2:printme()
|
|
c2:printmeD()
|
|
d2:printme()
|
|
local methods = objex.derive( "Derived", "D" )
|
|
function methods:func( ... )
|
|
print( self, self.a, ... )
|
|
end
|
|
local function makeDerived()
|
|
local d = objex.newD()
|
|
d.a = "a"
|
|
return objex.downcast( d, "Derived" )
|
|
end
|
|
local x = makeDerived()
|
|
x.x = 1
|
|
x.y = 2
|
|
x:printme()
|
|
x:vcall( 1, 2, 3 )
|
|
end
|
|
collectgarbage()
|
|
|
|
|
|
do
|
|
print( ("="):rep( 70 ) )
|
|
print( "[ flgex test ]" )
|
|
local m = flgex.getXmethods()
|
|
print( type( m ) )
|
|
if type( m ) == "table" then
|
|
for k,v in pairs( m ) do
|
|
print( k, v )
|
|
end
|
|
end
|
|
local flags = flgex.NULL + flgex.ONE + flgex.TWO
|
|
print( flags )
|
|
--[[
|
|
print( "bitops work(1):", flgex.NULL | flgex.ONE | flgex.TWO == flags )
|
|
print( "bitops work(2):", flags & ~flgex.ONE == flgex.TWO )
|
|
--]]
|
|
print( "flags contains flgex.ONE?", flags( flgex.ONE ) )
|
|
print( "flags contains flgex.TWO?", flags( flgex.TWO ) )
|
|
flags = flags - flgex.ONE
|
|
print( "flags contains flgex.ONE?", flags( flgex.ONE ) )
|
|
print( "flags contains flgex.TWO?", flags( flgex.TWO ) )
|
|
flags = flags - flgex.TWO
|
|
print( "flags contains flgex.ONE?", flags( flgex.ONE ) )
|
|
print( "flags contains flgex.TWO?", flags( flgex.TWO ) )
|
|
print( "same and identical:", flags == flgex.NULL, flags, flgex.NULL )
|
|
flags = (flgex.THREE + flgex.FOUR) - flgex.FOUR
|
|
print( "same but not identical:", flags == flgex.THREE, flags, flgex.THREE )
|
|
print( "better error message for mismatched types:" )
|
|
print( pcall( function() local wrong = flgex.ONE + flgex.THREE end ) )
|
|
end
|
|
|
|
|
|
do
|
|
print( ("="):rep( 70 ) )
|
|
print( "[ stkex test ]" )
|
|
print( pcall( stkex.somefunc, "hello", 123, {} ) )
|
|
print()
|
|
print( pcall( stkex.somefunc, "hello", "world", {} ) )
|
|
print()
|
|
print( pcall( stkex.somefunc, {} ) )
|
|
print()
|
|
print( pcall( stkex.somefunc, true ) )
|
|
print()
|
|
print( pcall( stkex.somefunc, "hel\001lo\n", nil, {} ) )
|
|
print()
|
|
print( pcall( stkex.somefunc, nil, nil, nil ) )
|
|
end
|
|
|