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/lstrlib.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/lstrlib.js')
-rw-r--r-- | tests/lstrlib.js | 865 |
1 files changed, 0 insertions, 865 deletions
diff --git a/tests/lstrlib.js b/tests/lstrlib.js deleted file mode 100644 index 50e9996..0000000 --- a/tests/lstrlib.js +++ /dev/null @@ -1,865 +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('string.len', function (t) { - let luaCode = ` - local a = "world" - return string.len("hello"), a:len() - `, L; - - t.plan(4); - - 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, -2), - 5, - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tointeger(L, -1), - 5, - "Correct element(s) on the stack" - ); - -}); - - -test('string.char', function (t) { - let luaCode = ` - return string.char(104, 101, 108, 108, 111) - `, 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), - "hello", - "Correct element(s) on the stack" - ); -}); - - -test('string.upper, string.lower', function (t) { - let luaCode = ` - return string.upper("hello"), string.lower("HELLO") - `, L; - - t.plan(4); - - 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, -2), - "HELLO", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -1), - "hello", - "Correct element(s) on the stack" - ); -}); - - -test('string.rep', function (t) { - let luaCode = ` - return string.rep("hello", 3, ", ") - `, 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), - "hello, hello, hello", - "Correct element(s) on the stack" - ); -}); - - -test('string.reverse', function (t) { - let luaCode = ` - return string.reverse("olleh") - `, 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), - "hello", - "Correct element(s) on the stack" - ); -}); - - -test('string.byte', function (t) { - let luaCode = ` - return string.byte("hello", 2, 4) - `, 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.strictEqual( - lua.lua_tointeger(L, -3), - 101, - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tointeger(L, -2), - 108, - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tointeger(L, -1), - 108, - "Correct element(s) on the stack" - ); -}); - - -test('string.format', function (t) { - let luaCode = ` - return string.format("%%%d %010d", 10, 23) - `, 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), - "%10 0000000023", - "Correct element(s) on the stack" - ); -}); - - -test('string.format', function (t) { - let luaCode = ` - return string.format("%07X", 0xFFFFFFF) - `, 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), - "FFFFFFF", - "Correct element(s) on the stack" - ); -}); - - -test('string.format', function (t) { - let luaCode = ` - return string.format("%q", 'a string with "quotes" and \\n new line') - `, 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), - '"a string with \\"quotes\\" and \\\n new line"', - "Correct element(s) on the stack" - ); -}); - - -test('string.sub', function (t) { - let luaCode = ` - return string.sub("123456789",2,4), -- "234" - string.sub("123456789",7), -- "789" - string.sub("123456789",7,6), -- "" - string.sub("123456789",7,7), -- "7" - string.sub("123456789",0,0), -- "" - string.sub("123456789",-10,10), -- "123456789" - string.sub("123456789",1,9), -- "123456789" - string.sub("123456789",-10,-20), -- "" - string.sub("123456789",-1), -- "9" - string.sub("123456789",-4), -- "6789" - string.sub("123456789",-6, -4) -- "456" - `, L; - - t.plan(13); - - 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, -11), - "234", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -10), - "789", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -9), - "", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -8), - "7", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -7), - "", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -6), - "123456789", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -5), - "123456789", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -4), - "", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -3), - "9", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -2), - "6789", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -1), - "456", - "Correct element(s) on the stack" - ); -}); - - -test('string.dump', function (t) { - let luaCode = ` - local todump = function() - local s = "hello" - local i = 12 - local f = 12.5 - local b = true - - return s .. i .. f - end - - return string.dump(todump) - `, L; - - t.plan(3); - - t.doesNotThrow(function () { - L = lauxlib.luaL_newstate(); - - lualib.luaL_openlibs(L); - - lauxlib.luaL_loadstring(L, to_luastring(luaCode.trim())); - - }, "Lua program loaded without error"); - - t.doesNotThrow(function () { - - lua.lua_call(L, 0, -1); - - let str = lua.lua_tostring(L, -1); - - lua.lua_load(L, function(L, s) { let r = s.str; s.str = null; return r; }, {str: str}, to_luastring("test"), to_luastring("binary")); - - lua.lua_call(L, 0, -1); - - }, "Lua program ran without error"); - - t.strictEqual( - lua.lua_tojsstring(L, -1), - "hello1212.5", - "Correct element(s) on the stack" - ); -}); - - -test('string.pack/unpack/packsize', function (t) { - let luaCode = ` - local s1, n, s2 = "hello", 2, "you" - local packed = string.pack("c5jc3", s1, n, s2) - local us1, un, us2 = string.unpack("c5jc3", packed) - return string.packsize("c5jc3"), s1 == us1 and n == un and s2 == us2 - `, L; - - t.plan(4); - - 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, -2), - 12, - "Correct element(s) on the stack" - ); - - t.ok( - lua.lua_toboolean(L, -1), - "Correct element(s) on the stack" - ); -}); - - -test('string.find without pattern', function (t) { - let luaCode = ` - return string.find("hello to you", " to ") - `, L; - - t.plan(4); - - 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, -2), - 6, - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tointeger(L, -1), - 9, - "Correct element(s) on the stack" - ); -}); - - -test('string.match', function (t) { - let luaCode = ` - return string.match("foo: 123 bar: 456", "(%a+):%s*(%d+)") - `, L; - - t.plan(4); - - 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, -2), - "foo", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -1), - "123", - "Correct element(s) on the stack" - ); -}); - - -test('string.find', function (t) { - let luaCode = ` - return string.find("foo: 123 bar: 456", "(%a+):%s*(%d+)") - `, 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), - 8, - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -2), - "foo", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -1), - "123", - "Correct element(s) on the stack" - ); -}); - - -test('string.gmatch', function (t) { - let luaCode = ` - local s = "hello world from Lua" - local t = {} - - for w in string.gmatch(s, "%a+") do - table.insert(t, w) - end - - return table.unpack(t) - `, 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_tojsstring(L, -4), - "hello", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -3), - "world", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -2), - "from", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tojsstring(L, -1), - "Lua", - "Correct element(s) on the stack" - ); -}); - - -test('string.gsub', function (t) { - let luaCode = ` - return string.gsub("hello world", "(%w+)", "%1 %1") - `, L; - - t.plan(4); - - 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, -2), - "hello hello world world", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tointeger(L, -1), - 2, - "Correct element(s) on the stack" - ); -}); - - -test('string.gsub (number)', function (t) { - let luaCode = ` - return string.gsub("hello world", "%w+", "%0 %0", 1) - `, L; - - t.plan(4); - - 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, -2), - "hello hello world", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tointeger(L, -1), - 1, - "Correct element(s) on the stack" - ); -}); - - -test('string.gsub (pattern)', function (t) { - let luaCode = ` - return string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1") - `, L; - - t.plan(4); - - 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, -2), - "world hello Lua from", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tointeger(L, -1), - 2, - "Correct element(s) on the stack" - ); -}); - - -test('string.gsub (function)', function (t) { - let luaCode = ` - return string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s) - return load(s)() - end) - `, L; - - t.plan(4); - - 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, -2), - "4+5 = 9", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tointeger(L, -1), - 1, - "Correct element(s) on the stack" - ); -}); - - - -test('string.gsub (table)', function (t) { - let luaCode = ` - local t = {name="lua", version="5.3"} - return string.gsub("$name-$version.tar.gz", "%$(%w+)", t) - `, L; - - t.plan(4); - - 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, -2), - "lua-5.3.tar.gz", - "Correct element(s) on the stack" - ); - - t.strictEqual( - lua.lua_tointeger(L, -1), - 2, - "Correct element(s) on the stack" - ); -}); |