Модуль:Sandbox/Dts/testcases
< Модуль:Sandbox | Dts
Документація модуля[перегляд] [редагувати] [історія] [очистити кеш]
Документація вище включена з Модуль:Sandbox/Dts/testcases/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього шаблону. Будь ласка, додавайте категорії до підсторінки /Dts/testcases/документація. Підсторінки цієї сторінки. |
local p = require('Модуль:UnitTests')
function char_difference(s1, s2)
if s1 == s2 then return '' end
local max = math.min(#s1, #s2)
for i = 1, max do
if s1:sub(i,i) ~= s2:sub(i,i) then return i end
end
return max + 1
end
function first_difference(expected, actuall)
local list_s1 = mw.text.split(mw.text.decode(expected, true),"%s")
local list_s2 = mw.text.split(mw.text.decode(actuall, true),"%s")
for i, s1val in pairs(list_s1) do
s2val = list_s2[i]
if (not s2val) then
return "missing: " .. s1val
end
if (s1val ~= s2val) then
local chardiff = char_difference(s2val, s1val);
local retval = "value:\n <nowiki>" .. s2val .. "</nowiki>\nshould be:\n <nowiki>" .. s1val .. "</nowiki>"
-- adding ascii of expected/recieved where they differ:
-- retval = retval .. "\n" .. chardiff .. ".." .. (chardiff + 10) .. ":\nrecieved: "
-- for _, val in pairs({string.byte(s2val, chardiff, chardiff + 10)}) do
-- retval = retval .. val .. ", "
-- end
-- retval = retval .. "\nexpected: "
-- for _, val in pairs({string.byte(s1val, chardiff, chardiff + 10)}) do
-- retval = retval .. val .. ", "
-- end
return retval
end
end
if table.getn(list_s2) > table.getn(list_s1) then
return "extra value: " .. list_s2[table.getn(list_s1)]
end
return "o.k"
end
function p:test_initial()
p:preprocess_equals_preprocess_many('{{#invoke:Sandbox/Dts|dts|', '}}', '{{dts|', '}}', {
{'2001'},
{'|1|1'},
{'-50|July'},
{'-1000|July|4'},
{'5|July|4|BC'},
{'40|July|4|BC'},
{'1|July|4|BC'},
{'88|July|4'},
{'2007|7|11'},
{'2001|sep|11'},
})
end
function p:test_dmy()
p:preprocess_equals_preprocess_many('{{#invoke:Sandbox/Dts|dts|', '}}', '{{dts|', '}}', {
{'format=dmy|2001'},
{'format=dmy||1|1'},
{'format=dmy|-50|July'},
{'format=dmy|July'},
{'format=dmy||July'},
{'format=dmy|-1000|July|4'},
{'format=dmy|5|July|4|BC'},
{'format=dmy|40|July|4|BC'},
{'format=dmy|1|July|4|BC'},
{'format=dmy|88|July|4'},
{'format=dmy|2007|7|11'},
{'format=dmy|2001|sep|11'},
})
end
function p:test_single_arg()
p:preprocess_equals_preprocess_many('{{#invoke:Sandbox/Dts|dts|', '}}', '{{dts|', '}}', {
{'2001'},
{'1 January'},
{'July 19'},
{'July 1923'},
{'10 July 1994'},
{'July 4, 1555'},
{'24 Sep 2004'},
{'format=mdy|1 July 1893'},
{'format=dmy|July 4, 1688'},
{'format=dmy|2007-7-11'},
{'2001-11-11'}
})
end
function p.printTable(tbl)
local retval = ""
for key, val in pairs(tbl) do
if type(val) == "table" then
retval = retval .. tostring(key) .. "={" .. p.printTable(val) .."},"
else
retval = retval .. tostring(key) .. "=".. tostring(val) ..","
end
end
return retval
end
function p.printargs(frame)
local args=require('Модуль:Arguments').getArgs(frame)
return p.printTable(args)
end
return p