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