From e09400b21d004b174d1a6e07ed4a98c5648a2ab8 Mon Sep 17 00:00:00 2001 From: osch Date: Wed, 22 Aug 2018 09:29:19 +0200 Subject: test_interrupt.lua --- appveyor.yml | 1 + lakefile | 1 + test/test_interrupt.lua | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 test/test_interrupt.lua diff --git a/appveyor.yml b/appveyor.yml index db2206e..46a3235 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -72,6 +72,7 @@ test_script: - lua test_threads_ex_opt_2.lua - lua test_threads_attr.lua - lua test_integer.lua + - lua test_interrupt.lua # - lua test_register_llthreads.lua after_test: diff --git a/lakefile b/lakefile index fab4646..af9661e 100644 --- a/lakefile +++ b/lakefile @@ -44,6 +44,7 @@ target('test', install, function() run_test('test_threads_ex_opt.lua') run_test('test_threads_ex_opt_2.lua') run_test('test_threads_attr.lua') + run_test('test_interrupt.lua') if not test_summary() then diff --git a/test/test_interrupt.lua b/test/test_interrupt.lua new file mode 100644 index 0000000..6a7a255 --- /dev/null +++ b/test/test_interrupt.lua @@ -0,0 +1,58 @@ +local llthreads = require"llthreads" +local utils = require "utils" +local sleep = utils.sleep + +local include = utils.thread_init .. [[ +local llthreads = require"llthreads" +local sleep = require "utils".sleep +]] + +do + local thread = llthreads.new(include .. [[ + for i = 1, 10 do sleep(1) end + ]]) + + thread:start() + sleep(1) + thread:interrupt() + + local ok, err = thread:join() + print("thread1:join(): ", ok, err) + assert(ok == false and err:match("interrupted!"), "thread1 result") + print("--- Done interrupt1!") +end + + +do + local thread = llthreads.new(include .. [[ + local ok, err = pcall(function() for i = 1, 10 do sleep(1) end end) + print("thread2:", ok, err) + assert(ok == false and err:match("interrupted!"), "interrupt2 result") + ]]) + + thread:start() + sleep(1) + thread:interrupt() + + local ok, err = thread:join() + print("thread2:join(): ", ok, err) + assert(ok, "thread2 result") + print("--- Done interrupt2!") +end + +do + local thread = llthreads.new(include .. [[ + local ok, err = pcall(function() for i = 1, 10 do sleep(1) end end) + print("thread3:", ok, err) + ]]) + + thread:start() + sleep(1) + thread:interrupt(true) + + local ok, err = thread:join() + print("thread3:join(): ", ok, err) + assert(ok == false and err:match("interrupted!"), "thread3 result") + print("--- Done interrupt3!") +end + -- cgit v1.2.3-55-g6feb