summaryrefslogtreecommitdiff
path: root/tests/ldblib.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ldblib.js')
-rw-r--r--tests/ldblib.js492
1 files changed, 0 insertions, 492 deletions
diff --git a/tests/ldblib.js b/tests/ldblib.js
deleted file mode 100644
index 8a30e48..0000000
--- a/tests/ldblib.js
+++ /dev/null
@@ -1,492 +0,0 @@
-"use strict";
-
-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");
-
-test('debug.sethook', function (t) {
- let luaCode = `
- local result = ""
-
- debug.sethook(function (event)
- result = result .. event .. " "
- end, "crl", 1)
-
- local l = function() end
-
- l()
- l()
- l()
-
- return result
- `, L;
-
- t.plan(3);
-
- t.doesNotThrow(function () {
-
- L = lauxlib.luaL_newstate();
-
- lualib.luaL_openlibs(L);
-
- lauxlib.luaL_loadstring(L, to_luastring(luaCode));
-
- }, "Lua program loaded without error");
-
- t.doesNotThrow(function () {
-
- lua.lua_call(L, 0, -1);
-
- }, "Lua program ran without error");
-
- t.strictEqual(
- lua.lua_tojsstring(L, -1),
- "return count line count line count line call count line return count line count line call count line return count line count line call count line return count line ",
- "Correct element(s) on the stack"
- );
-});
-
-
-test('debug.gethook', function (t) {
- let luaCode = `
- local result = ""
-
- debug.sethook(function (event)
- result = result .. event .. " "
- end, "crl", 1)
-
- local l = function() end
-
- l()
- l()
- l()
-
- return debug.gethook()
- `, L;
-
- t.plan(5);
-
- t.doesNotThrow(function () {
-
- L = lauxlib.luaL_newstate();
-
- lualib.luaL_openlibs(L);
-
- lauxlib.luaL_loadstring(L, to_luastring(luaCode));
-
- }, "Lua program loaded without error");
-
- t.doesNotThrow(function () {
-
- lua.lua_call(L, 0, -1);
-
- }, "Lua program ran without error");
-
- t.deepEqual(
- lua.lua_typename(L, lua.lua_type(L, -3)),
- to_luastring("function"),
- "Correct element(s) on the stack"
- );
-
- t.deepEqual(
- lua.lua_tojsstring(L, -2),
- "crl",
- "Correct element(s) on the stack"
- );
-
- t.deepEqual(
- lua.lua_tointeger(L, -1),
- 1,
- "Correct element(s) on the stack"
- );
-});
-
-
-test('debug.getlocal', function (t) {
- let luaCode = `
- local alocal = "alocal"
- local another = "another"
-
- local result = ""
-
- local l = function()
- local infunction = "infunction"
- local anotherin = "anotherin"
- result = table.concat(table.pack(debug.getlocal(2, 1)), " ")
- .. table.concat(table.pack(debug.getlocal(2, 2)), " ")
- .. table.concat(table.pack(debug.getlocal(1, 1)), " ")
- .. table.concat(table.pack(debug.getlocal(1, 2)), " ")
- end
-
- l()
-
- return result
- `, L;
-
- t.plan(3);
-
- t.doesNotThrow(function () {
-
- L = lauxlib.luaL_newstate();
-
- lualib.luaL_openlibs(L);
-
- lauxlib.luaL_loadstring(L, to_luastring(luaCode));
-
- }, "Lua program loaded without error");
-
- t.doesNotThrow(function () {
-
- lua.lua_call(L, 0, -1);
-
- }, "Lua program ran without error");
-
- t.strictEqual(
- lua.lua_tojsstring(L, -1),
- "alocal alocalanother anotherinfunction infunctionanotherin anotherin",
- "Correct element(s) on the stack"
- );
-});
-
-test('debug.setlocal', function (t) {
- let luaCode = `
- local alocal = "alocal"
- local another = "another"
-
- local l = function()
- local infunction = "infunction"
- local anotherin = "anotherin"
-
- debug.setlocal(2, 1, 1)
- debug.setlocal(2, 2, 2)
- debug.setlocal(1, 1, 3)
- debug.setlocal(1, 2, 4)
-
- return infunction, anotherin
- end
-
- local a, b = l()
-
- return alocal, another, a, b
- `, L;
-
- t.plan(6);
-
- t.doesNotThrow(function () {
-
- L = lauxlib.luaL_newstate();
-
- lualib.luaL_openlibs(L);
-
- lauxlib.luaL_loadstring(L, to_luastring(luaCode));
-
- }, "Lua program loaded without error");
-
- t.doesNotThrow(function () {
-
- lua.lua_call(L, 0, -1);
-
- }, "Lua program ran without error");
-
- t.strictEqual(
- lua.lua_tointeger(L, -4),
- 1,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tointeger(L, -3),
- 2,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tointeger(L, -2),
- 3,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tointeger(L, -1),
- 4,
- "Correct element(s) on the stack"
- );
-});
-
-test('debug.upvalueid', function (t) {
- let luaCode = `
- local upvalue = "upvalue"
-
- local l = function()
- return upvalue
- end
-
- return debug.upvalueid(l, 1)
- `, L;
-
- t.plan(3);
-
- t.doesNotThrow(function () {
-
- L = lauxlib.luaL_newstate();
-
- lualib.luaL_openlibs(L);
-
- lauxlib.luaL_loadstring(L, to_luastring(luaCode));
-
- }, "Lua program loaded without error");
-
- t.doesNotThrow(function () {
-
- lua.lua_call(L, 0, -1);
-
- }, "Lua program ran without error");
-
- t.ok(
- lua.lua_touserdata(L, -1),
- "Correct element(s) on the stack"
- );
-});
-
-
-test('debug.upvaluejoin', function (t) {
- let luaCode = `
- local upvalue1 = "upvalue1"
- local upvalue2 = "upvalue2"
-
- local l1 = function()
- return upvalue1
- end
-
- local l2 = function()
- return upvalue2
- end
-
- debug.upvaluejoin(l1, 1, l2, 1)
-
- return l1()
- `, L;
-
- t.plan(3);
-
- t.doesNotThrow(function () {
-
- L = lauxlib.luaL_newstate();
-
- lualib.luaL_openlibs(L);
-
- lauxlib.luaL_loadstring(L, to_luastring(luaCode));
-
- }, "Lua program loaded without error");
-
- t.doesNotThrow(function () {
-
- lua.lua_call(L, 0, -1);
-
- }, "Lua program ran without error");
-
- t.strictEqual(
- lua.lua_tojsstring(L, -1),
- "upvalue2",
- "Correct element(s) on the stack"
- );
-});
-
-
-test('debug.traceback (with a global)', function (t) {
- let luaCode = `
- local trace
-
- rec = function(n)
- n = n or 0
- if n < 10 then
- rec(n + 1)
- else
- trace = debug.traceback()
- end
- end
-
- rec()
-
- return trace
- `, L;
-
- t.plan(3);
-
- t.doesNotThrow(function () {
-
- L = lauxlib.luaL_newstate();
-
- lualib.luaL_openlibs(L);
-
- luaCode = to_luastring(luaCode);
- lauxlib.luaL_loadbuffer(L, luaCode, luaCode.length, to_luastring("traceback-test"));
-
- }, "Lua program loaded without error");
-
- t.doesNotThrow(function () {
-
- lua.lua_call(L, 0, -1);
-
- }, "Lua program ran without error");
-
- t.strictEqual(
- lua.lua_tojsstring(L, -1), `stack traceback:
-\t[string "traceback-test"]:9: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:7: in function 'rec'
-\t[string "traceback-test"]:13: in main chunk`,
- "Correct element(s) on the stack"
- );
-});
-
-
-test('debug.traceback (with a upvalue)', function (t) {
- let luaCode = `
- local trace
- local rec
-
- rec = function(n)
- n = n or 0
- if n < 10 then
- rec(n + 1)
- else
- trace = debug.traceback()
- end
- end
-
- rec()
-
- return trace
- `, L;
-
- t.plan(3);
-
- t.doesNotThrow(function () {
-
- L = lauxlib.luaL_newstate();
-
- lualib.luaL_openlibs(L);
-
- luaCode = to_luastring(luaCode);
- lauxlib.luaL_loadbuffer(L, luaCode, luaCode.length, to_luastring("traceback-test"));
-
- }, "Lua program loaded without error");
-
- t.doesNotThrow(function () {
-
- lua.lua_call(L, 0, -1);
-
- }, "Lua program ran without error");
-
- t.strictEqual(
- lua.lua_tojsstring(L, -1), `stack traceback:
-\t[string "traceback-test"]:10: in upvalue 'rec'
-\t[string "traceback-test"]:8: in upvalue 'rec'
-\t[string "traceback-test"]:8: in upvalue 'rec'
-\t[string "traceback-test"]:8: in upvalue 'rec'
-\t[string "traceback-test"]:8: in upvalue 'rec'
-\t[string "traceback-test"]:8: in upvalue 'rec'
-\t[string "traceback-test"]:8: in upvalue 'rec'
-\t[string "traceback-test"]:8: in upvalue 'rec'
-\t[string "traceback-test"]:8: in upvalue 'rec'
-\t[string "traceback-test"]:8: in upvalue 'rec'
-\t[string "traceback-test"]:8: in local 'rec'
-\t[string "traceback-test"]:14: in main chunk`,
- "Correct element(s) on the stack"
- );
-});
-
-test('debug.getinfo', function (t) {
- let luaCode = `
- local alocal = function(p1, p2) end
- global = function() return alocal end
-
- local d1 = debug.getinfo(alocal)
- local d2 = debug.getinfo(global)
-
- print(d1.short_src, d1.nups, d1.what, d1.nparams,
- d2.short_src, d2.nups, d2.what, d2.nparams)
-
- return d1.short_src, d1.nups, d1.what, d1.nparams,
- d2.short_src, d2.nups, d2.what, d2.nparams
- `, L;
-
- t.plan(10);
-
- t.doesNotThrow(function () {
-
- L = lauxlib.luaL_newstate();
-
- lualib.luaL_openlibs(L);
-
- luaCode = to_luastring(luaCode);
- lauxlib.luaL_loadbuffer(L, luaCode, luaCode.length, to_luastring("getinfo-test"));
-
- }, "Lua program loaded without error");
-
- t.doesNotThrow(function () {
-
- lua.lua_call(L, 0, -1);
-
- }, "Lua program ran without error");
-
- t.strictEqual(
- lua.lua_tojsstring(L, -8),
- `[string "getinfo-test"]`,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tointeger(L, -7),
- 0,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tojsstring(L, -6),
- `Lua`,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tointeger(L, -5),
- 2,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tojsstring(L, -4),
- `[string "getinfo-test"]`,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tointeger(L, -3),
- 1,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tojsstring(L, -2),
- `Lua`,
- "Correct element(s) on the stack"
- );
-
- t.strictEqual(
- lua.lua_tointeger(L, -1),
- 0,
- "Correct element(s) on the stack"
- );
-});