2013-11-14 05:31:27 +00:00
|
|
|
S = State()
|
|
|
|
assert(is_State(S))
|
|
|
|
S:eval([[ local x = ...; assert(x == 10) ]], 10)
|
|
|
|
S:eval([[ local f = ...; assert(f) ]], true)
|
|
|
|
S:eval([[ local f = ...; assert(not f) ]], false)
|
|
|
|
S:eval([[ local s = ...; assert(s == "foo") ]], "foo")
|
|
|
|
S:eval([[ local f = ...; assert(f(1) == 3) ]], function (x) return x + 2 end)
|
|
|
|
local val = 10
|
|
|
|
S:eval([[ local f = ...; assert(f(1) == 11) ]], function (x) return x + val end)
|
|
|
|
S:eval([[ local o = ...; assert(o == name("a")) ]], name("a"))
|
|
|
|
S:eval([[ local o = ...; assert(o == Const("a")) ]], Const("a"))
|
2014-05-21 18:24:24 +00:00
|
|
|
S:eval([[ local o = ...; assert(is_environment(o)) ]], bare_environment())
|
2013-11-14 05:31:27 +00:00
|
|
|
S:eval([[ local o = ...; assert(o == mpz(100)) ]], mpz(100))
|
|
|
|
S:eval([[ local o = ...; assert(o == mpq(100)/3) ]], mpq(100)/3)
|
|
|
|
S:eval([[ local o = ...; assert(is_options(o)) ]], options())
|
|
|
|
S:eval([[ local o = ...; assert(is_sexpr(o)) ]], sexpr())
|
|
|
|
S:eval([[ local o = ...; assert(o:is_cons()) ]], sexpr(1, 2))
|
|
|
|
S:eval([[ local o = ...; assert(is_format(o)) ]], format("1"))
|
|
|
|
S:eval([[ local o1, o2, o3 = ...; assert(is_sexpr(o1)); assert(is_name(o2)); assert(o3 == 10) ]], sexpr(), name("foo"), 10)
|
|
|
|
assert(not pcall(function() S:eval([[ x = ]]) end))
|
|
|
|
local T = thread(S, [[ local x = ...; return x + 10, x - 10 ]], 10)
|
|
|
|
assert(is_thread(T))
|
|
|
|
local r1, r2 = T:wait()
|
|
|
|
assert(r1 == 20)
|
|
|
|
assert(r2 == 0)
|
|
|
|
assert(not pcall(function() S:eval([[ x = ]]) end))
|
|
|
|
local T2 = thread(S, [[ local x = ...; error("failed") ]], 10)
|
|
|
|
local ok, msg = pcall(function() T2:wait() end)
|
|
|
|
assert(not ok)
|
2014-01-14 00:54:21 +00:00
|
|
|
assert(is_exception(msg))
|
|
|
|
print(msg:what())
|
|
|
|
assert(msg:what():find("failed"))
|
2013-11-14 05:31:27 +00:00
|
|
|
local T3 = thread(S, [[ local x = ...; return x + 10, x - 10 ]], 10)
|
|
|
|
T3 = nil
|