aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/fibonacci.lua9
-rw-r--r--tests/package.lua20
-rw-r--r--tests/pingpong.lua31
-rw-r--r--tests/timer.lua5
4 files changed, 60 insertions, 5 deletions
diff --git a/tests/fibonacci.lua b/tests/fibonacci.lua
index 48cd8d7..a5e0b2a 100644
--- a/tests/fibonacci.lua
+++ b/tests/fibonacci.lua
@@ -28,6 +28,7 @@ local KNOWN= { [0]=0, 1,1,2,3,5,8,13,21,34,55,89,144 }
28-- uint= fib( n_uint ) 28-- uint= fib( n_uint )
29-- 29--
30local function fib( n ) 30local function fib( n )
31 --local lanes = require"lanes".configure()
31 -- 32 --
32 local sum 33 local sum
33 local floor= assert(math.floor) 34 local floor= assert(math.floor)
@@ -39,9 +40,11 @@ local function fib( n )
39 else 40 else
40 -- Splits into two; this task remains waiting for the results 41 -- Splits into two; this task remains waiting for the results
41 -- 42 --
42 -- note that lanes is pulled in as upvalue, so we need package library to require internals properly 43 -- note that lanes is pulled in by upvalue, so we need lanes.core to be available
43 -- (because lua51-lanes is always required internally if possible, which is necessary in that case) 44 -- the other solution is to require "lanes" from inside the lane body, as in:
44 local gen_f= lanes.gen( "*", fib ) 45 -- local lanes = require"lanes".configure()
46 -- local gen_f= lanes.gen( "*", fib)
47 local gen_f= lanes.gen( "*", {required={"lanes.core"}}, fib)
45 48
46 local n1=floor(n/2) +1 49 local n1=floor(n/2) +1
47 local n2=floor(n/2) -1 + n%2 50 local n2=floor(n/2) -1 + n%2
diff --git a/tests/package.lua b/tests/package.lua
new file mode 100644
index 0000000..7c72d35
--- /dev/null
+++ b/tests/package.lua
@@ -0,0 +1,20 @@
1assert(nil == package.loaders[5])
2
3local configure_loaders = function()
4 table.insert(package.loaders, 4, function() end)
5 assert(package.loaders[1])
6 assert(package.loaders[2])
7 assert(package.loaders[3])
8 assert(package.loaders[4])
9 assert(package.loaders[5])
10 print "loaders configured!"
11end
12
13configure_loaders()
14
15for k,v in pairs(package.loaders) do
16 print( k, type(v))
17end
18
19lanes = require "lanes"
20lanes.configure{with_timers=false, on_state_create = configure_loaders} \ No newline at end of file
diff --git a/tests/pingpong.lua b/tests/pingpong.lua
new file mode 100644
index 0000000..30cd360
--- /dev/null
+++ b/tests/pingpong.lua
@@ -0,0 +1,31 @@
1local lanes = require 'lanes'.configure()
2local q = lanes.linda()
3
4local pingpong = function(name, qr, qs, start)
5 print("start " .. name, qr, qs, start)
6 local count = 0
7 if start then
8 print(name .. ": sending " .. qs .. " 0")
9 q:send(qs, 0)
10 end
11 while count < 10 do
12 print(name .. ": receiving " .. qr)
13 local key, val = q:receive(qr)
14 if val == nil then
15 print(name .. ": timeout")
16 break
17 end
18 print(name .. ":" .. val)
19 val = val + 1
20 print(name .. ": sending " .. qs .. " " .. tostring(val + 1))
21 q:send(qs, val)
22 count = count + 1
23 end
24end
25
26-- pingpong("L1", '0', '1', true)
27local t1, err1 = lanes.gen("*", pingpong)("L1", 'a', 'b', true)
28local t2, err2 = lanes.gen("*", pingpong)("L2", 'b', 'a', false)
29
30t1:join()
31t2:join() \ No newline at end of file
diff --git a/tests/timer.lua b/tests/timer.lua
index 953e4ed..805d85c 100644
--- a/tests/timer.lua
+++ b/tests/timer.lua
@@ -8,8 +8,7 @@
8io.stderr:setvbuf "no" 8io.stderr:setvbuf "no"
9 9
10 10
11local lanes = require "lanes" 11local lanes = require "lanes".configure()
12lanes.configure()
13 12
14local linda= lanes.linda() 13local linda= lanes.linda()
15 14
@@ -101,3 +100,5 @@ PRINT "...making sure no ticks are coming..."
101local k,v= linda:receive( 10, T1,T2 ) -- should not get any 100local k,v= linda:receive( 10, T1,T2 ) -- should not get any
102assert(v==nil) 101assert(v==nil)
103 102
103lanes.timer_lane:cancel()
104print (lanes.timer_lane[1], lanes.timer_lane[2]) \ No newline at end of file