<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3ADateTime%2Ftest</id>
	<title>Modul:DateTime/test - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3ADateTime%2Ftest"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Modul:DateTime/test&amp;action=history"/>
	<updated>2026-05-23T05:21:05Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Modul:DateTime/test&amp;diff=2914684&amp;oldid=prev</id>
		<title>imported&gt;PerfektesChaos: 2020-07-26</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Modul:DateTime/test&amp;diff=2914684&amp;oldid=prev"/>
		<updated>2020-07-26T13:41:52Z</updated>

		<summary type="html">&lt;p&gt;2020-07-26&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[=[ 2020-07-26&lt;br /&gt;
Debug Module:DateTime&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- local globals&lt;br /&gt;
local DateTime = require( &amp;quot;Module:DateTime&amp;quot; )&lt;br /&gt;
local Tests    = { }&lt;br /&gt;
local Params   = { &amp;quot;lang&amp;quot;,&lt;br /&gt;
                   &amp;quot;bc&amp;quot;,&lt;br /&gt;
                   &amp;quot;year&amp;quot;,&lt;br /&gt;
                   &amp;quot;month&amp;quot;,&lt;br /&gt;
                   &amp;quot;month2&amp;quot;,&lt;br /&gt;
                   &amp;quot;week&amp;quot;,&lt;br /&gt;
                   &amp;quot;dom&amp;quot;,&lt;br /&gt;
                   &amp;quot;dom2&amp;quot;,&lt;br /&gt;
                   &amp;quot;hour&amp;quot;,&lt;br /&gt;
                   &amp;quot;hour2&amp;quot;,&lt;br /&gt;
                   &amp;quot;min&amp;quot;,&lt;br /&gt;
                   &amp;quot;sec&amp;quot;,&lt;br /&gt;
                   &amp;quot;msec&amp;quot;,&lt;br /&gt;
                   &amp;quot;mysec&amp;quot;,&lt;br /&gt;
                   &amp;quot;zone&amp;quot; }&lt;br /&gt;
DateTime = DateTime.DateTime()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function fault( a )&lt;br /&gt;
    -- Formatiere Fehler mit class=error&lt;br /&gt;
    return string.format( &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;quot;, a )&lt;br /&gt;
end -- fault()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function flat( adapt, around, assign )&lt;br /&gt;
    -- Format wikitext string like syntaxhighlight&lt;br /&gt;
    -- Parameter:&lt;br /&gt;
    --     adapt   -- string, with coded text&lt;br /&gt;
    --     around  -- embed like in &amp;lt;code&amp;gt; rather than span&lt;br /&gt;
    --     assign  -- table, with CSS style, or nil&lt;br /&gt;
    -- Returns:&lt;br /&gt;
    --     &amp;lt;span&amp;gt; string&lt;br /&gt;
    local e   = mw.html.create( &amp;quot;span&amp;quot; )&lt;br /&gt;
    local css = { [&amp;quot;font-family&amp;quot;] = &amp;quot;monospace&amp;quot; }&lt;br /&gt;
    if around then&lt;br /&gt;
        e:addClass( &amp;quot;mw-code&amp;quot; )&lt;br /&gt;
        css[&amp;quot;white-space&amp;quot;] = &amp;quot;nowrap&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    e:wikitext( mw.text.nowiki( adapt ) )&lt;br /&gt;
    if assign then&lt;br /&gt;
        for k, v in pairs( assign ) do&lt;br /&gt;
            css[ k ] = v&lt;br /&gt;
        end -- for k, v&lt;br /&gt;
    end&lt;br /&gt;
    e:css( css )&lt;br /&gt;
    return tostring( e )&lt;br /&gt;
end -- flat()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tests.fetcher = function ( args )&lt;br /&gt;
    -- Evaluate constructor function&lt;br /&gt;
    -- Parameter:&lt;br /&gt;
    --     args  -- template parameters&lt;br /&gt;
    --              2  -- string, to be interpreted, or empty&lt;br /&gt;
    --              4  -- string, with relative interval, or empty&lt;br /&gt;
    --              ***  --  expected field values, k=v&lt;br /&gt;
    -- Returns:&lt;br /&gt;
    --     string&lt;br /&gt;
    local r&lt;br /&gt;
    local s = ( args[ 2 ] or &amp;quot;&amp;quot; )&lt;br /&gt;
    local o = DateTime( s, false, args[ 4 ] )&lt;br /&gt;
    if s == &amp;quot;&amp;quot; then&lt;br /&gt;
        r = &amp;quot;\n==== fetcher() ====\n&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        r = string.format( &amp;quot;\n==== %s ====\n&amp;quot;, s )&lt;br /&gt;
    end&lt;br /&gt;
    if o then&lt;br /&gt;
        local n = table.maxn( Params )&lt;br /&gt;
        local score, single, suppose&lt;br /&gt;
        s = mw.text.trim( s )&lt;br /&gt;
        if s == &amp;quot;&amp;quot; then&lt;br /&gt;
            s = &amp;quot;&amp;#039;&amp;#039;empty&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        r = r ..&lt;br /&gt;
            &amp;quot;{| class=&amp;#039;wikitable&amp;#039;\n&amp;quot; ..&lt;br /&gt;
            &amp;quot;|-\n&amp;quot; ..&lt;br /&gt;
            &amp;quot;! item !! expect !! got !! diff\n&amp;quot;&lt;br /&gt;
        for i = 1, n do&lt;br /&gt;
            single  = Params[ i ]&lt;br /&gt;
            score   = o[ single ]&lt;br /&gt;
            suppose = args[ single ]&lt;br /&gt;
            if score ~= nil  or  suppose ~= nil then&lt;br /&gt;
                r = string.format( &amp;quot;%s\n|-\n| %s || &amp;quot;, r, single )&lt;br /&gt;
                if suppose then&lt;br /&gt;
                    r = string.format( &amp;quot;%s&amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;&amp;quot;, r, suppose )&lt;br /&gt;
                end&lt;br /&gt;
                r = r .. &amp;quot; || &amp;quot;&lt;br /&gt;
                if score ~= nil then&lt;br /&gt;
                    score = tostring( score )&lt;br /&gt;
                    r     = string.format( &amp;quot;%s&amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;&amp;quot;,&lt;br /&gt;
                                           r, score )&lt;br /&gt;
                end&lt;br /&gt;
                if score ~= suppose then&lt;br /&gt;
                    r = string.format( &amp;quot;%s || %s&amp;quot;,&lt;br /&gt;
                                       r,  fault( &amp;quot;!!!!!!!!!!&amp;quot; ) )&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end -- for i&lt;br /&gt;
        r = r .. &amp;quot;\n|}\n&amp;quot;&lt;br /&gt;
    elseif args.failed then&lt;br /&gt;
        r = r .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;failed&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        r = r .. &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;FAILED&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Tests.fetcher()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tests.field = function ( args )&lt;br /&gt;
    -- Evaluate template function&lt;br /&gt;
    -- Parameter:&lt;br /&gt;
    --     args  -- template parameters&lt;br /&gt;
    --              template  -- which template&lt;br /&gt;
    --              1         -- string, with first template parameter&lt;br /&gt;
    --              2         -- string, with second template parameter&lt;br /&gt;
    --              ...       -- strings with more template parameters&lt;br /&gt;
    --              r         -- expected result (string)&lt;br /&gt;
    -- Returns:&lt;br /&gt;
    --     string with table row&lt;br /&gt;
    local r = &amp;quot;\n|-\n| &amp;quot;&lt;br /&gt;
    local l, d = pcall( require, &amp;quot;Module:DateTime/sort&amp;quot; )&lt;br /&gt;
    local source = args.template&lt;br /&gt;
    if l and source then&lt;br /&gt;
        local sort, v&lt;br /&gt;
        local suppose = args.r or &amp;quot;&amp;quot;&lt;br /&gt;
        source = mw.text.trim( source )&lt;br /&gt;
        r = string.format( &amp;quot;%s&amp;lt;code&amp;gt;{{%s&amp;quot;,&lt;br /&gt;
                           r, source )&lt;br /&gt;
        for i = 1, 9 do&lt;br /&gt;
            v = args[ i ]&lt;br /&gt;
            if v then&lt;br /&gt;
                r = string.format( &amp;quot;%s&amp;amp;#124;%s&amp;quot;,&lt;br /&gt;
                                   r, v )&lt;br /&gt;
            end&lt;br /&gt;
        end -- for i&lt;br /&gt;
        for k, v in pairs( args ) do&lt;br /&gt;
            if type( k ) == &amp;quot;string&amp;quot;  and&lt;br /&gt;
               k ~= &amp;quot;f&amp;quot;  and  k ~= &amp;quot;r&amp;quot;  and  k ~= &amp;quot;template&amp;quot; then&lt;br /&gt;
                r = string.format( &amp;quot;%s&amp;amp;#124;%s=%s&amp;quot;,&lt;br /&gt;
                                   r, k, v )&lt;br /&gt;
            end&lt;br /&gt;
        end -- for k, v&lt;br /&gt;
        r    = r ..  &amp;quot;}}&amp;lt;/code&amp;gt; || &amp;quot;&lt;br /&gt;
        r    = r:gsub( &amp;quot;{{&amp;quot;, &amp;quot;&amp;amp;#123;&amp;amp;#123;&amp;quot; )&lt;br /&gt;
                :gsub( &amp;quot;}}&amp;quot;, &amp;quot;&amp;amp;#125;&amp;amp;#125;&amp;quot; )&lt;br /&gt;
        sort = d.test( source, args )&lt;br /&gt;
        r    = string.format( &amp;quot;%s%s ||&amp;quot;, r, sort )&lt;br /&gt;
        if sort == suppose then&lt;br /&gt;
            r = string.format( &amp;quot;%s&amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;&amp;quot;, r, suppose )&lt;br /&gt;
        else&lt;br /&gt;
            r = string.format( &amp;quot;%s%s !!!!!!!!!! %s&amp;quot;,&lt;br /&gt;
                               r,&lt;br /&gt;
                               flat( suppose, true ),&lt;br /&gt;
                               fault( flat( sort, true ) ) )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Tests.field()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tests.flower = function ( args )&lt;br /&gt;
    -- Evaluate comparison function&lt;br /&gt;
    -- Parameter:&lt;br /&gt;
    --     args  -- template parameters&lt;br /&gt;
    --              2  -- string, with comparison function name&lt;br /&gt;
    --              3  -- string, with first timestamp, or empty&lt;br /&gt;
    --              4  -- string, with second timestamp, or empty&lt;br /&gt;
    --              r  -- expected result (number)&lt;br /&gt;
    local r&lt;br /&gt;
    local select = args[ 2 ]&lt;br /&gt;
    if select then&lt;br /&gt;
        local suppose = args.r or &amp;quot;&amp;quot;&lt;br /&gt;
        local o       = DateTime( args[ 3 ] )&lt;br /&gt;
        local slip    = o:flow( args[ 4 ], select )  and  &amp;quot;1&amp;quot;   or   &amp;quot;&amp;quot;&lt;br /&gt;
        r = string.format( &amp;quot;* %s &amp;#039;&amp;#039;%s&amp;#039;&amp;#039; %s &amp;amp;#160; »&amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;«&amp;quot;,&lt;br /&gt;
                           args[ 3 ] or &amp;quot;&amp;quot;,&lt;br /&gt;
                           select,&lt;br /&gt;
                           args[ 4 ] or &amp;quot;&amp;quot;,&lt;br /&gt;
                           slip )&lt;br /&gt;
        if slip ~= suppose then&lt;br /&gt;
             r = string.format( &amp;quot;%s %s »&amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;«&amp;quot;,&lt;br /&gt;
                                r,  fault( &amp;quot;~=&amp;quot; ),  suppose )&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        r = fault( &amp;quot;No comparison function name&amp;quot; )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Tests.flower()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tests.follower = function ( args )&lt;br /&gt;
    -- Evaluate sort function&lt;br /&gt;
    -- Parameter:&lt;br /&gt;
    --     args  -- template parameters&lt;br /&gt;
    --              2  -- string, to be interpreted&lt;br /&gt;
    --              3  -- string, with heading cell, or empty&lt;br /&gt;
    --              r  -- expected result (number)&lt;br /&gt;
    -- Returns:&lt;br /&gt;
    --     string with table row&lt;br /&gt;
    local r = &amp;quot;|-\n| &amp;quot;&lt;br /&gt;
    local l, d = pcall( require, &amp;quot;Module:DateTime/sort&amp;quot; )&lt;br /&gt;
    if l then&lt;br /&gt;
        local source  = args[ 2 ] or &amp;quot;&amp;quot;&lt;br /&gt;
        local sort    = d.fruit( source, false )&lt;br /&gt;
        local suppose = args.r or &amp;quot;&amp;quot;&lt;br /&gt;
        if args[ 3 ] then&lt;br /&gt;
            r = string.format( &amp;quot;%s%s || &amp;quot;, r, args[ 3 ] )&lt;br /&gt;
        end&lt;br /&gt;
        r = string.format( &amp;quot;%s%s || &amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt; || &amp;quot;,&lt;br /&gt;
                           r, source, sort )&lt;br /&gt;
        if sort == suppose then&lt;br /&gt;
            r = string.format( &amp;quot;%s&amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;&amp;quot;, r, suppose )&lt;br /&gt;
        else&lt;br /&gt;
            r = string.format( &amp;quot;%s%s !!!!!!!!!!&amp;quot;,&lt;br /&gt;
                               r, fault( suppose ) )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Tests.follower()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tests.formatter = function ( args )&lt;br /&gt;
    -- Evaluate formatting function&lt;br /&gt;
    -- Parameter:&lt;br /&gt;
    --     args  -- template parameters&lt;br /&gt;
    --              2  -- string, to be interpreted, or empty&lt;br /&gt;
    --              3  -- string, with format, or empty&lt;br /&gt;
    --              4  -- string, with language, or empty&lt;br /&gt;
    --              r  -- expected result&lt;br /&gt;
    -- Returns:&lt;br /&gt;
    --     string&lt;br /&gt;
    local r&lt;br /&gt;
    local source = ( args[ 2 ] or &amp;quot;&amp;quot; )&lt;br /&gt;
    local shower = ( args[ 3 ] or &amp;quot;&amp;quot; )&lt;br /&gt;
    local slang  = args[ 4 ]&lt;br /&gt;
    local o = DateTime( source )&lt;br /&gt;
    local p&lt;br /&gt;
    if slang then&lt;br /&gt;
        p = { lang = slang }&lt;br /&gt;
    end&lt;br /&gt;
    if o then&lt;br /&gt;
        r = o:format( shower, p )&lt;br /&gt;
    end&lt;br /&gt;
    if r then&lt;br /&gt;
        local syntax&lt;br /&gt;
        r = tostring( r )&lt;br /&gt;
        syntax = flat( r, false )&lt;br /&gt;
        if r ~= args.r then&lt;br /&gt;
            local should = ( args.r or &amp;quot;&amp;quot; )&lt;br /&gt;
            r = string.format( &amp;quot;%s&amp;lt;br /&amp;gt;%s&amp;quot;,&lt;br /&gt;
                               fault( r ),  should )&lt;br /&gt;
        end&lt;br /&gt;
        r = string.format( &amp;quot;%s&amp;lt;br /&amp;gt;%s&amp;quot;,&lt;br /&gt;
                           r, syntax )&lt;br /&gt;
    else&lt;br /&gt;
        r = fault( &amp;quot;???????&amp;quot; )&lt;br /&gt;
    end&lt;br /&gt;
    if slang then&lt;br /&gt;
        slang = string.format( &amp;quot;&amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;&amp;quot;, slang )&lt;br /&gt;
    else&lt;br /&gt;
        slang = &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    r = string.format( &amp;quot;\n==== \&amp;quot;%s\&amp;quot; %s ====\n%s&amp;lt;br /&amp;gt;%s&amp;quot;,&lt;br /&gt;
                       shower, slang, source, r )&lt;br /&gt;
    return r&lt;br /&gt;
end -- Tests.formatter()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tests.futurist = function ( args )&lt;br /&gt;
    -- Evaluate formatting function with shift&lt;br /&gt;
    -- Parameter:&lt;br /&gt;
    --     args  -- template parameters&lt;br /&gt;
    --              2  -- string, to be interpreted, or empty&lt;br /&gt;
    --              3  -- string, with shift&lt;br /&gt;
    --              r  -- expected result&lt;br /&gt;
    -- Returns:&lt;br /&gt;
    --     string&lt;br /&gt;
    local r&lt;br /&gt;
    local source = ( args[ 2 ] or &amp;quot;&amp;quot; )&lt;br /&gt;
    local shift  = ( args[ 3 ] or &amp;quot;&amp;quot; )&lt;br /&gt;
    local o      = DateTime( source )&lt;br /&gt;
    if o then&lt;br /&gt;
        r = o:future( shift ):tostring()&lt;br /&gt;
        if r ~= args.r then&lt;br /&gt;
            local should = ( args.r or &amp;quot;&amp;quot; )&lt;br /&gt;
            r = string.format( &amp;quot;\&amp;quot;%s\&amp;quot; ./. \&amp;quot;%s\&amp;quot;&amp;quot;,&lt;br /&gt;
                               fault( r ),  should )&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        r = fault( &amp;quot;??????&amp;quot; )&lt;br /&gt;
    end&lt;br /&gt;
    r = string.format( &amp;quot;\n; \&amp;quot;%s\&amp;quot;\n: \&amp;quot;%s\&amp;quot; &amp;amp;rArr; %s&amp;quot;,&lt;br /&gt;
                       shift, source, r )&lt;br /&gt;
    return r&lt;br /&gt;
end -- Tests.futurist()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Export&lt;br /&gt;
local p = { }&lt;br /&gt;
&lt;br /&gt;
function p.f( frame )&lt;br /&gt;
    local r&lt;br /&gt;
    local params = frame:getParent().args&lt;br /&gt;
    local fun    = params.f or params[ 1 ]&lt;br /&gt;
    if fun then&lt;br /&gt;
        local l&lt;br /&gt;
        l, r = pcall( Tests[ fun ], params  )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- p.f&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;PerfektesChaos</name></author>
	</entry>
</feed>