singe/thirdparty/librs232/bindings/lua/test/test_gc.lua
2023-10-23 19:38:18 -05:00

55 lines
1 KiB
Lua

local port_name = arg[1] or CONTROL_PORT or '\\\\.\\CNCB1'
local rs232 = require("rs232.core")
local ERRORS = {}
for k, v in pairs(rs232) do
if string.find(k, 'RS232_ERR_') then
ERRORS[v] = k
end
end
local function error_name(no)
return ERRORS[no] or tostring(no)
end
local function errf(no)
return string.format('error: %s', error_name(no))
end
local function gc()
for i = 1, 10 do
collectgarbage('collect')
end
end
do
local e, p1 = rs232.open(port_name)
assert(e == rs232.RS232_ERR_NOERROR, errf(e))
assert(p1 ~= nil, errf(e))
local e, p2 = rs232.open(port_name)
if p2 and e == rs232.RS232_ERR_NOERROR then
print('[SKIP] there no way to detect ether port is still opened')
return gc()
end
assert(p2 == nil, errf(e))
assert(e == rs232.RS232_ERR_OPEN, errf(e))
end
gc()
local e, p1 = rs232.open(port_name)
assert(e == rs232.RS232_ERR_NOERROR, errf(e))
assert(p1 ~= nil, errf(e))
p1:close()
local e, p1 = rs232.open(port_name)
assert(e == rs232.RS232_ERR_NOERROR, errf(e))
assert(p1 ~= nil, errf(e))
p1:close()