88 lines
2.2 KiB
Lua
88 lines
2.2 KiB
Lua
require "bootstrap-tests"
|
|
|
|
test.shared_table.tear_down = default_tear_down
|
|
|
|
test.shared_table.pairs = function ()
|
|
local share = effil.table()
|
|
local data = { 0, 0, 0, ["key1"] = 0, ["key2"] = 0, ["key3"] = 0 }
|
|
|
|
for k, _ in pairs(data) do
|
|
share[k] = k .. "-value"
|
|
end
|
|
|
|
for k,v in pairs(share) do
|
|
test.equal(data[k], 0)
|
|
data[k] = 1
|
|
test.equal(v, k .. "-value")
|
|
end
|
|
|
|
for k,v in pairs(data) do
|
|
test.equal(v, 1)
|
|
end
|
|
|
|
for k,v in ipairs(share) do
|
|
test.equal(data[k], 1)
|
|
data[k] = 2
|
|
test.equal(v, k .. "-value")
|
|
end
|
|
|
|
for k,v in ipairs(data) do
|
|
test.equal(v, 2)
|
|
end
|
|
end
|
|
|
|
test.shared_table.length = function ()
|
|
local share = effil.table()
|
|
share[1] = 10
|
|
share[2] = 20
|
|
share[3] = 30
|
|
share[4] = 40
|
|
share["str"] = 50
|
|
test.equal(#share, 4)
|
|
share[3] = nil
|
|
test.equal(#share, 2)
|
|
share[1] = nil
|
|
test.equal(#share, 0)
|
|
end
|
|
|
|
test.shared_table.size = function ()
|
|
local share = effil.table()
|
|
test.equal(effil.size(share), 0)
|
|
share[1] = 10
|
|
test.equal(effil.size(share), 1)
|
|
share[2] = "value1"
|
|
share["key1"] = function() end
|
|
test.equal(effil.size(share), 3)
|
|
share[2] = nil
|
|
test.equal(effil.size(share), 2)
|
|
end
|
|
|
|
test.shared_table.user_data_classification = function ()
|
|
local share = effil.table()
|
|
share.thread = effil.thread(function(a, b) return a + b end)(19, 33)
|
|
share.sub_table = effil.table()
|
|
share.sub_table.some_key = "some_value"
|
|
|
|
local result = share.thread:get()
|
|
test.equal(result, 52)
|
|
test.equal(share.sub_table.some_key, "some_value")
|
|
end
|
|
|
|
test.shared_table.global = function ()
|
|
test.not_equal(effil.G, nil)
|
|
effil.G.test_key = "test_value"
|
|
local thr = effil.thread(function()
|
|
local effil = require "effil"
|
|
if effil.G == nil or effil.G.test_key ~= "test_value" then
|
|
error("Invalid value of global table: " .. tostring(effil.G and effil.G.test_key or nil))
|
|
end
|
|
effil.G.test_key = "checked"
|
|
end)()
|
|
local status, err = thr:wait()
|
|
if status == "failed" then
|
|
print("Thread failed with message: " .. err)
|
|
end
|
|
test.equal(status, "completed")
|
|
test.equal(effil.G.test_key, "checked")
|
|
end
|