diff options
author | daurnimator <quae@daurnimator.com> | 2018-04-20 21:16:24 +1000 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2018-04-20 21:16:24 +1000 |
commit | a260f381d30e036b39078fee0295e539067c10a3 (patch) | |
tree | 4f3b2ecb264ec8dd29cac74d23223d15d297eb8e /tests/ltablib.js | |
parent | fe9b43374c2e8dc28df0ce460aefaf50b933aaa7 (diff) | |
parent | 9f5d4d35de0b88334bba7c11a9e960a19ee0740b (diff) | |
download | fengari-a260f381d30e036b39078fee0295e539067c10a3.tar.gz fengari-a260f381d30e036b39078fee0295e539067c10a3.tar.bz2 fengari-a260f381d30e036b39078fee0295e539067c10a3.zip |
Merge branch 'test-with-jest'
Diffstat (limited to 'tests/ltablib.js')
-rw-r--r-- | tests/ltablib.js | 268 |
1 files changed, 0 insertions, 268 deletions
diff --git a/tests/ltablib.js b/tests/ltablib.js deleted file mode 100644 index 660ac85..0000000 --- a/tests/ltablib.js +++ /dev/null @@ -1,268 +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"); - -const inttable2array = function(t) { - let a = []; - - t.strong.forEach(function (v, k) { - if (v.key.ttisnumber()) - a[k - 1] = v.value; - }); - - return a.map(e => e.value); -}; - -test('table.concat', function (t) { - let luaCode = ` - return table.concat({1, 2, 3, 4, 5, 6, 7}, ",", 3, 5) - `, L; - - t.plan(2); - - t.doesNotThrow(function () { - - L = lauxlib.luaL_newstate(); - - lualib.luaL_openlibs(L); - - lauxlib.luaL_loadstring(L, to_luastring(luaCode)); - - lua.lua_call(L, 0, -1); - - }, "JS Lua program ran without error"); - - t.strictEqual( - lua.lua_tojsstring(L, -1), - "3,4,5", - "Correct element(s) on the stack" - ); -}); - - -test('table.pack', function (t) { - let luaCode = ` - return table.pack(1, 2, 3) - `, L; - - t.plan(2); - - t.doesNotThrow(function () { - - L = lauxlib.luaL_newstate(); - - lualib.luaL_openlibs(L); - - lauxlib.luaL_loadstring(L, to_luastring(luaCode)); - - lua.lua_call(L, 0, -1); - - }, "JS Lua program ran without error"); - - t.deepEqual( - [...lua.lua_topointer(L, -1).strong.entries()] - .filter(e => e[1].key.ttisnumber()) // Filter out the 'n' field - .map(e => e[1].value.value).reverse(), - [1, 2, 3], - "Correct element(s) on the stack" - ); -}); - - -test('table.unpack', function (t) { - let luaCode = ` - return table.unpack({1, 2, 3, 4, 5}, 2, 4) - `, L; - - t.plan(4); - - t.doesNotThrow(function () { - - L = lauxlib.luaL_newstate(); - - lualib.luaL_openlibs(L); - - lauxlib.luaL_loadstring(L, to_luastring(luaCode)); - - lua.lua_call(L, 0, -1); - - }, "JS Lua program ran without error"); - - 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('table.insert', function (t) { - let luaCode = ` - local t = {1, 3, 4} - table.insert(t, 5) - table.insert(t, 2, 2) - return t - `, L; - - t.plan(2); - - t.doesNotThrow(function () { - - L = lauxlib.luaL_newstate(); - - lualib.luaL_openlibs(L); - - lauxlib.luaL_loadstring(L, to_luastring(luaCode)); - - lua.lua_call(L, 0, -1); - - }, "JS Lua program ran without error"); - - t.deepEqual( - [...lua.lua_topointer(L, -1).strong.entries()] - .filter(e => e[1].key.ttisnumber()) - .map(e => e[1].value.value).sort(), - [1, 2, 3, 4, 5], - "Correct element(s) on the stack" - ); -}); - - -test('table.remove', function (t) { - let luaCode = ` - local t = {1, 2, 3, 3, 4, 4} - table.remove(t) - table.remove(t, 3) - return t - `, L; - - t.plan(2); - - t.doesNotThrow(function () { - - L = lauxlib.luaL_newstate(); - - lualib.luaL_openlibs(L); - - lauxlib.luaL_loadstring(L, to_luastring(luaCode)); - - lua.lua_call(L, 0, -1); - - }, "JS Lua program ran without error"); - - t.deepEqual( - [...lua.lua_topointer(L, -1).strong.entries()] - .filter(e => e[1].key.ttisnumber()) - .map(e => e[1].value.value).sort(), - [1, 2, 3, 4], - "Correct element(s) on the stack" - ); -}); - - -test('table.move', function (t) { - let luaCode = ` - local t1 = {3, 4, 5} - local t2 = {1, 2, nil, nil, nil, 6} - return table.move(t1, 1, #t1, 3, t2) - `, L; - - t.plan(2); - - t.doesNotThrow(function () { - - L = lauxlib.luaL_newstate(); - - lualib.luaL_openlibs(L); - - lauxlib.luaL_loadstring(L, to_luastring(luaCode)); - - lua.lua_call(L, 0, -1); - - }, "JS Lua program ran without error"); - - t.deepEqual( - [...lua.lua_topointer(L, -1).strong.entries()] - .filter(e => e[1].key.ttisnumber()) - .map(e => e[1].value.value).sort(), - [1, 2, 3, 4, 5, 6], - "Correct element(s) on the stack" - ); -}); - - -test('table.sort (<)', function (t) { - let luaCode = ` - local t = {3, 1, 5, ['just'] = 'tofuckitup', 2, 4} - table.sort(t) - return t - `, L; - - t.plan(2); - - t.doesNotThrow(function () { - - L = lauxlib.luaL_newstate(); - - lualib.luaL_openlibs(L); - - lauxlib.luaL_loadstring(L, to_luastring(luaCode)); - - lua.lua_call(L, 0, -1); - - }, "JS Lua program ran without error"); - - t.deepEqual( - inttable2array(lua.lua_topointer(L, -1)), - [1, 2, 3, 4, 5], - "Correct element(s) on the stack" - ); -}); - - -test('table.sort with cmp function', function (t) { - let luaCode = ` - local t = {3, 1, 5, ['just'] = 'tofuckitup', 2, 4} - table.sort(t, function (a, b) - return a > b - end) - return t - `, L; - - t.plan(2); - - t.doesNotThrow(function () { - - L = lauxlib.luaL_newstate(); - - lualib.luaL_openlibs(L); - - lauxlib.luaL_loadstring(L, to_luastring(luaCode)); - - lua.lua_call(L, 0, -1); - - }, "JS Lua program ran without error"); - - t.deepEqual( - inttable2array(lua.lua_topointer(L, -1)), - [5, 4, 3, 2, 1], - "Correct element(s) on the stack" - ); -}); |