Add task spawn tests
This commit is contained in:
parent
cdfb2522ac
commit
0839e7ce9a
56
crates/lb/tests/task.lua
Normal file
56
crates/lb/tests/task.lua
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
local ok, task = pcall(require, "lb:task")
|
||||||
|
if not ok then return end
|
||||||
|
|
||||||
|
describe("spawn", function()
|
||||||
|
test("callback receives args", function()
|
||||||
|
spawn(function(...)
|
||||||
|
assert(select("#", ...) == 0)
|
||||||
|
end):await()
|
||||||
|
|
||||||
|
spawn(function(...)
|
||||||
|
assert(select("#", ...) == 1)
|
||||||
|
assert((...) == nil)
|
||||||
|
end, nil):await()
|
||||||
|
|
||||||
|
spawn(function(...)
|
||||||
|
assert(select("#", ...) == 4)
|
||||||
|
local args = table.pack(...)
|
||||||
|
assert(args[1] == 1 and args[2] == 2 and args[3] == nil and args[4] == 3)
|
||||||
|
end, 1, 2, nil, 3):await()
|
||||||
|
end)
|
||||||
|
|
||||||
|
test("await returns callback results", function()
|
||||||
|
local res = table.pack(task
|
||||||
|
:spawn(function()
|
||||||
|
-- no returns
|
||||||
|
end)
|
||||||
|
:await())
|
||||||
|
assert(res.n == 0)
|
||||||
|
|
||||||
|
local res = table.pack(task
|
||||||
|
:spawn(function()
|
||||||
|
return nil
|
||||||
|
end)
|
||||||
|
:await())
|
||||||
|
assert(res.n == 1 and res[1] == nil)
|
||||||
|
|
||||||
|
local res = table.pack(task
|
||||||
|
:spawn(function()
|
||||||
|
return 1, 2, nil, 3
|
||||||
|
end)
|
||||||
|
:await())
|
||||||
|
assert(res.n == 4 and res[1] == 1 and res[2] == 2 and res[3] == nil and res[4] == 3)
|
||||||
|
end)
|
||||||
|
|
||||||
|
test("callback args and results", function()
|
||||||
|
local res = table.pack(task
|
||||||
|
:spawn(function(...)
|
||||||
|
assert(select("#", ...) == 5)
|
||||||
|
local args = table.pack(...)
|
||||||
|
assert(args[1] == 5 and args[2] == 4 and args[3] == nil and args[4] == 3, args[5] == nil)
|
||||||
|
return 1, 3, nil
|
||||||
|
end, 5, 4, nil, 3, nil)
|
||||||
|
:await())
|
||||||
|
assert(res.n == 3 and res[1] == 1 and res[2] == 3 and res[3] == nil)
|
||||||
|
end)
|
||||||
|
end)
|
Loading…
x
Reference in New Issue
Block a user