From eabe25e8a4de6a2238559330909401e5be31998d Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sat, 27 Sep 2008 19:18:05 +0100 Subject: Adding initial unit testing scripts --- tests/test.lua | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/test_util_jid.lua | 13 ++++++++++ 2 files changed, 77 insertions(+) create mode 100644 tests/test.lua create mode 100644 tests/test_util_jid.lua diff --git a/tests/test.lua b/tests/test.lua new file mode 100644 index 00000000..108dd9a4 --- /dev/null +++ b/tests/test.lua @@ -0,0 +1,64 @@ + +local verbosity = tonumber(arg[1]) or 2; + +function assert_equal(a, b) + if not (a == b) then + error(getfenv(2).__unit.."assert_equal failed: "..tostring(a).." ~= "..tostring(b), 2); + elseif verbosity >= 4 then + print("assert_equal succeeded: "..tostring(a).." == "..tostring(b)); + end +end + +function dotest(unitname) + local tests = setmetatable({}, { __index = _G }); + tests.__unit = unitname; + local chunk, err = loadfile("test_"..unitname:gsub("%.", "_")..".lua"); + if not chunk then + print("WARNING: ", "Failed to load tests for "..unitname, err); + return; + end + + setfenv(chunk, tests); + local success, err = pcall(chunk); + if not success then + print("WARNING: ", "Failed to initialise tests for "..unitname, err); + return; + end + + local unit = setmetatable({}, { __index = setmetatable({ module = function () end }, { __index = _G }) }); + + local chunk, err = loadfile("../"..unitname:gsub("%.", "/")..".lua"); + if not chunk then + print("WARNING: ", "Failed to load module: "..unitname, err); + return; + end + + setfenv(chunk, unit); + local success, err = pcall(chunk); + if not success then + print("WARNING: ", "Failed to initialise module: "..unitname, err); + return; + end + + for name, f in pairs(unit) do + if type(f) ~= "function" then + if verbosity >= 3 then + print("INFO: ", "Skipping "..unitname.."."..name.." because it is not a function"); + end + elseif type(tests[name]) ~= "function" then + if verbosity >= 1 then + print("WARNING: ", unitname.."."..name.." has no test!"); + end + else + local success, ret = pcall(tests[name], f, unit); + if not success then + print("TEST FAILED: ", unitname, name, ret); + elseif verbosity >= 2 then + print("TEST SUCCEEDED: ", unitname, name); + end + end + end +end + +dotest "util.jid" + diff --git a/tests/test_util_jid.lua b/tests/test_util_jid.lua new file mode 100644 index 00000000..3be0bfa1 --- /dev/null +++ b/tests/test_util_jid.lua @@ -0,0 +1,13 @@ + +function split(split) + function test(jid, node, server, resource) + local rnode, rserver, rresource = split(jid); + assert_equal(node, rnode, "split("..jid..") failed"); + assert_equal(server, rserver, "split("..jid..") failed"); + assert_equal(resource, rresource, "split("..jid..") failed"); + end + test("node@server", "node", "server", nil ); + test("node@server/resource", "node", "server", "resource" ); + test("server", nil, "server", nil ); + test("server/resource", nil, "server", "resource" ); +end -- cgit v1.2.3