Modul:DateTime/test
Erscheinungsbild
Vorlagenprogrammierung | Diskussionen | Lua | Test | Unterseiten | |||
Modul | Deutsch | English
|
Modul: | Dokumentation |
Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus
--[=[ 2014-01-28
Debug Module:DateTime
]=]
-- local globals
local DateTime = require( "Module:DateTime" )
DateTime = DateTime.DateTime
local Tests = { }
local Params = { "lang",
"bc",
"year",
"month",
"month2",
"dom",
"dom2",
"hour",
"hour2",
"min",
"sec",
"msec",
"zone" }
Tests.fetcher = function ( args )
-- Evaluate constructor function
-- Parameter:
-- args -- template parameters
-- 2 -- string to be interpreted, or empty
-- *** -- expected field values, k=v
-- Returns:
-- string
local r
local s = ( args[ 2 ] or "" )
local o = DateTime( s )
if s == "" then
r = "\n==== fetcher() ====\n"
else
r = string.format( "\n==== %s ====\n", s )
end
if o then
local n = table.maxn( Params )
local score, single, suppose
s = mw.text.trim( s )
if s == "" then
s = "''empty''"
end
r = r ..
"{| class='wikitable'\n" ..
"|-\n" ..
"! item !! expect !! got !! diff\n"
for i = 1, n do
single = Params[ i ]
score = o[ single ]
suppose = args[ single ]
if score ~= nil or suppose ~= nil then
r = string.format( "%s\n|-\n| %s || ", r, single )
if suppose then
r = string.format( "%s<code>%s</code>", r, suppose )
end
r = r .. " || "
if score ~= nil then
score = tostring( score )
r = string.format( "%s<code>%s</code>",
r, score )
end
if score ~= suppose then
r = r .. " || '''!!!'''"
end
end
end -- for i
r = r .. "\n|}\n"
else
r = r .. "'''failed'''"
end
return r
end -- Tests.fetcher()
Tests.formatter = function ( args )
-- Evaluate formatting function
-- Parameter:
-- args -- template parameters
-- 2 -- string to be interpreted, or empty
-- 3 -- string with format, or empty
-- r -- expected result
-- Returns:
-- string
local r
local source = ( args[ 2 ] or "" )
local shower = ( args[ 3 ] or "" )
local o = DateTime( source )
if o then
r = o.format( shower, "de" )
end
if r then
local syntax = mw.getCurrentFrame():callParserFunction(
"#tag:syntaxhighlight",
{ r,
lang="text",
enclose="none" } )
if r ~= args.r then
local should = ( args.r or "" )
r = string.format( "<span class=\"error\">%s</span><br />%s",
r, should )
end
r = string.format( "%s<br />%s",
r, syntax )
else
r = "<span class=\"error\">???????</span>"
end
r = string.format( "\n==== \"%s\" ====\n%s<br />%s",
shower, source, r )
return r
end -- Tests.formatter()
-- Export
local p = { }
function p.f( frame )
local r, fun
local params = frame:getParent().args
local fun = params[ 1 ]
if fun then
local l
l, r = pcall( Tests[ fun ], params )
end
return r
end -- f
return p