mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-30 16:09:32 +00:00
73 lines
2 KiB
Lua
73 lines
2 KiB
Lua
--
|
|
-- (C) 2017-20 - ntop.org
|
|
--
|
|
|
|
local dirs = ntop.getDirs()
|
|
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
|
|
require "lua_trace"
|
|
local unittest = {}
|
|
|
|
function unittest:runner(test_no, test_name, f)
|
|
return function(...)
|
|
-- for each function run by this runner, failed assertions are counted
|
|
-- so we start clean with a reset
|
|
self.failed_assertions = 0
|
|
|
|
local f_name = debug.getinfo(1, "n").name
|
|
local start = os.time()
|
|
local result = {f(...)}
|
|
local finish = os.time()
|
|
|
|
local result = table.unpack(result)
|
|
|
|
traceError(TRACE_NORMAL,TRACE_CONSOLE, string.format("[%s][test: %.2u][%s] executed in %i secs",
|
|
self.failed_assertions > 0 and "FAILED" or "OK",
|
|
test_no, test_name, finish - start))
|
|
|
|
return self.failed_assertions == 0
|
|
end
|
|
end
|
|
|
|
function unittest:new(options)
|
|
local obj = {
|
|
test_fns = {},
|
|
failed_assertions = 0,
|
|
-- add here other class members and possibly initialize them from the options
|
|
}
|
|
|
|
setmetatable(obj, self)
|
|
self.__index = self
|
|
|
|
return obj
|
|
end
|
|
|
|
function unittest:assertEqual(actual, expected, msg)
|
|
if actual ~= expected then
|
|
traceError(TRACE_ERROR, TRACE_CONSOLE,
|
|
string.format("Assertion failed [actual: %s][expected: %s][%s]", tostring(actual), tostring(expected), msg))
|
|
self.failed_assertions = self.failed_assertions + 1
|
|
return false
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
function unittest:appendTest(test_name, test_fn)
|
|
self.test_fns[#self.test_fns + 1] = {test_name = test_name, test_fn = test_fn}
|
|
end
|
|
|
|
function unittest:run()
|
|
local unittest_file = debug.getinfo(2).short_src
|
|
traceError(TRACE_NORMAL, TRACE_CONSOLE, string.format("Running unittest [%s]", unittest_file))
|
|
|
|
for test_no, test_fn in ipairs(self.test_fns) do
|
|
local test_name = test_fn["test_name"]
|
|
local test_fn = test_fn["test_fn"]
|
|
|
|
self:runner(test_no, test_name, test_fn)()
|
|
end
|
|
|
|
traceError(TRACE_NORMAL, TRACE_CONSOLE, string.format("Unittest done [%s]", unittest_file))
|
|
end
|
|
|
|
return unittest
|