aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Melnichuk <mimir@newmail.ru>2015-04-03 16:50:42 +0400
committerAlexey Melnichuk <mimir@newmail.ru>2015-04-03 16:50:42 +0400
commit75a319a5e7d251bc18994fad56749017f8fac993 (patch)
treef005968dcba8488200036db18963e088db67c5c2
parent0b5ddda597e3cab29d04918319b52673695ee2d2 (diff)
downloadlua-llthreads2-75a319a5e7d251bc18994fad56749017f8fac993.tar.gz
lua-llthreads2-75a319a5e7d251bc18994fad56749017f8fac993.tar.bz2
lua-llthreads2-75a319a5e7d251bc18994fad56749017f8fac993.zip
Add. Test for multiple prelude.
-rw-r--r--.travis.yml1
-rw-r--r--lakefile1
-rw-r--r--test/test_threads_ex_opt_2.lua38
3 files changed, 40 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml
index 6b389e4..779b236 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -37,6 +37,7 @@ script:
37 - lua test_threads_ex.lua 10 37 - lua test_threads_ex.lua 10
38 - lua test_threads_ex_arg.lua 38 - lua test_threads_ex_arg.lua
39 - lua test_threads_ex_opt.lua 39 - lua test_threads_ex_opt.lua
40 - lua test_threads_ex_opt_2.lua
40 - lua test_threads_attr.lua 41 - lua test_threads_attr.lua
41 # - lua$LUA_SFX test_register_llthreads.lua 42 # - lua$LUA_SFX test_register_llthreads.lua
42 43
diff --git a/lakefile b/lakefile
index 960dd77..fab4646 100644
--- a/lakefile
+++ b/lakefile
@@ -42,6 +42,7 @@ target('test', install, function()
42 run_test('test_threads_ex.lua 10') 42 run_test('test_threads_ex.lua 10')
43 run_test('test_threads_ex_arg.lua') 43 run_test('test_threads_ex_arg.lua')
44 run_test('test_threads_ex_opt.lua') 44 run_test('test_threads_ex_opt.lua')
45 run_test('test_threads_ex_opt_2.lua')
45 run_test('test_threads_attr.lua') 46 run_test('test_threads_attr.lua')
46 47
47 48
diff --git a/test/test_threads_ex_opt_2.lua b/test/test_threads_ex_opt_2.lua
new file mode 100644
index 0000000..b01eda5
--- /dev/null
+++ b/test/test_threads_ex_opt_2.lua
@@ -0,0 +1,38 @@
1local thread_code = function(...)
2 local function assert_equal(name, a, b, ...)
3 if a == b then return b, ... end
4 print(name .. " Fail! Expected `" .. tostring(a) .. "` got `" .. tostring(b) .. "`")
5 os.exit(1)
6 end
7
8 local a,b,c,d = ...
9 assert_equal("1:", 1, a )
10 assert_equal("2:", 2, b )
11 assert_equal("3:", 3, c )
12 assert_equal("4:", 4, d )
13 assert_equal("#:", 4, select("#", ...))
14end
15
16local llthreads = require"llthreads.ex"
17
18local prelude1 = function(...) return 1, ... end
19
20local prelude2 = function(...) return 2, ... end
21
22local prelude = string.format([[
23 local loadstring = loadstring or load
24 local prelude1 = loadstring(%q)
25 local prelude2 = loadstring(%q)
26 return prelude1(prelude2(...))
27]], string.dump(prelude1), string.dump(prelude2))
28
29-- pass `prelude` function that change thread arguments
30local thread = llthreads.new({thread_code, prelude = prelude}, 3, 4)
31
32local a = assert(thread:start())
33
34assert(thread:join())
35
36assert(a == thread)
37
38print("done!")