Lua-cURLv3/test/test_multi_callback.lua

117 lines
2.1 KiB
Lua

local curl = require "lcurl"
local called, active_coroutine = 0
-- for Lua 5.1 compat
local function co_running()
local co, main = coroutine.running()
if main == true then return nil end
return co
end
function on_timer()
called = called + 1
-- use `os.exit` because now Lua-cURL did not propogate error from callback
if co_running() ~= active_coroutine then os.exit(-1) end
end
local function test_1()
io.write('Test #1 - ')
called, active_coroutine = 0
local e = curl.easy()
local m = curl.multi{ timerfunction = on_timer }
active_coroutine = coroutine.create(function()
m:add_handle(e)
end)
coroutine.resume(active_coroutine)
assert(called == 1)
active_coroutine = nil
m:remove_handle(e)
assert(called == 2)
io.write('pass!\n')
end
local function test_2()
io.write('Test #2 - ')
called, active_coroutine = 0
local e = curl.easy()
local m = curl.multi{ timerfunction = on_timer }
active_coroutine = coroutine.create(function()
m:add_handle(e)
end)
coroutine.resume(active_coroutine)
assert(called == 1)
active_coroutine = coroutine.create(function()
m:remove_handle(e)
end)
coroutine.resume(active_coroutine)
assert(called == 2)
io.write('pass!\n')
end
local function test_3()
io.write('Test #3 - ')
called, active_coroutine = 0
local e = curl.easy()
local m = curl.multi{ timerfunction = on_timer }
active_coroutine = coroutine.create(function()
m:add_handle(e)
end)
coroutine.resume(active_coroutine)
assert(called == 1)
active_coroutine = nil
e:close()
assert(called == 2)
io.write('pass!\n')
end
local function test_4()
io.write('Test #4 - ')
called, active_coroutine = 0
local e = curl.easy()
local m = curl.multi{ timerfunction = on_timer }
active_coroutine = coroutine.create(function()
m:add_handle(e)
end)
coroutine.resume(active_coroutine)
assert(called == 1)
active_coroutine = coroutine.create(function()
e:close()
end)
coroutine.resume(active_coroutine)
assert(called == 2)
io.write('pass!\n')
end
test_1()
test_2()
test_3()
test_4()