All tests passed. (refresh)
Text | Expected | Actual | ||||||
---|---|---|---|---|---|---|---|---|
![]() |
| تۇز تۇزلار تۇزنىڭ تۇزلارنىڭ تۇزنى تۇزلارنى تۇزغا تۇزلارغا تۇزدا تۇزلاردا تۇزدىن تۇزلاردىن تۇزدىكى تۇزلاردىكى تۇزغىچە تۇزلارغىچە تۇزدەك تۇزلاردەك تۇزچىلىك تۇزلارچىلىك تۇزچە تۇزلارچە | تۇز تۇزلار تۇزنىڭ تۇزلارنىڭ تۇزنى تۇزلارنى تۇزغا تۇزلارغا تۇزدا تۇزلاردا تۇزدىن تۇزلاردىن تۇزدىكى تۇزلاردىكى تۇزغىچە تۇزلارغىچە تۇزدەك تۇزلاردەك تۇزچىلىك تۇزلارچىلىك تۇزچە تۇزلارچە | |||||
![]() |
| بالا بالالار بالانىڭ بالالارنىڭ بالانى بالالارنى بالاغا بالالارغا بالادا بالالاردا بالادىن بالالاردىن بالادىكى بالالاردىكى بالاغىچە بالالارغىچە بالادەك بالالاردەك بالاچىلىك بالالارچىلىك بالاچە بالالارچە | بالا بالالار بالانىڭ بالالارنىڭ بالانى بالالارنى بالاغا بالالارغا بالادا بالالاردا بالادىن بالالاردىن بالادىكى بالالاردىكى بالاغىچە بالالارغىچە بالادەك بالالاردەك بالاچىلىك بالالارچىلىك بالاچە بالالارچە | |||||
![]() |
| بالا بالىلار بالىنىڭ بالىلارنىڭ بالىنى بالىلارنى بالىغا بالىلارغا بالىدا بالىلاردا بالىدىن بالىلاردىن بالىدىكى بالىلاردىكى بالىغىچە بالىلارغىچە بالىدەك بالىلاردەك بالىچىلىك بالىلارچىلىك بالىچە بالىلارچە | بالا بالىلار بالىنىڭ بالىلارنىڭ بالىنى بالىلارنى بالىغا بالىلارغا بالىدا بالىلاردا بالىدىن بالىلاردىن بالىدىكى بالىلاردىكى بالىغىچە بالىلارغىچە بالىدەك بالىلاردەك بالىچىلىك بالىلارچىلىك بالىچە بالىلارچە | |||||
![]() |
| قول قوللار قولنىڭ قوللارنىڭ قولنى قوللارنى قولغا قوللارغا قولدا قوللاردا قولدىن قوللاردىن قولدىكى قوللاردىكى قولغىچە قوللارغىچە قولدەك قوللاردەك قولچىلىك قوللارچىلىك قولچە قوللارچە | قول قوللار قولنىڭ قوللارنىڭ قولنى قوللارنى قولغا قوللارغا قولدا قوللاردا قولدىن قوللاردىن قولدىكى قوللاردىكى قولغىچە قوللارغىچە قولدەك قوللاردەك قولچىلىك قوللارچىلىك قولچە قوللارچە | |||||
![]() |
| بەت بەتلەر بەتنىڭ بەتلەرنىڭ بەتنى بەتلەرنى بەتكە بەتلەرگە بەتتە بەتلەردە بەتتىن بەتلەردىن بەتتىكى بەتلەردىكى بەتكىچە بەتلەرگىچە بەتتەك بەتلەردەك بەتچىلىك بەتلەرچىلىك بەتچە بەتلەرچە | بەت بەتلەر بەتنىڭ بەتلەرنىڭ بەتنى بەتلەرنى بەتكە بەتلەرگە بەتتە بەتلەردە بەتتىن بەتلەردىن بەتتىكى بەتلەردىكى بەتكىچە بەتلەرگىچە بەتتەك بەتلەردەك بەتچىلىك بەتلەرچىلىك بەتچە بەتلەرچە | |||||
![]() |
| قوي قويلار قوينىڭ قويلارنىڭ قوينى قويلارنى قويغا قويلارغا قويدا قويلاردا قويدىن قويلاردىن قويدىكى قويلاردىكى قويغىچە قويلارغىچە قويدەك قويلاردەك قويچىلىك قويلارچىلىك قويچە قويلارچە | قوي قويلار قوينىڭ قويلارنىڭ قوينى قويلارنى قويغا قويلارغا قويدا قويلاردا قويدىن قويلاردىن قويدىكى قويلاردىكى قويغىچە قويلارغىچە قويدەك قويلاردەك قويچىلىك قويلارچىلىك قويچە قويلارچە | |||||
![]() |
| خىش خىشلار خىشنىڭ خىشلارنىڭ خىشنى خىشلارنى خىشقا خىشلارغا خىشتا خىشلاردا خىشتىن خىشلاردىن خىشتىكى خىشلاردىكى خىشقىچە خىشلارغىچە خىشتەك خىشلاردەك خىشچىلىك خىشلارچىلىك خىشچە خىشلارچە | خىش خىشلار خىشنىڭ خىشلارنىڭ خىشنى خىشلارنى خىشقا خىشلارغا خىشتا خىشلاردا خىشتىن خىشلاردىن خىشتىكى خىشلاردىكى خىشقىچە خىشلارغىچە خىشتەك خىشلاردەك خىشچىلىك خىشلارچىلىك خىشچە خىشلارچە | |||||
![]() |
| بالا بالالار بالانىڭ بالالارنىڭ بالانى بالالارنى بالاغا بالالارغا بالادا بالالاردا بالادىن بالالاردىن بالادىكى بالالاردىكى بالاغىچە بالالارغىچە بالادەك بالالاردەك بالاچىلىك بالالارچىلىك بالاچە بالالارچە | بالا بالالار بالانىڭ بالالارنىڭ بالانى بالالارنى بالاغا بالالارغا بالادا بالالاردا بالادىن بالالاردىن بالادىكى بالالاردىكى بالاغىچە بالالارغىچە بالادەك بالالاردەك بالاچىلىك بالالارچىلىك بالاچە بالالارچە | |||||
![]() |
| باغ باغلار باغنىڭ باغلارنىڭ باغنى باغلارنى باغقا باغلارغا باغدا باغلاردا باغدىن باغلاردىن باغدىكى باغلاردىكى باغقىچە باغلارغىچە باغدەك باغلاردەك باغچىلىك باغلارچىلىك باغچە باغلارچە | باغ باغلار باغنىڭ باغلارنىڭ باغنى باغلارنى باغقا باغلارغا باغدا باغلاردا باغدىن باغلاردىن باغدىكى باغلاردىكى باغقىچە باغلارغىچە باغدەك باغلاردەك باغچىلىك باغلارچىلىك باغچە باغلارچە |
-- Unit tests for ].
local p = require('Module:UnitTests')
--local m = require('Module:User:Oyunqi/ug-decl-noun')
local m = require('Module:User:Oyunqi/ug-decl-noun1')
local testcases = require('Module:User:Oyunqi/ug-decl-noun/testcases/data')
local sub = mw.ustring.gsub
local match = mw.ustring.gmatch
function format_input(params)
local par = ""
if params and params ~= "" then par = par .. "|" .. params end
if params and params ~= "" then par = par .. "|" .. params end
if params and params ~= "" then par = par .. "|change=" .. params end
if params and params ~= "" then par = par .. "|tongue=" .. params end
str = "<table><tr><td><code><b>{{ug-dec-noun-auto".. mw.text.nowiki(par) .."}}</b></code></td></tr>"
str = str .. "<tr><td><code><b>head:</b> ".. params.."</code> </td></tr>"
str = str .. "<tr><td><code><b>1(v):</b> ".. (params or "") .."</code></td></tr>"
str = str .. "<tr><td><code><b>2(c):</b> ".. (params or "") .."</code></td></tr>"
str = str .. "<tr><td><code><b>change:</b> ".. (params or "") .."</code></td></tr></table>"
return str
end
function format_output(output)
str ="<div dir=\"rtl\">"
i = 1
for token in match(output,"+") do
sep = " " -- "<br>"
if i % 2 == 0 then
sep = "</br>"
end
str = str .. token.. sep
i = i + 1
end
str = str .. "</div>"
return str
end
function fill_args(params, args)
params = sub(params, "|", " ")
i=1
--log =params
for token in match(params,"+") do
t = sub(token, "=", " ")
j =1
ts={}
for tt in match(t,"+") do
ts=tt
j=j+1
end
if j ==3 then
args] =ts
--log=log..ts.."-"..ts.." "
else
args = ts
--log=log..i.."-"..ts.." "
i=i+1
end
end
args =1
end
function table.show(t, name, indent)
local cart -- a container
local autoref -- for self references
--[[ counts the number of elements in a table
local function tablecount(t)
local n = 0
for _, _ in pairs(t) do n = n+1 end
return n
end
]]
-- (RiciLake) returns true if the table is empty
local function isemptytable(t) return next(t) == nil end
local function basicSerialize (o)
local so = tostring(o)
if type(o) == "function" then
local info = debug.getinfo(o, "S")
-- info.name is nil because o is not a calling level
if info.what == "C" then
return string.format("%q", so .. ", C function")
else
-- the information is defined through lines
return string.format("%q", so .. ", defined in (" ..
info.linedefined .. "-" .. info.lastlinedefined ..
")" .. info.source)
end
elseif type(o) == "number" or type(o) == "boolean" then
return so
else
return string.format("%q", so)
end
end
local function addtocart (value, name, indent, saved, field)
indent = indent or ""
saved = saved or {}
field = field or name
cart = cart .. indent .. field
if type(value) ~= "table" then
cart = cart .. " = " .. basicSerialize(value) .. ";\n"
else
if saved then
cart = cart .. " = {}; -- " .. saved
.. " (self reference)\n"
autoref = autoref .. name .. " = " .. saved .. ";\n"
else
saved = name
--if tablecount(value) == 0 then
if isemptytable(value) then
cart = cart .. " = {};\n"
else
cart = cart .. " = {\n"
for k, v in pairs(value) do
k = basicSerialize(k)
local fname = string.format("%s", name, k)
field = string.format("", k)
-- three spaces between levels
addtocart(v, fname, indent .. " ", saved, field)
end
cart = cart .. indent .. "};\n"
end
end
end
end
name = name or "__unnamed__"
if type(t) ~= "table" then
return name .. " = " .. basicSerialize(t)
end
cart, autoref = "", ""
addtocart(t, name, indent)
return cart .. autoref
end
function p:test_case()
for params, expected in pairs(testcases) do
if type(expected) == "table" then
local frame={}
frame.args={}
fill_args(params, frame.args)
local word = m.check(frame)
local nouns = m.createCases(word)
if expected and expected ~= {} then
local result = table.concat(nouns, " ")
self:equals(format_input(frame.args) , format_output(result), format_output(expected))
end
if expected and expected ~= "" then
local result = table.concat(nouns, " ")
self:equals(format_input(frame.args) , format_output(result), format_output(expected))
end
if expected and expected ~= "" then
local result = table.concat(nouns, " ")
self:equals(format_input(frame.args) , format_output(result), format_output(expected))
end
if expected and expected ~= {} then
local result = table.concat(nouns, " ")
self:equals(format_input(frame.args) , format_output(result), format_output(expected))
end
--self:equals(format_input(frame.args) , table.show(nouns), table.show(expected))
else
if expected ~= "" then
local frame={}
frame.args={}
fill_args(params, frame.args)
local word = m.check(frame)
--result = word
local nouns = m.createCases(word)
--[[
result = nouns
local temp = ""
--[
for k, v in pairs(result) do
temp = temp .. tostring(k) .. "=>"
if type(v) == "table" then
for tk, tv in pairs(v) do
temp = temp .. tostring(kt) .. "==>" .. tv
end
-- temp = temp .. table.concat(v, " ")
else
temp = temp .. v .. " "
end
end
result = temp
--]]
--[[
local word = m.check(frame)
local nouns = m.createCases(word) ]]
local result = table.concat(nouns, " ")
self:equals(format_input(frame.args) ,format_output(result) , format_output(expected))
-- self:equals(format_input(frame.args) , table.show(nouns), table.show(expected))
end
end
end
end
return p