diff --git a/src/lua/uuid.lua b/src/lua/uuid.lua index cc91363c029e322a656c7af45a11c407c3f66681..956ad6e36e6bcccc2b8525b90e3ec9240b18cc03 100644 --- a/src/lua/uuid.lua +++ b/src/lua/uuid.lua @@ -36,6 +36,9 @@ local UUID_LEN = ffi.sizeof(uuid_t) local uuidbuf = ffi.new(uuid_t) local uuid_tostring = function(uu) + if not ffi.istype(uuid_t, uu) then + return error('Usage: uuid:str()') + end return ffi.string(builtin.tt_uuid_str(uu), UUID_STR_LEN) end @@ -62,6 +65,9 @@ local need_bswap = function(order) end local uuid_tobin = function(uu, byteorder) + if not ffi.istype(uuid_t, uu) then + return error('Usage: uuid:bin([byteorder])') + end if need_bswap(byteorder) then if uu ~= uuidbuf then ffi.copy(uuidbuf, uu, UUID_LEN) @@ -85,6 +91,9 @@ local uuid_frombin = function(bin, byteorder) end local uuid_isnil = function(uu) + if not ffi.istype(uuid_t, uu) then + return error('Usage: uuid:isnil()') + end return builtin.tt_uuid_is_nil(uu) end @@ -92,6 +101,9 @@ local uuid_eq = function(lhs, rhs) if not ffi.istype(uuid_t, rhs) then return false end + if not ffi.istype(uuid_t, lhs) then + return error('Usage: uuid == var') + end return builtin.tt_uuid_is_equal(lhs, rhs) end diff --git a/test/box/uuid.result b/test/box/uuid.result index eb5fba13da12238466bf9c828d3d4984bb90b9ea..0713614c68788e6049cb87b8989ed3f18d6c918e 100644 --- a/test/box/uuid.result +++ b/test/box/uuid.result @@ -106,7 +106,7 @@ uu.node[5] -- invalid values uuid.fromstr(nil) --- -- error: 'builtin/uuid.lua:44: fromstr(str)' +- error: 'builtin/uuid.lua:47: fromstr(str)' ... uuid.fromstr('') --- @@ -244,6 +244,27 @@ uu == "blablabla" --- - false ... +-- +-- invalid usage +-- +uu = uuid.new() +--- +... +uu.isnil() +--- +- error: 'Usage: uuid:isnil()' +... +uu.bin() +--- +- error: 'Usage: uuid:bin([byteorder])' +... +uu.str() +--- +- error: 'Usage: uuid:str()' +... +uu = nil +--- +... uuid = nil --- ... diff --git a/test/box/uuid.test.lua b/test/box/uuid.test.lua index c1c0a8bd9552270114b0687ea19796e68e2534a9..ecb0cc3feb11caa36bc90806329f27706536f18b 100644 --- a/test/box/uuid.test.lua +++ b/test/box/uuid.test.lua @@ -85,4 +85,14 @@ uu == nil uu == 12345 uu == "blablabla" +-- +-- invalid usage +-- + +uu = uuid.new() +uu.isnil() +uu.bin() +uu.str() + +uu = nil uuid = nil