aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test_interrupt.lua58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/test_interrupt.lua b/test/test_interrupt.lua
new file mode 100644
index 0000000..22c168e
--- /dev/null
+++ b/test/test_interrupt.lua
@@ -0,0 +1,58 @@
1local llthreads = require"llthreads"
2local utils = require "utils"
3local sleep = utils.sleep
4
5local include = utils.thread_init .. [[
6local llthreads = require"llthreads"
7local sleep = require "utils".sleep
8]]
9
10do
11 local thread = llthreads.new(include .. [[
12 for i = 1, 10 do sleep(1) end
13 ]])
14
15 thread:start()
16 sleep(1)
17 thread:interrupt()
18
19 local ok, err = thread:join()
20 print("thread1:join(): ", ok, err)
21 assert(ok == false and err:match(llthreads.interrupted_error), "thread1 result")
22 print("--- Done interrupt1!")
23end
24
25
26do
27 local thread = llthreads.new(include .. [[
28 local ok, err = pcall(function() for i = 1, 10 do sleep(1) end end)
29 print("thread2:", ok, err)
30 assert(ok == false and err:match(llthreads.interrupted_error), "interrupt2 result")
31 ]])
32
33 thread:start()
34 sleep(1)
35 thread:interrupt()
36
37 local ok, err = thread:join()
38 print("thread2:join(): ", ok, err)
39 assert(ok, "thread2 result")
40 print("--- Done interrupt2!")
41end
42
43do
44 local thread = llthreads.new(include .. [[
45 local ok, err = pcall(function() for i = 1, 10 do sleep(1) end end)
46 print("thread3:", ok, err)
47 ]])
48
49 thread:start()
50 sleep(1)
51 thread:interrupt(true)
52
53 local ok, err = thread:join()
54 print("thread3:join(): ", ok, err)
55 assert(ok == false and err:match(llthreads.interrupted_error), "thread3 result")
56 print("--- Done interrupt3!")
57end
58