Skip to content

Commit d4018d3

Browse files
committed
fix int overflow
1 parent aca5530 commit d4018d3

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

luzer/tests/test_unit.lua

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,18 @@ local err
1616
local fdp
1717
local res
1818

19-
local MAX_INT = 2^51
19+
-- By default `lua_Integer` is long long, (usually a 64-bit
20+
-- two-complement integer), but that can be changed to long or
21+
-- int (usually a 32-bit two-complement integer), see LUA_INT_TYPE
22+
-- in <luaconf.h>. Lua 5.3+ has two functions:
23+
-- `math.maxinteger` and `math.mininteger` that returns an integer
24+
-- with the maximum value for an integer and an integer with the
25+
-- minimum value for an integer, see [1].
26+
--
27+
-- 1. https://www.lua.org/manual/5.3/manual.html#lua_Integer
28+
local MAX_INT64 = 0x7fffffffffffffff
29+
local MAX_INT = math.maxinteger or MAX_INT64
30+
local MIN_INT = math.mininteger or -MAX_INT64
2031

2132
-- luzer.FuzzedDataProvider()
2233
assert(type(luzer.FuzzedDataProvider) == "function")
@@ -138,7 +149,7 @@ assert(ok == false)
138149
assert(err ~= nil)
139150

140151
-- luzer.FuzzedDataProvider.consume_integer()
141-
fdp = luzer.FuzzedDataProvider("AB")
152+
fdp = luzer.FuzzedDataProvider(string.rep("ABC", 1000))
142153
assert(type(fdp.consume_integer) == "function")
143154

144155
res = fdp:consume_integer(10, 20)
@@ -150,7 +161,15 @@ ok, err = pcall(fdp.consume_integer)
150161
assert(ok == false)
151162
assert(err ~= nil)
152163

153-
local i = fdp:consume_integer(1, MAX_INT)
164+
local max_int = fdp:consume_integer(MAX_INT, MAX_INT)
165+
assert(type(max_int) == "number")
166+
assert(max_int == MAX_INT)
167+
168+
local min_int = fdp:consume_integer(MIN_INT, MIN_INT)
169+
assert(type(min_int) == "number")
170+
assert(min_int == MIN_INT)
171+
172+
local i = fdp:consume_integer(MIN_INT, MAX_INT)
154173
assert(type(i) == "number")
155174

156175
-- luzer.FuzzedDataProvider.consume_integers()

0 commit comments

Comments
 (0)