1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
local require_lanes_result_1, require_lanes_result_2 = require "lanes".configure(config).configure()
print("require_lanes_result:", require_lanes_result_1, require_lanes_result_2)
local lanes = require_lanes_result_1
local require_assert_result_1, require_assert_result_2 = require "_assert"
print("require_assert_result:", require_assert_result_1, require_assert_result_2)
local utils = lanes.require "_utils"
local PRINT = utils.MAKE_PRINT()
local lanes_gen = assert(lanes.gen)
local lanes_linda = assert(lanes.linda)
-- ##################################################################################################
-- ##################################################################################################
-- ##################################################################################################
local gc_cb = function(name_, status_)
PRINT(" ---> lane '" .. name_ .. "' collected with status '" .. status_ .. "'")
end
PRINT("---=== Tasking (error) ===---", "\n\n")
-- a lane that throws immediately the error value it received
local g = lanes_gen("", {gc_cb = gc_cb}, error)
local errmsg = "ERROR!"
if true then
-- if you index an errored lane, it should throw the error again
local lane = g(errmsg)
assert.fails(function() return lane[1] end)
assert(lane.status == "error")
-- even after indexing, joining a lane in error should give nil,<error>
local a,b = lane:join()
assert(a == nil and string.find(b, errmsg))
end
if true then
local lane = g(errmsg)
-- after indexing, joining a lane in error should give nil,<error>
local a, b = lane:join()
assert(lane.status == "error")
assert(a == nil and string.find(b, errmsg))
-- even after joining, indexing should raise an error
assert.fails(function() return lane[1] end)
-- unless we index with a negative value to get the error message
local c = lane[-1]
assert(c == b)
end
|