پودمان:UnitTests: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
تصحیح نمایش اعداد و فعل جمع
احتمالاً برای به‌روزرسانی این پودمان از en:Module:UnitTests خیلی پیر شده‌ام ولی خب شاید دود هنوز از کنده بلند شود.
 
خط ۵:
local frame, tick, cross
local result_table_header = "{|class=\"wikitable\"\n! !! متن !! مورد انتظار !! در عمل"
 
local result_table = ''{ n = 0 }
local result_table_mt = {
insert = function (self, ...)
local n = self.n
for i = 1, select('#', ...) do
local val = select(i, ...)
if val ~= nil then
n = n + 1
self[n] = val
end
end
self.n = n
end,
insert_format = function (self, ...)
self:insert(string.format(...))
end,
concat = table.concat
}
result_table_mt.__index = result_table_mt
setmetatable(result_table, result_table_mt)
 
local num_failures = 0
 
سطر ۱۵ ⟵ ۳۶:
end
return max + 1
end
 
local function return_varargs(...)
return ...
end
 
سطر ۲۰ ⟵ ۴۵:
local actual = frame:preprocess(text)
if actual == expected then
result_table = result_table .. :insert('| ' .., tick)
else
result_table = result_table .. :insert('| ' .., cross)
num_failures = num_failures + 1
end
local maybe_nowiki = (options and options.nowiki) and mw.text.nowiki or function(...) return ... endreturn_varargs
local differs_at = self.differs_at and (' \n| ' .. first_difference(expected, actual)) or ''
result_table = result_table .. :insert(' \n| ' .., mw.text.nowiki(text) .., ' \n| ',
.. maybe_nowiki(expected) .., ' \n| ' .., maybe_nowiki(actual) .., differs_at,
.. "\n|-\n")
end
 
سطر ۳۹ ⟵ ۶۶:
local actual = frame:preprocess(text1)
local expected = frame:preprocess(text2)
if options and true == options.templatestyles then -- when module rendering has templatestyles strip markers, use ID from expected to prevent false test fail
local pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-)(%x+)(%-QINU[^\127]*\127)'; -- templatestyle stripmarker pattern
local _, stripmarker_id = expected:match (pattern); -- get templatestyles strip marker id from expected (the reference); ignore first capture in pattern
 
if stripmarker_id then
actual = actual:gsub (pattern, '%1'..stripmarker_id..'%3'); -- replace actual id with expected id; ignore second capture in pattern
end
end
-- option to ignore any strip marker when comparing actual to expected
if options and true == options.stripmarker then
local pattern = '(\127[^\127]*UNIQ%-%-%l+%-)(%x+)(%-QINU[^\127]*\127)';
local _, stripmarker_id = expected:match (pattern);
if stripmarker_id then
actual = actual:gsub (pattern, '%1'..stripmarker_id..'%3');
expected = expected:gsub (pattern, '%1'..stripmarker_id..'%3');
end
end
local highlight;
if actual == expected then
result_table = result_table .. :insert('| ' .., tick)
else
result_table = result_table .. :insert('| ' .., cross)
num_failures = num_failures + 1
highlight=true
end
local maybe_nowiki = (options and options.nowiki) and mw.text.nowiki or function(...) return ... endreturn_varargs
local differs_at = self.differs_at and (' \n| ' .. first_difference(expected, actual)) or ''
result_table = result_table .. :insert(' \n| ' .., mw.text.nowiki(text1) .., ' \n| ' .. maybe_nowiki(expected) .. ' \n| ' .. maybe_nowiki(actual) .. differs_at .. "\n|-\n",
maybe_nowiki(expected), highlight and ' \n|style="background: #fc0"| ' or ' \n| ', maybe_nowiki(actual), differs_at,
"\n|-\n")
end
 
سطر ۵۸ ⟵ ۱۰۸:
function UnitTester:equals(name, actual, expected, options)
if actual == expected then
result_table = result_table .. :insert('| ' .., tick)
else
result_table = result_table .. :insert('| ' .., cross)
num_failures = num_failures + 1
end
local maybe_nowiki = (options and options.nowiki) and mw.text.nowiki or function(...) return ... endreturn_varargs
local differs_at = self.differs_at and (' \n| ' .. first_difference(expected, actual)) or ''
local display = options and options.display or function(x) return x end
result_table = result_table .. :insert(' \n| ' .., name .., ' \n| ',
.. maybe_nowiki(tostring(display(expected))) .., ' \n| ',
.. maybe_nowiki(tostring(display(actual))) .., differs_at .., "\n|-\n")
end
 
سطر ۱۲۶ ⟵ ۱۷۸:
function UnitTester:equals_deep(name, actual, expected, options)
if deep_compare(actual, expected) then
result_table = result_table .. :insert('| ' .., tick)
else
result_table = result_table .. :insert('| ' .., cross)
num_failures = num_failures + 1
end
local maybe_nowiki = (options and options.nowiki) and mw.text.nowiki or function(...) return ... endreturn_varargs
local actual_str = val_to_str(actual)
local expected_str = val_to_str(expected)
local differs_at = self.differs_at and (' \n| ' .. first_difference(expected_str, actual_str)) or ''
result_table = result_table .. :insert(' \n| ' .., name .., ' \n| ' .., maybe_nowiki(expected_str),
.. ' \n| ' .., maybe_nowiki(actual_str) .., differs_at .., "\n|-\n")
end
 
function UnitTester:iterate(examples, func)
require 'libraryUtil'.checkType('iterate', 1, examples, 'table')
if type(func) == 'string' then
func = self[func]
elseif type(func) ~= 'function' then
error(("bad argument #2 to 'iterate' (expected function or string, got %s)")
:format(type(func)), 2)
end
for i, example in ipairs(examples) do
if type(example) == 'table' then
func(self, unpack(example))
elseif type(example) == 'string' then
self:heading(example)
else
error(('bad example #%d (expected table, got %s)')
:format(i, type(example)), 2)
end
end
end
 
function UnitTester:heading(text)
result_table:insert_format(' ! colspan="%u" style="text-align: right" | %s \n |- \n ',
self.columns, text)
end
 
سطر ۱۴۶ ⟵ ۲۲۵:
 
local table_header = result_table_header
self.columns = 4
if self.differs_at then
table_header = table_header .. ' !! متفاوت است در'
self.columns = self.columns + 1
end
 
سطر ۱۶۰ ⟵ ۲۴۱:
-- Add results to the results table.
for i,value in ipairs(self_sorted) do
result_table = result_table .. "'''" .. value .. "''':\n" .. insert_format(table_header .. "\n|-\n", value)
self[value](self)
result_table = result_table .. :insert("|}\n\n")
end
 
return (num_failures == 0 and "<b style=\"color:#008000\">همه آزمایش‌ها موفقیت‌آمیز بودند.</b>" or "<b style=\"color:#800000\">'''" .. converter.convert("fa",num_failures) .. " آزمایشِ شکست‌خورده داریم.</b>") .. "\n\n" .. frame:preprocess(result_table:concat())
end