-- file: example.lua

---- importing ----
if string.sub(_VERSION,1,7)=='Lua 5.0' then
	-- lua5.0 doesnt have a nice way to do this
	lib=loadlib('example.dll','Example_Init') or loadlib('example.so','Example_Init')
	assert(lib)()
else
	-- lua 5.1 does
	require('example')
end

print("ICONST  = "..example.ICONST.." (should be 42)")
print("FCONST  = "..example.FCONST.." (should be 2.1828)")
print("CCONST  = "..example.CCONST.." (should be 'x')")
print("CCONST2 = "..example.CCONST2.." (this should be on a new line)")
print("SCONST  = "..example.SCONST.." (should be 'Hello World')")
print("SCONST2 = "..example.SCONST2.." (should be '\"Hello World\"')")
print("EXPR    = "..example.EXPR.." (should be 48.5484)")
print("iconst  = "..example.iconst.." (should be 37)")
print("fconst  = "..example.fconst.." (should be 3.14)")

-- helper to check that a fn failed
function checkfail(fn)
	if pcall(fn)==true then
		print("that shouldn't happen, it worked")
	else
		print("function failed as expected")
	end
end

-- these should fail
-- example.EXTERN is a nil value, so concatentatin will make it fail
checkfail(function() print("EXTERN = "..example.EXTERN) end)
checkfail(function() print("FOO = "..example.FOO) end)
