summaryrefslogtreecommitdiff
path: root/tests/test-suite/api.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-suite/api.js')
-rw-r--r--tests/test-suite/api.js215
1 files changed, 119 insertions, 96 deletions
diff --git a/tests/test-suite/api.js b/tests/test-suite/api.js
index b5f45c3..0061c88 100644
--- a/tests/test-suite/api.js
+++ b/tests/test-suite/api.js
@@ -5,6 +5,7 @@ const test = require('tape');
const lua = require('../../src/lua.js');
const lauxlib = require('../../src/lauxlib.js');
const lualib = require('../../src/lualib.js');
+const {to_luastring} = require("../../src/fengaricore.js");
const ltests = require('./ltests.js');
@@ -32,7 +33,7 @@ test("[test-suite] api: registry", function (t) {
a = T.testC("pushvalue R; return 1")
assert(a == debug.getregistry())
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -43,7 +44,7 @@ test("[test-suite] api: registry", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -62,7 +63,7 @@ test("[test-suite] api: absindex", function (t) {
assert(T.testC("settop 10; absindex 1; return 1") == 1)
assert(T.testC("settop 10; absindex R; return 1") < -10)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -73,7 +74,7 @@ test("[test-suite] api: absindex", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -99,7 +100,7 @@ test("[test-suite] api: testing alignment", function (t) {
a,b,c = f()
assert(a == 2 and b == 3 and not c)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -110,7 +111,7 @@ test("[test-suite] api: testing alignment", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -164,7 +165,7 @@ test("[test-suite] api: test that all trues are equal", function (t) {
t = pack(T.testC("copy -3 -1; return *", 2, 3, 4, 5))
tcheck(t, {n=4,2,3,4,3})
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -175,7 +176,7 @@ test("[test-suite] api: test that all trues are equal", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -212,7 +213,7 @@ test("[test-suite] api: testing 'rotate'", function (t) {
tcheck(t, {10, 20, 30, 40})
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -223,7 +224,7 @@ test("[test-suite] api: testing 'rotate'", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -265,7 +266,7 @@ test("[test-suite] api: testing non-function message handlers", function (t) {
t = pack(T.testC("concat 5; return *", "alo", 2, 3, "joao", 12))
tcheck(t, {n=1,"alo23joao12"})
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -276,7 +277,7 @@ test("[test-suite] api: testing non-function message handlers", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -294,7 +295,7 @@ test("[test-suite] api: testing MULTRET", function (t) {
function (a,b) return 1,2,3,4,a,b end, "alo", "joao"))
tcheck(t, {n=6,1,2,3,4,"alo", "joao"})
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -305,7 +306,7 @@ test("[test-suite] api: testing MULTRET", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -327,7 +328,7 @@ test("[test-suite] api: test returning more results than fit in the caller stack
assert(b == "10")
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -338,7 +339,7 @@ test("[test-suite] api: test returning more results than fit in the caller stack
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -362,7 +363,7 @@ test("[test-suite] api: testing globals", function (t) {
]]}
assert(a[2] == 14 and a[3] == "a31" and a[4] == nil and _G.a == "a31")
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -373,7 +374,7 @@ test("[test-suite] api: testing globals", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -420,7 +421,7 @@ test("[test-suite] api: testing arith", function (t) {
assert(T.testC("arith _; arith +; arith %; return 1", b, a, c)[1] ==
8 % (4 + (-3)*2))
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -431,7 +432,7 @@ test("[test-suite] api: testing arith", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -448,7 +449,7 @@ test("[test-suite] api: errors in arithmetic", function (t) {
checkerr("divide by zero", T.testC, "arith \\\\", 10, 0)
checkerr("%%0", T.testC, "arith %", 10, 0)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -459,7 +460,7 @@ test("[test-suite] api: errors in arithmetic", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -481,7 +482,7 @@ test("[test-suite] api: testing lessthan and lessequal", function (t) {
assert(not T.testC("compare LT 2 -3, return 1", "4", "2", "2", "3", "2", "2"))
assert(not T.testC("compare LT -3 2, return 1", "3", "2", "2", "4", "2", "2"))
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -492,7 +493,7 @@ test("[test-suite] api: testing lessthan and lessequal", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -524,7 +525,7 @@ test("[test-suite] api: non-valid indices produce false", function (t) {
a,b = T.testC("compare LE 5 -6, return 2", a1, 2, 2, a1, 2, 20)
assert(a == 20 and b == true)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -535,7 +536,7 @@ test("[test-suite] api: non-valid indices produce false", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -575,7 +576,7 @@ test("[test-suite] api: testing length", function (t) {
]], t)
assert(a == print and c == 1)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -586,7 +587,7 @@ test("[test-suite] api: testing length", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -617,7 +618,7 @@ test("[test-suite] api: testing __concat", function (t) {
-- concat with 1 element
assert(T.testC("concat 1; return 1", "xuxu") == "xuxu")
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -628,7 +629,7 @@ test("[test-suite] api: testing __concat", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -672,7 +673,7 @@ test("[test-suite] api: testing lua_is", function (t) {
assert(count(io.stdin) == 1)
assert(count(nil, 15) == 100)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -683,7 +684,7 @@ test("[test-suite] api: testing lua_is", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -733,7 +734,7 @@ test("[test-suite] api: testing lua_to...", function (t) {
a = to("tocfunction", math.deg)
assert(a(3) == math.deg(3) and a == math.deg)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -744,7 +745,7 @@ test("[test-suite] api: testing lua_to...", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -771,7 +772,7 @@ test("[test-suite] api: testing panic function", function (t) {
-- "argerror" without frames
assert(T.checkpanic("loadstring 4") ==
"bad argument #4 (string expected, got no value)")
-
+
--[[ TODO: T.totalmem
-- memory error
@@ -792,7 +793,7 @@ test("[test-suite] api: testing panic function", function (t) {
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -803,7 +804,7 @@ test("[test-suite] api: testing panic function", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(luaCode));
}, "Lua program loaded without error");
@@ -848,7 +849,7 @@ test("[test-suite] api: testing deep JS stack", { skip: true }, function (t) {
assert(next(t) == nil)
prog, g, t = nil
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -859,7 +860,7 @@ test("[test-suite] api: testing deep JS stack", { skip: true }, function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -891,7 +892,7 @@ test("[test-suite] api: testing errors", function (t) {
check3("%.", T.testC("loadfile 2; return *", "."))
check3("xxxx", T.testC("loadfile 2; return *", "xxxx"))
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -902,7 +903,7 @@ test("[test-suite] api: testing errors", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -929,7 +930,7 @@ test("[test-suite] api: test errors in non protected threads", { skip: true }, f
checkerrnopro("getglobal 'f'; call 0 0;", "stack overflow")
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -940,7 +941,7 @@ test("[test-suite] api: test errors in non protected threads", { skip: true }, f
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -992,7 +993,7 @@ test("[test-suite] api: testing table access", function (t) {
assert(a[b] == 19)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1003,7 +1004,7 @@ test("[test-suite] api: testing table access", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1032,7 +1033,7 @@ test("[test-suite] api: testing getfield/setfield with long keys", function (t)
_012345678901234567890123456789012345678901234567890123456789 = nil
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1043,7 +1044,7 @@ test("[test-suite] api: testing getfield/setfield with long keys", function (t)
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1066,7 +1067,7 @@ test("[test-suite] api: testing next", function (t) {
t = pack(T.testC("next; pop 1; next; return *", a, nil))
tcheck(t, {n=1,a})
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1077,7 +1078,7 @@ test("[test-suite] api: testing next", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1106,7 +1107,7 @@ test("[test-suite] api: testing upvalues", function (t) {
-- T.checkmemory()
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1117,7 +1118,7 @@ test("[test-suite] api: testing upvalues", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1142,7 +1143,7 @@ test("[test-suite] api: testing absent upvalues from JS-function pointers", func
T.upvalue(f, 2, "xuxu")
assert(T.upvalue(f, 2) == "xuxu")
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1153,7 +1154,7 @@ test("[test-suite] api: testing absent upvalues from JS-function pointers", func
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1179,7 +1180,7 @@ test("[test-suite] api: large closures", function (t) {
assert(not A("isnil U256; return 1"))
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1190,7 +1191,7 @@ test("[test-suite] api: large closures", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1226,7 +1227,7 @@ test("[test-suite] api: testing get/setuservalue", function (t) {
-- collectgarbage() -- number should not be a problem for collector
assert(debug.getuservalue(b) == 134)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1237,7 +1238,7 @@ test("[test-suite] api: testing get/setuservalue", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1257,7 +1258,7 @@ test("[test-suite] api: testing get/setuservalue", { skip: true }, function (t)
T.gcstate("pause") -- complete collection
assert(debug.getuservalue(b).x == 100) -- uvalue should be there
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1268,7 +1269,7 @@ test("[test-suite] api: testing get/setuservalue", { skip: true }, function (t)
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1294,7 +1295,7 @@ test("[test-suite] api: long chain of userdata", { skip: true }, function (t) {
assert(debug.getuservalue(b).x == 100)
b = nil
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1305,7 +1306,7 @@ test("[test-suite] api: long chain of userdata", { skip: true }, function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1366,7 +1367,7 @@ test("[test-suite] api: reuse of references", { skip: true }, function (t) {
assert(type(T.getref(a)) == 'table')
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1377,7 +1378,7 @@ test("[test-suite] api: reuse of references", { skip: true }, function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1494,7 +1495,7 @@ test("[test-suite] api: collect in cl the `val' of all collected userdata", { sk
collectgarbage()
assert(#cl == 1 and cl[1] == x) -- old 'x' must be collected
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1505,7 +1506,7 @@ test("[test-suite] api: collect in cl the `val' of all collected userdata", { sk
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1550,7 +1551,7 @@ test("[test-suite] api: test whether udate collection frees memory in the right
collectgarbage("restart")
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1561,7 +1562,7 @@ test("[test-suite] api: test whether udate collection frees memory in the right
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1582,7 +1583,7 @@ test("[test-suite] api: testing lua_equal", function (t) {
assert(not T.testC("compare EQ 2 3; return 1"))
assert(not T.testC("compare EQ 2 3; return 1", 3))
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1593,7 +1594,7 @@ test("[test-suite] api: testing lua_equal", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1624,7 +1625,7 @@ test("[test-suite] api: testing lua_equal with fallbacks", function (t) {
assert(f(10) ~= f(10))
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1635,7 +1636,7 @@ test("[test-suite] api: testing lua_equal with fallbacks", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1670,7 +1671,7 @@ test("[test-suite] api: testing changing hooks during hooks", function (t) {
assert(t[5] == "line" and t[6] == line + 2)
assert(t[7] == nil)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1681,7 +1682,7 @@ test("[test-suite] api: testing changing hooks during hooks", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1722,7 +1723,7 @@ test("[test-suite] api: testing errors during GC", { skip: true }, function (t)
assert(A == 10) -- number of normal collections
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1733,7 +1734,7 @@ test("[test-suite] api: testing errors during GC", { skip: true }, function (t)
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1757,7 +1758,7 @@ test("[test-suite] api: test for userdata vals", function (t) {
assert(type(tostring(a[1])) == "string")
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1768,7 +1769,7 @@ test("[test-suite] api: test for userdata vals", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1828,7 +1829,7 @@ test("[test-suite] api: testing multiple states", function (t) {
T.closestate(L1)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1839,7 +1840,7 @@ test("[test-suite] api: testing multiple states", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1859,7 +1860,7 @@ test("[test-suite] api: testing memory limits", { skip: true }, function (t) {
checkerr("not enough memory", load"local a={}; for i=1,100000 do a[i]=i end")
T.totalmem(0) -- restore high limit
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1870,7 +1871,7 @@ test("[test-suite] api: testing memory limits", { skip: true }, function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -1914,7 +1915,7 @@ test("[test-suite] api: testing memory errors when creating a new state", { skip
b = testamem("state creation", T.newstate)
T.closestate(b); -- close new state
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1925,7 +1926,7 @@ test("[test-suite] api: testing memory errors when creating a new state", { skip
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + memprefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + memprefix + luaCode));
}, "Lua program loaded without error");
@@ -1936,13 +1937,35 @@ test("[test-suite] api: testing memory errors when creating a new state", { skip
}, "Lua program ran without error");
});
-test("[test-suite] api: get main thread from registry (at index LUA_RIDX_MAINTHREAD == 1)", { skip: true }, function (t) {
+test("[test-suite] api: get main thread from registry (at index LUA_RIDX_MAINTHREAD == 1)", function (t) {
let luaCode = `
mt = T.testC("rawgeti R 1; return 1")
assert(type(mt) == "thread" and coroutine.running() == mt)
+ `, L;
+
+ t.plan(2);
+
+ t.doesNotThrow(function () {
+
+ L = lauxlib.luaL_newstate();
+
+ lualib.luaL_openlibs(L);
+ ltests.luaopen_tests(L);
+
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + memprefix + luaCode));
+ }, "Lua program loaded without error");
+
+ t.doesNotThrow(function () {
+ lua.lua_call(L, 0, -1);
+
+ }, "Lua program ran without error");
+});
+
+test("[test-suite] api: test thread creation after stressing GC", { skip: true }, function (t) {
+ let luaCode = `
function expand (n,s)
if n==0 then return "" end
local e = string.rep("=", n)
@@ -1958,7 +1981,7 @@ test("[test-suite] api: get main thread from registry (at index LUA_RIDX_MAINTHR
return T.doonnewstack("x=1") == 0 -- try to create thread
end)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1969,7 +1992,7 @@ test("[test-suite] api: get main thread from registry (at index LUA_RIDX_MAINTHR
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + memprefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + memprefix + luaCode));
}, "Lua program loaded without error");
@@ -1987,7 +2010,7 @@ test("[test-suite] api: testing memory x compiler", { skip: true }, function (t)
return load("x=1") -- try to do load a string
end)
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -1998,7 +2021,7 @@ test("[test-suite] api: testing memory x compiler", { skip: true }, function (t)
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + memprefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + memprefix + luaCode));
}, "Lua program loaded without error");
@@ -2033,7 +2056,7 @@ test("[test-suite] api: testing memory x dofile", { skip: true }, function (t) {
assert(os.remove(t))
assert(_G.a == "aaax")
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -2044,7 +2067,7 @@ test("[test-suite] api: testing memory x dofile", { skip: true }, function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + memprefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + memprefix + luaCode));
}, "Lua program loaded without error");
@@ -2116,7 +2139,7 @@ test("[test-suite] api: other generic tests", { skip: true }, function (t) {
end)
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -2127,7 +2150,7 @@ test("[test-suite] api: other generic tests", { skip: true }, function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + memprefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + memprefix + luaCode));
}, "Lua program loaded without error");
@@ -2153,7 +2176,7 @@ test("[test-suite] api: testing some auxlib functions", function (t) {
assert(gsub("...", ".", "/.") == "/././.")
assert(gsub("...", "...", "") == "")
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -2164,7 +2187,7 @@ test("[test-suite] api: testing some auxlib functions", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");
@@ -2225,7 +2248,7 @@ test("[test-suite] api: testing luaL_newmetatable", function (t) {
r.xuxu = nil; r.xuxu1 = nil
end
`, L;
-
+
t.plan(2);
t.doesNotThrow(function () {
@@ -2236,7 +2259,7 @@ test("[test-suite] api: testing luaL_newmetatable", function (t) {
ltests.luaopen_tests(L);
- lauxlib.luaL_loadstring(L, lua.to_luastring(prefix + luaCode));
+ lauxlib.luaL_loadstring(L, to_luastring(prefix + luaCode));
}, "Lua program loaded without error");