Module:User:Vitalik/inflection/units/uz-noun/testcases
Jump to navigation
Jump to search
- The following documentation is located at Module:User:Vitalik/inflection/units/uz-noun/testcases/documentation. [edit]
- Useful links: root page • root page’s subpages • links • transclusions • tested module • user page • user talk page • userspace
Navigation
[edit]Lua error in package.lua at line 80: module 'Module:utils' not found
local dev_prefix = ''
dev_prefix = 'User:Vitalik/' -- comment this on active version
local tests = require('Module:UnitTests')
local inflection = require('Module:' .. dev_prefix .. 'inflection')
local m_links = require('Module:links')
local unit_name = 'uz-noun'
local lang = require('Module:languages').getByCode('uz')
local n = 0
local average = 0
function tests:check_full_inflection(base, possessive_type, expected, comment)
return self:check_inflection(base, possessive_type, expected, comment, true)
end
function tests:check_inflection(base, possessive_type, expected, comment, full)
n = n + 1
local start = os.clock()
local forms = inflection.test(unit_name, base, {possessive_type=possessive_type})
local finished = os.clock()
local delta = finished - start
mw.log('time delta = ' .. delta)
average = ((average * (n - 1)) + delta) / n
mw.log('time average = ' .. average)
local forms_keys
if full == nil then
forms_keys = {
'nom_sg', 'gen_sg', 'dat_sg', 'acc_sg', 'loc_sg', 'abl_sg', 'nom_pl', 'gen_pl', 'dat_pl', 'acc_pl', 'loc_pl', 'abl_pl',
'nom_sg_possessive_1sg', 'nom_sg_possessive_3sg',
}
else
forms_keys = {
'nom_sg', 'gen_sg', 'dat_sg', 'acc_sg', 'loc_sg', 'abl_sg', 'nom_pl', 'gen_pl', 'dat_pl', 'acc_pl', 'loc_pl', 'abl_pl',
'nom_sg_possessive_1sg', 'gen_sg_possessive_1sg', 'dat_sg_possessive_1sg', 'acc_sg_possessive_1sg', 'loc_sg_possessive_1sg', 'abl_sg_possessive_1sg',
'nom_sg_possessive_2sg', 'gen_sg_possessive_2sg', 'dat_sg_possessive_2sg', 'acc_sg_possessive_2sg', 'loc_sg_possessive_2sg', 'abl_sg_possessive_2sg',
'nom_sg_possessive_3sg', 'gen_sg_possessive_3sg', 'dat_sg_possessive_3sg', 'acc_sg_possessive_3sg', 'loc_sg_possessive_3sg', 'abl_sg_possessive_3sg',
'nom_sg_possessive_1pl', 'gen_sg_possessive_1pl', 'dat_sg_possessive_1pl', 'acc_sg_possessive_1pl', 'loc_sg_possessive_1pl', 'abl_sg_possessive_1pl',
'nom_sg_possessive_2pl', 'gen_sg_possessive_2pl', 'dat_sg_possessive_2pl', 'acc_sg_possessive_2pl', 'loc_sg_possessive_2pl', 'abl_sg_possessive_2pl',
'nom_sg_possessive_3pl', 'gen_sg_possessive_3pl', 'dat_sg_possessive_3pl', 'acc_sg_possessive_3pl', 'loc_sg_possessive_3pl', 'abl_sg_possessive_3pl',
'nom_pl_possessive_1sg', 'gen_pl_possessive_1sg', 'dat_pl_possessive_1sg', 'acc_pl_possessive_1sg', 'loc_pl_possessive_1sg', 'abl_pl_possessive_1sg',
'nom_pl_possessive_2sg', 'gen_pl_possessive_2sg', 'dat_pl_possessive_2sg', 'acc_pl_possessive_2sg', 'loc_pl_possessive_2sg', 'abl_pl_possessive_2sg',
'nom_pl_possessive_3sg', 'gen_pl_possessive_3sg', 'dat_pl_possessive_3sg', 'acc_pl_possessive_3sg', 'loc_pl_possessive_3sg', 'abl_pl_possessive_3sg',
'nom_pl_possessive_1pl', 'gen_pl_possessive_1pl', 'dat_pl_possessive_1pl', 'acc_pl_possessive_1pl', 'loc_pl_possessive_1pl', 'abl_pl_possessive_1pl',
'nom_pl_possessive_2pl', 'gen_pl_possessive_2pl', 'dat_pl_possessive_2pl', 'acc_pl_possessive_2pl', 'loc_pl_possessive_2pl', 'abl_pl_possessive_2pl',
'nom_pl_possessive_3pl', 'gen_pl_possessive_3pl', 'dat_pl_possessive_3pl', 'acc_pl_possessive_3pl', 'loc_pl_possessive_3pl', 'abl_pl_possessive_3pl',
}
end
local link = m_links.full_link({term = base, lang = lang, tr = '-' }, nil, true)
local expected_list = mw.text.split(expected, ' / ')
for i, form_key in pairs(forms_keys) do
local zero = i < 10 and '0' or ''
local text = n .. '.' .. zero .. i .. ') ' .. link .. ' (type="' .. (possessive_type or '-') .. '") <b>' .. form_key .. '</b>'
if comment then
text = text .. " <small style='color: gray;'>" .. comment .. "</small>"
end
actual = forms[form_key]
expected = expected_list[i]
self:equals(text, actual, expected)
end
end
function tests:test_inflection()
self:check_full_inflection('kitob', '',
'kitob / kitobning / kitobga / kitobni / kitobda / kitobdan / kitoblar / kitoblarning / kitoblarga / kitoblarni / kitoblarda / kitoblardan / ' ..
'kitobim / kitobimning / kitobimga / kitobimni / kitobimda / kitobimdan / ' ..
'kitobing / kitobingning / kitobingga / kitobingni / kitobingda / kitobingdan / ' ..
'kitobi / kitobining / kitobiga / kitobini / kitobida / kitobidan / ' ..
'kitobimiz / kitobimizning / kitobimizga / kitobimizni / kitobimizda / kitobimizdan / ' ..
'kitobingiz / kitobingizning / kitobingizga / kitobingizni / kitobingizda / kitobingizdan / ' ..
'kitobi / kitobining / kitobiga / kitobini / kitobida / kitobidan / ' ..
'kitoblarim / kitoblarimning / kitoblarimga / kitoblarimni / kitoblarimda / kitoblarimdan / ' ..
'kitoblaring / kitoblaringning / kitoblaringga / kitoblaringni / kitoblaringda / kitoblaringdan / ' ..
'kitoblari / kitoblarining / kitoblariga / kitoblarini / kitoblarida / kitoblaridan / ' ..
'kitoblarimiz / kitoblarimizning / kitoblarimizga / kitoblarimizni / kitoblarimizda / kitoblarimizdan / ' ..
'kitoblaringiz / kitoblaringizning / kitoblaringizga / kitoblaringizni / kitoblaringizda / kitoblaringizdan / ' ..
'kitoblari / kitoblarining / kitoblariga / kitoblarini / kitoblarida / kitoblaridan')
self:check_inflection('mavzu', 'yisi', 'mavzu / mavzuning / mavzuga / mavzuni / mavzuda / mavzudan / mavzular / mavzularning / mavzularga / mavzularni / mavzularda / mavzulardan / mavzuyim / mavzusi')
self:check_inflection('parvo', 'yiyi', 'parvo / parvoning / parvoga / parvoni / parvoda / parvodan / parvolar / parvolarning / parvolarga / parvolarni / parvolarda / parvolardan / parvoyim / parvoyi')
self:check_inflection('ishtirok', 'kq', 'ishtirok / ishtirokning / ishtirokka / ishtirokni / ishtirokda / ishtirokdan / ishtiroklar / ishtiroklarning / ishtiroklarga / ishtiroklarni / ishtiroklarda / ishtiroklardan / ishtirokim / ishtiroki')
self:check_inflection('huquq', 'kq', 'huquq / huquqning / huquqqa / huquqni / huquqda / huquqdan / huquqlar / huquqlarning / huquqlarga / huquqlarni / huquqlarda / huquqlardan / huquqim / huquqi')
self:check_inflection('qorin', 'reduced', 'qorin / qorinning / qoringa / qorinni / qorinda / qorindan / qorinlar / qorinlarning / qorinlarga / qorinlarni / qorinlarda / qorinlardan / qornim / qorni')
self:check_inflection('metall', '', 'metall / metallning / metallga / metallni / metallda / metalldan / metallar / metallarning / metallarga / metallarni / metallarda / metallardan / metallim / metalli')
self:check_inflection('bobo', 'std', 'bobo / boboning / boboga / boboni / boboda / bobodan / bobolar / bobolarning / bobolarga / bobolarni / bobolarda / bobolardan / bobom / bobosi')
self:check_inflection('tilak', 'std', 'tilak / tilakning / tilakka / tilakni / tilakda / tilakdan / tilaklar / tilaklarning / tilaklarga / tilaklarni / tilaklarda / tilaklardan / tilagim / tilagi')
self:check_inflection('tayoq', 'std', 'tayoq / tayoqning / tayoqqa / tayoqni / tayoqda / tayoqdan / tayoqlar / tayoqlarning / tayoqlarga / tayoqlarni / tayoqlarda / tayoqlardan / tayogʻim / tayogʻi')
self:check_inflection('obroʻ', 'yiyi', 'obroʻ / obroʻning / obroʻga / obroʻni / obroʻda / obroʻdan / obroʻlar / obroʻlarning / obroʻlarga / obroʻlarni / obroʻlarda / obroʻlardan / obroʻyim / obroʻyi')
self:check_inflection('dohiy', '', 'dohiy / dohiyning / dohiyga / dohiyni / dohiyda / dohiydan / dohiylar / dohiylarning / dohiylarga / dohiylarni / dohiylarda / dohiylardan / dohiyim / dohiysi')
end
return tests