diff options
| author | Alexey Melnichuk <alexeymelnichuck@gmail.com> | 2018-08-27 20:24:22 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-27 20:24:22 +0300 |
| commit | 00ca97711b657c7d395d91212364a82dac1d4625 (patch) | |
| tree | 07d166e87c2f294a0864501756e48d3c313309bb /test/test_interrupt.lua | |
| parent | e33999a890c8bfdb0c1f753820e4261dabb67faa (diff) | |
| parent | cd91518d79388d5d42820a2b48918a7bf1e6d1a2 (diff) | |
| download | lua-llthreads2-00ca97711b657c7d395d91212364a82dac1d4625.tar.gz lua-llthreads2-00ca97711b657c7d395d91212364a82dac1d4625.tar.bz2 lua-llthreads2-00ca97711b657c7d395d91212364a82dac1d4625.zip | |
Merge pull request #16 from osch/master
new method thread:interrupt()
Diffstat (limited to 'test/test_interrupt.lua')
| -rw-r--r-- | test/test_interrupt.lua | 58 |
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 @@ | |||
| 1 | local llthreads = require"llthreads" | ||
| 2 | local utils = require "utils" | ||
| 3 | local sleep = utils.sleep | ||
| 4 | |||
| 5 | local include = utils.thread_init .. [[ | ||
| 6 | local llthreads = require"llthreads" | ||
| 7 | local sleep = require "utils".sleep | ||
| 8 | ]] | ||
| 9 | |||
| 10 | do | ||
| 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!") | ||
| 23 | end | ||
| 24 | |||
| 25 | |||
| 26 | do | ||
| 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!") | ||
| 41 | end | ||
| 42 | |||
| 43 | do | ||
| 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!") | ||
| 57 | end | ||
| 58 | |||
