You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
308 lines
5.4 KiB
308 lines
5.4 KiB
-- TEST OP_RETURN
|
|
x=function() return; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(not x())
|
|
print('test OP_RETURN ok')
|
|
|
|
-- TEST OP_RETURN and OP_LOADK
|
|
x=function() return 42; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 42)
|
|
print('test OP_RETURN, OP_LOADK ok')
|
|
|
|
-- Test OP_RETURN, OP_LOADK, OP_MOVE
|
|
-- OP_RAVI_FORPREP_I1, OP_RAVI_FORLOOP_I1
|
|
x=function()
|
|
local j = 0
|
|
for i=1,1234 do
|
|
j = i
|
|
end
|
|
return j
|
|
end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 1234)
|
|
print('test OP_MOVE, OP_RAVI_FORPREP_I1, OP_RAVI_FORLOOP_I1 ok')
|
|
|
|
-- Test OP_RETURN, OP_LOADK, OP_MOVE
|
|
-- OP_RAVI_FORPREP_I1, OP_RAVI_FORLOOP_I1
|
|
-- OP_RAVI_ADDFN, OP_RAVI_LOADFZ
|
|
x=function()
|
|
local j:number
|
|
for i=1,1234 do
|
|
j = j + 1
|
|
end
|
|
return j
|
|
end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 1234.0)
|
|
print('test 4 ok')
|
|
|
|
-- Test OP_CALL
|
|
y=function() return x(); end
|
|
ravi.dumplua(y)
|
|
assert(ravi.compile(y))
|
|
assert(y() == 1234.0)
|
|
print('test 5 ok')
|
|
|
|
-- Test OP_EQ
|
|
x=function(a,b)
|
|
if a == b then
|
|
return "foo"
|
|
else
|
|
return "bar"
|
|
end
|
|
end
|
|
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x(1,1) == "foo")
|
|
assert(x(1,2) == "bar")
|
|
print('test 6 ok')
|
|
|
|
-- Test OP_EQ
|
|
x=function(a,b)
|
|
if a ~= b then
|
|
return "foo"
|
|
else
|
|
return "bar"
|
|
end
|
|
end
|
|
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x(1,1) == "bar")
|
|
assert(x(1,2) == "foo")
|
|
print('test 7 ok')
|
|
|
|
-- Test OP_LOADBOOL
|
|
function x() return not nil; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x())
|
|
print('test 8 Ok')
|
|
|
|
|
|
-- Test OP_LOADBOOL
|
|
function x() return not 1; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(not x())
|
|
print('test 9 Ok')
|
|
|
|
-- test 8
|
|
x = function ()
|
|
if 1 == 2 then
|
|
return 5.0
|
|
end
|
|
return 1.0
|
|
end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 1.0)
|
|
print("test 8 OK")
|
|
|
|
-- test 9
|
|
x = function (y)
|
|
if y == 1 then
|
|
return 1.0
|
|
elseif y == 5 then
|
|
return 2.0
|
|
else
|
|
return 3.0
|
|
end
|
|
end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x(5) == 2.0)
|
|
assert(x(4) == 3.0)
|
|
print("test 9 OK")
|
|
|
|
-- test 10
|
|
x = function (y,z)
|
|
if y == 1 then
|
|
if z == 1 then
|
|
return 99.0
|
|
else
|
|
return z
|
|
end
|
|
elseif y == 5 then
|
|
return 2.0
|
|
else
|
|
return 3.0
|
|
end
|
|
end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x(1,1) == 99.0)
|
|
assert(x(1,2) == 2)
|
|
assert(x(1,5.3) == 5.3)
|
|
assert(x(5) == 2.0)
|
|
assert(x(4) == 3.0)
|
|
print("test 10 OK")
|
|
|
|
|
|
-- test 16
|
|
function tryme(x,y)
|
|
if x < y then
|
|
return 1
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
ravi.dumplua(tryme)
|
|
assert(ravi.compile(tryme))
|
|
assert(tryme(1,2) == 1)
|
|
assert(tryme(2,1) == 0)
|
|
print("test 16 OK")
|
|
|
|
-- test 17
|
|
function tryme(x,y)
|
|
return x < y
|
|
end
|
|
ravi.dumplua(tryme)
|
|
assert(ravi.compile(tryme))
|
|
assert(tryme(1,2))
|
|
assert(not tryme(2,1))
|
|
print("test 17 OK")
|
|
|
|
-- test 19
|
|
function optest()
|
|
local a,b,c = 1, 5
|
|
c = a and b
|
|
return c
|
|
end
|
|
ravi.dumplua(optest)
|
|
assert(ravi.compile(optest))
|
|
-- ravi.dumpllvm(optest)
|
|
assert(optest() == 5)
|
|
print("test 19 OK")
|
|
|
|
-- test 20
|
|
function optest()
|
|
local a,b,c = 1, 5
|
|
c = a or b
|
|
return c
|
|
end
|
|
ravi.dumplua(optest)
|
|
assert(ravi.compile(optest))
|
|
-- ravi.dumpllvm(optest)
|
|
assert(optest() == 1)
|
|
print("test 20 OK")
|
|
|
|
-- test 21
|
|
function optest()
|
|
local a,b = 1, 5
|
|
if a and b then
|
|
return b
|
|
end
|
|
return a
|
|
end
|
|
ravi.dumplua(optest)
|
|
assert(ravi.compile(optest))
|
|
-- ravi.dumpllvm(optest)
|
|
assert(optest() == 5)
|
|
print("test 21 OK")
|
|
|
|
-- test 22
|
|
function optest()
|
|
local a,b = nil, 5
|
|
if a or b then
|
|
return b
|
|
end
|
|
return a
|
|
end
|
|
ravi.dumplua(optest)
|
|
assert(ravi.compile(optest))
|
|
-- ravi.dumpllvm(optest)
|
|
assert(optest() == 5)
|
|
print("test 22 OK")
|
|
|
|
-- test ADDFI
|
|
x=function() local i: integer = 5; local f: number=6.0; return f+i; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 11.0)
|
|
print("test ADDFI ok")
|
|
|
|
-- test ADDFF
|
|
x=function() local i: number = 5.0; local f: number=6.0; return f+i; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 11.0)
|
|
print("test ADDFF ok")
|
|
|
|
-- test ADDII
|
|
x=function() local i: integer = 5; local f: integer=6; return f+i; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 11)
|
|
print("test ADDII ok")
|
|
|
|
-- test ADDIN
|
|
x=function() local i: integer = 42; return i+2; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 44)
|
|
print("test ADDIN ok")
|
|
|
|
-- test SUBFF
|
|
x=function() local a: number, b:number = 42.5, 32.5; return a-b; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 10.0)
|
|
print("test SUBFF ok")
|
|
|
|
-- test SUBFI
|
|
x=function() local a: number, b:integer = 42.5, 5; return a-b; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 37.5)
|
|
print("test SUBFI ok")
|
|
|
|
-- test SUBIF
|
|
x=function() local a: number, b:integer = 42.5, 5; return b-a; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == -37.5)
|
|
print("test SUBIF ok")
|
|
|
|
-- test SUBII
|
|
x=function() local a: integer, b:integer = 42, 5; return b-a; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == -37)
|
|
print("test SUBII ok")
|
|
|
|
-- test SUBFN
|
|
x=function() local a: number = 42.5; return a-5; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == 37.5)
|
|
print("test SUBFN ok")
|
|
|
|
-- test SUBNF
|
|
x=function() local a: number = 42.5; return 5-a; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == -37.5)
|
|
print("test SUBNF ok")
|
|
|
|
-- test SUBIN
|
|
x=function() local a: integer = 42; return a-5; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
--ravi.dumpllvm(x)
|
|
assert(x() == 37)
|
|
print("test SUBIN ok")
|
|
|
|
-- test SUBNI
|
|
x=function() local a: integer = 42; return 5-a; end
|
|
ravi.dumplua(x)
|
|
assert(ravi.compile(x))
|
|
assert(x() == -37)
|
|
print("test SUBNI ok")
|