Modul:DateTime/test

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 29. Januar 2014 um 21:50 Uhr durch PerfektesChaos (Diskussion | Beiträge) (Setup). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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