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

#!/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