मॉड्यूल:time/testcases
"इस मॉड्यूल हेतु प्रलेख मॉड्यूल:time/testcases/doc पर बनाया जा सकता है"
local export = {}
local schemata
local function code_tag(text, class)
if class then
return '<code class="' .. class .. '">' .. mw.text.nowiki(text) .. '</code>'
else
return "<code>" .. mw.text.nowiki(text) .. "</code>"
end
end
local function iterate_tsv(tsv)
local rows = tsv:gmatch "[^\n]+"
return function()
local row = rows()
if row then
local columns = {}
local prev_pos = 1
for start_pos, column, tab, end_pos in row:gmatch "()([^\t]+)(\t?)()" do
if not (start_pos == prev_pos and (tab == "") == (end_pos == #row + 1)) then
error("incorrect format in " .. row)
end
table.insert(columns, column)
prev_pos = end_pos
end
return unpack(columns)
end
end
end
local remove_links = require "Module:links".remove_links
function export.test_date_formatting(frame)
local module_name = frame.args.module
local quote_impl = require(module_name and "Module:" .. module_name or "Module:time").quote_impl
local function format_date(date)
return quote_impl { date = date }
end
local output = require "Module:array"()
output:insert [[
{| class="wikitable"
! input !! occurrences !! output !! expected !! error
]]
local counts = { [true] = 0, [false] = 0 }
for schema, count, date, expected in iterate_tsv(schemata) do
count = tonumber(count)
if not schema then
error("Line didn't match pattern: " .. line)
end
local ok, formatted = pcall(function() return format_date(date):gsub("'''", "") end)
local success = ok and formatted == expected
counts[success] = counts[success] + 1
if ok then
if formatted ~= expected then
output:insert "|-"
output:insert("| " .. code_tag(date) .. " || " .. count .. " || "
.. code_tag(formatted) .. " || " .. code_tag(expected) .. " ||")
end
else
output:insert "|-"
output:insert("| " .. code_tag(date) .. " || " .. count
.. " || || " .. code_tag(expected) .. " || "
.. code_tag(remove_links(formatted), "error"))
end
end
output:insert "|}"
output:insert(1, counts[true] .. "/" .. (counts[true] + counts[false]) .. " successes")
return output:concat "\n"
end
schemata = [[
<u><l> <d2>, <d4> 19297 September 14, 2014 2014 September 14
<u><l> <d1>, <d4> 8324 March 9, 2008 2008 March 9
<d4>-<d2>-<d2> 6293 1997-07-14 1997 July 14
<d2> <u><l> <d4> 4526 15 October 2002 2002 October 15
<u><l> <d2> <d4> 2866 Oct 18 2011 2011 October 18
<d1> <u><l> <d4> 1914 6 March 1992 1992 March 6
<u><l> <d1> <d4> 1252 Apr 7 2003 2003 April 7
<u><l> <d4> 1065 January 1911 1911 January
<d4>-<d2> 368 1843-06 1843 June
<d4> <u><l> <d2> 206 1939 December 15 1939 December 15
<d4>-<d1>-<d2> 190 2018-4-22 2018 April 22
<d2>-<d2>-<d4> 180 10-05-2003 2003 May 10
<u><l>. <d2>, <d4> 179 Aug. 13, 2015 2015 August 13
<d4> <u><l> <d1> 173 2020 January 2 2020 January 2
<u><l>. <d1>, <d4> 102 Dec. 2, 2003 2003 December 2
<d1>/<d2>/<d4> 84 7/30/2015 2015 July 30
<d2>/<d2>/<d4> 80 04/04/2002 2002 April 4
<d4>-<d1>-<d1> 54 2020-3-2 2020 March 2
{{<u><d1><u>|<d2> <u><l> <d4>}} 39 {{J2G|30 August 1585}} ???
<d4>/<d2>/<d2> 32 2006/01/17 2006 January 17
<d2> <u><l>, <d4> 30 11 Sep, 2004 2004 September 11
<d1>/<d1>/<d4> 28 7/7/2015 2015 July 7
<d4> <u><l> 25 1993 April 1993 April
<d1>/<d2>/<d2> 19 3/24/15 2015 March 24
<d4>, <d2> <u><l> 14 2017, 14 November 2017 November 14
<d2>/<d2>/<d2> 13 07/23/17 2017 July 23
<d1> <u><l>, <d4> 12 7 January, 1837 1837 January 7
<d2>/<d1>/<d4> 12 10/4/2014 2014 October 4
<d4>-<d2>-<d1> 12 1707-04-7 1707 April 7
<d2> <u><l> <d2> 11 12 May 92 1992 May 12
<u><l> 10 February ???
<d2>.<d2>.<d4> 9 21.10.2014 2014 October 21
<d4>-<d2>-<d2><u><d2>:<d2>:<d2> 8 2002-12-18T04:19:52 2002 December 18
<u> <d2>, <d4> 8 APR 17, 2015 2015 April 17
<u><l> <d2> 8 September 30 ???
<u><l> <d2><l>, <d4> 8 February 11th, 1839 1839 February 11
<d1>/<d1>/<d2> 7 4/1/15 2015 April 1
<d2>-<d1>-<d4> 7 14-4-2017 2017 April 14
<d4>, <u><l> <d2> 7 2017, February 16 2017 February 16
<d2>-<d2>-<d2> 6 08-12-31 2008 December 31
<d4>/<d1>/<d2> 6 1995/8/21 1995 August 21
<u><l>, <d4> 6 November, 2018 2018 November
<d1>-<d1>-<d4> 5 1-5-1840 1840 May 1
<d2>-<u><l>-<d2> 5 15-Jul-83 1983 July 15
<d4>, <d1> <u><l> 5 2017, 2 March 2017 March 2
<d4>-<d2>-<d2><u><d2>:<d2> 5 1992-12-08T22:34 1992 December 8
<u><l> <d1>,<d4> 5 August 8,1864 1864 August 8
<u><l> <d1><l>, <d4> 5 March 3rd, 2020 2020 March 3
<u><l> <d2>,<d4> 5 February 24,2016 2016 ???
{{<u><d1><u>|<d1> <u><l> <d4>}} 5 {{J2G|2 January 1579}} ???
<d2> <l> <d4> 4 14 august 2017 2017 August 14
<d1>-<d2>-<d4> 3 9-11-2017 2017 November 9
<d1>-<u><l>-<d2> 3 8-Mar-87 1987 March 8
<d2>.<d1>.<d4> 3 23.1.2020 2020 January 23
<d2>/<d1>/<d2> 3 01/6/17 2017 January 6
<d4>, <u><l> <d1> 3 2018, January 5 2018 January 5
<u> <d1>, <d4> 3 APR 5, 2019 2019 April 5
<u><l> <d2>. <d4> 3 May 27. 2010 2010 May 27
<d1> <l> <d4> 2 7 march 2018 2018 March 7
<d1> <u><l> <d2> 2 7 Jun 90 1990 June 7
<d1>. <u><l> <d4> 2 8. April 2020 2020 April 8
<d2> <u><l> <d4> <d4> 2 15 Jul 2010 2010 ???
<d2> <u><l><d4> 2 20 December1806 ???
<d2>. <u><l> <d4> 2 27. November 1844 1844 November 27
<d2>.<d2>.<d2> 2 17.03.19 ???
<d2><l> <u><l> <d4> 2 14th October 2018 2018 October 14
<d4>-<u><l>-<d2> 2 2005-May-31 2005 May 31
<l>.<l>. 2 n.d. ???
<u><l> <d1> 2 October 2 ???
<u><l> <d2>, <d4> <d4> 2 September 29, 1905 1905 ???
<u><l> <d2><l> <d4> 2 February 15th 1999 1999 February 15
<u><l>, <d2> <u><l> <d4> <d2>:<d2>:<d2> +<d4> 2 Mon, 23 Feb 2004 11:26:07 +0100 2004 February 23
<d1> <u><l> <d1> <d4> 1 9 September 9 2005 ???
<d1> <u><l> <d1>, <d4> 1 1 March 1, 1988 ???
<d1> <u><l><d4> 1 1 September1870 ???
<d1>. <l> <d4> 1 3. october 2015 2015 October 3
<d1>/<d2>/<d2> <d4> 1 4/11/03 2003 ???
<d2> <l>. <d4> 1 17 jan. 2014 2014 January 17
<d2> <u>, <d4> 1 05 SEPTEMBER, 2018 2018 September 5
<d2> <u><l> <d2> <d4> 1 27 January 27 2010 ???
<d2> <u><l> <d4>. 1 25 February 1996. ???
<d2>-<d1>-<d2> 1 05-2-27 ???
<d2>. <l> <d4> 1 02. october 2018 2018 October 2
<d2>.<d1>.<d4>-<d2>-<d2> 1 30.6.2011-06-30 ???
<d2>/<d2>, <d4> 1 11/19, 2015 November 19
<d4>, <u><l> <d1><l> 1 2011, October 7th 2011 October 7
<d4>-<d1> 1 1974-5 1974 May
<d4>-<d2>-<d2><u><d2>:<d2>:<d2>+<d4> 1 2008-09-25T20:53:38+0200 2008 September 25
<d4>...<d4> 1 2005...2011 ???
<l> <d1>, <d4> 1 october 7, 2013 2013 October 7
<l> <d2>, <d4> 1 january 26, 2018 2018 January 26
<u> <d2> <u> <d4> 1 SATURDAY 02 MARCH 2019 2019 March 2
<u><l> <d1>, <d4>. 1 March 4, 2016. 2016 March 4
<u><l> <d1>. <d4> 1 February 7. 2008 2008 February 7
<u><l> <d1><l> <d4> 1 June 4th 2009 2009 June 4
<u><l> <d2>, <d4>-<d1> 1 March 23, 1658-9 1658-9 March 23
<u><l> <d2>, <d4>. 1 Dec 16, 2015. 2015 December 16
<u><l> <d4> <d4> 1 February 2010 2010 ???
<u><l> <d4>, <d4> 1 September 2003, 2003 ???
<u><l>, <d2> <u><l> <d4> <d2>:<d2>:<d2> <u> 1 Sat, 22 Sep 2001 22:12:03 GMT 2001 September 22
<u><l>, <d2> <u><l> <d4> <d4> 1 Wed, 28 Feb 2001 2001 ???
<u><l>, <d2>-<u><l>-<d2> 1 Wed, 14-Nov-84 1984 November 14
<u><l>, <u><l> <d1><l>, <d4> 1 Saturday, December 7th, 2019 2019 December 7
<u><l>. <d2> <d4> 1 Dec. 16 2014 2014 December 16
<u><l>.<d2>, <d4> 1 Nov.12, 1996 1996 November 12
<u><l><d2>, <d4> 1 January20, 2010 ???
<u><l><u> <d2>, <d4> 1 SeptembeR 24, 2011 2011 September 24]]
return export