aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/tests.lua44
-rw-r--r--tests/units/thread-buffer.lua21
-rw-r--r--tests/units/thread-local-return.lua13
-rw-r--r--tests/units/thread-locals.lua12
-rw-r--r--tests/units/thread-nested.lua22
5 files changed, 112 insertions, 0 deletions
diff --git a/tests/tests.lua b/tests/tests.lua
new file mode 100644
index 0000000..b4110d4
--- /dev/null
+++ b/tests/tests.lua
@@ -0,0 +1,44 @@
+llby = require("lullaby")
+
+local failed = {}
+local total = 0
+
+function yay(M)
+ print(string.format("\27[32m%s\27[0m passed", M))
+end
+
+function nay(M)
+ print(string.format("\27[31m%s\27[0m failed", M))
+end
+
+local search = ""
+if arg[1] ~= nil then
+ search = "*" .. arg[1] .. "*"
+end
+
+local handle = assert(io.popen("find tests/units/".. search .." -type f"))
+
+for file in handle:lines() do
+ total = total + 1
+ local f = loadfile(file)()
+
+ if f == true then
+ yay(file)
+ else
+ nay(file)
+ table.insert(failed, file)
+ end
+end
+
+if #failed > 0 then
+ print("\n--- failed units (".. #failed .."/".. total ..") ---")
+ for _,fail in ipairs(failed) do
+ nay(fail)
+ end
+ print("--- failed units (".. #failed .."/".. total ..") ---")
+else
+ print("passed all (".. total ..")")
+end
+
+handle:close()
+
diff --git a/tests/units/thread-buffer.lua b/tests/units/thread-buffer.lua
new file mode 100644
index 0000000..e83ad4a
--- /dev/null
+++ b/tests/units/thread-buffer.lua
@@ -0,0 +1,21 @@
+local h1 = llby.thread.buffer(llby.crypto.md5())
+local h2 = llby.thread.buffer(llby.crypto.sha256())
+local h3 = llby.thread.buffer(llby.crypto.sha1())
+
+local tthread = llby.thread.async(function(res)
+ h1:set(h1:get():update("mrrp"))
+ h2:set(h2:get():update("mrrp"))
+
+ h3:mod(function(M)
+ return M:update("mrrp")
+ end)
+
+ res(h1:get(), h2:get(), h3:get())
+end)
+
+local h4, h5, h6 = tthread:await()
+
+return h1:get():final() == h4:final() and h2:get():final() == h5:final() and h3:get():final() == h6:final()
+ and h4:final() == "be40416e1491ae73fee43a0cf01132fa"
+ and h5:final() == "a4ba2864e6dcc988c6df73cdfbee6d308e39174dd86dddc4e328c4f2df1c48e9"
+ and h6:final() == "7bf0ffbd68005c35faa12f5ba6df54288969220c"
diff --git a/tests/units/thread-local-return.lua b/tests/units/thread-local-return.lua
new file mode 100644
index 0000000..cc6c417
--- /dev/null
+++ b/tests/units/thread-local-return.lua
@@ -0,0 +1,13 @@
+local a = 224
+
+local thread = llby.thread.async(function(res)
+ local b = 948
+
+ res(function(c)
+ return a * b * c
+ end)
+end)
+
+local fun = thread:await()
+
+return fun(448) == 224 * 948 * 448
diff --git a/tests/units/thread-locals.lua b/tests/units/thread-locals.lua
new file mode 100644
index 0000000..6f328f2
--- /dev/null
+++ b/tests/units/thread-locals.lua
@@ -0,0 +1,12 @@
+local lvar = 224400
+_G.gvar = 33220
+
+function lfun(a, b)
+ return (a + lvar) * (b + gvar)
+end
+
+local thread = llby.thread.async(function(res)
+ res(lfun(lvar, gvar))
+end)
+
+return thread:await() == lfun(lvar, gvar)
diff --git a/tests/units/thread-nested.lua b/tests/units/thread-nested.lua
new file mode 100644
index 0000000..e0227c6
--- /dev/null
+++ b/tests/units/thread-nested.lua
@@ -0,0 +1,22 @@
+local mutex = llby.thread.mutex()
+mutex:lock()
+
+local t1 = llby.thread.async(function(res)
+
+ local t2 = llby.thread.async(function(res)
+
+ local t3 = llby.thread.async(function(res)
+ mutex:lock()
+
+ res(254)
+ end)
+
+
+ res(t3)
+ end)
+
+ res(t2)
+end)
+
+mutex:unlock()
+return t1:await():await():await() == 254