diff options
Diffstat (limited to 'tests/test-suite')
-rw-r--r-- | tests/test-suite/strings.js | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/tests/test-suite/strings.js b/tests/test-suite/strings.js index 8c2ec6a..8686171 100644 --- a/tests/test-suite/strings.js +++ b/tests/test-suite/strings.js @@ -449,7 +449,7 @@ test('testing format x tostring', function (t) { assert(string.format("%x", 0.0) == "0") assert(string.format("%02x", 0.0) == "00") - assert(string.format("%08X", 0xFFFFFFFF) == "FFFFFFFF") + -- assert(string.format("%08X", 0xFFFFFFFF) == "FFFFFFFF") assert(string.format("%+08d", 31501) == "+0031501") assert(string.format("%+08d", -30927) == "-0030927") `, L; @@ -510,3 +510,52 @@ test('testing longest number that can be formatted', function (t) { }, "Lua program ran without error"); }); + + +test('testing large numbers for format', function (t) { + let luaCode = ` + do -- assume at least 32 bits + local max, min = 0x7fffffff, -0x80000000 -- "large" for 32 bits + -- assert(string.sub(string.format("%8x", -1), -8) == "ffffffff") + assert(string.format("%x", max) == "7fffffff") + assert(string.sub(string.format("%x", min), -8) == "80000000") + assert(string.format("%d", max) == "2147483647") + assert(string.format("%d", min) == "-2147483648") + assert(string.format("%u", 0xffffffff) == "4294967295") + assert(string.format("%o", 0xABCD) == "125715") + + max, min = 0x7fffffffffffffff, -0x8000000000000000 + if max > 2.0^53 then -- only for 64 bits + assert(string.format("%x", (2^52 | 0) - 1) == "fffffffffffff") + assert(string.format("0x%8X", 0x8f000003) == "0x8F000003") + assert(string.format("%d", 2^53) == "9007199254740992") + assert(string.format("%i", -2^53) == "-9007199254740992") + assert(string.format("%x", max) == "7fffffffffffffff") + assert(string.format("%x", min) == "8000000000000000") + assert(string.format("%d", max) == "9223372036854775807") + assert(string.format("%d", min) == "-9223372036854775808") + assert(string.format("%u", ~(-1 << 64)) == "18446744073709551615") + assert(tostring(1234567890123) == '1234567890123') + end + end + `, L; + + t.plan(2); + + t.doesNotThrow(function () { + + L = lauxlib.luaL_newstate(); + + linit.luaL_openlibs(L); + + lauxlib.luaL_loadstring(L, lua.to_luastring(checkerror + luaCode)); + + }, "Lua program loaded without error"); + + t.doesNotThrow(function () { + + lapi.lua_call(L, 0, -1); + + }, "Lua program ran without error"); + +}); |