Open main menu

Module:User:Vitalik/inflection/units/uz-noun/testcases

NavigationEdit

Active version Development version
  M:inflection     {{inflection}}     M:*/inflection     {{*/inflection}}  

Development version:

unit testcases main template table template
  M:*/inflection/units/ru-noun @     M:*/.../testcases @     {{*/ru-decl-noun-z}} @     {{*/ru-decl-noun-table-z}} @  
  M:*/inflection/units/uz-noun     M:*/.../testcases     {{*/uz-decl-noun}}     {{*/uz-decl-noun-table}}  

All tests passed. (refresh)

Text Expected Actual Differs at
test_inflection:
Passed 1.01) kitob (type="") nom_sg kitob kitob
Passed 1.02) kitob (type="") gen_sg kitobning kitobning
Passed 1.03) kitob (type="") dat_sg kitobga kitobga
Passed 1.04) kitob (type="") acc_sg kitobni kitobni
Passed 1.05) kitob (type="") loc_sg kitobda kitobda
Passed 1.06) kitob (type="") abl_sg kitobdan kitobdan
Passed 1.07) kitob (type="") nom_pl kitoblar kitoblar
Passed 1.08) kitob (type="") gen_pl kitoblarning kitoblarning
Passed 1.09) kitob (type="") dat_pl kitoblarga kitoblarga
Passed 1.10) kitob (type="") acc_pl kitoblarni kitoblarni
Passed 1.11) kitob (type="") loc_pl kitoblarda kitoblarda
Passed 1.12) kitob (type="") abl_pl kitoblardan kitoblardan
Passed 1.13) kitob (type="") nom_sg_possessive_1sg kitobim kitobim
Passed 1.14) kitob (type="") gen_sg_possessive_1sg kitobimning kitobimning
Passed 1.15) kitob (type="") dat_sg_possessive_1sg kitobimga kitobimga
Passed 1.16) kitob (type="") acc_sg_possessive_1sg kitobimni kitobimni
Passed 1.17) kitob (type="") loc_sg_possessive_1sg kitobimda kitobimda
Passed 1.18) kitob (type="") abl_sg_possessive_1sg kitobimdan kitobimdan
Passed 1.19) kitob (type="") nom_sg_possessive_2sg kitobing kitobing
Passed 1.20) kitob (type="") gen_sg_possessive_2sg kitobingning kitobingning
Passed 1.21) kitob (type="") dat_sg_possessive_2sg kitobingga kitobingga
Passed 1.22) kitob (type="") acc_sg_possessive_2sg kitobingni kitobingni
Passed 1.23) kitob (type="") loc_sg_possessive_2sg kitobingda kitobingda
Passed 1.24) kitob (type="") abl_sg_possessive_2sg kitobingdan kitobingdan
Passed 1.25) kitob (type="") nom_sg_possessive_3sg kitobi kitobi
Passed 1.26) kitob (type="") gen_sg_possessive_3sg kitobining kitobining
Passed 1.27) kitob (type="") dat_sg_possessive_3sg kitobiga kitobiga
Passed 1.28) kitob (type="") acc_sg_possessive_3sg kitobini kitobini
Passed 1.29) kitob (type="") loc_sg_possessive_3sg kitobida kitobida
Passed 1.30) kitob (type="") abl_sg_possessive_3sg kitobidan kitobidan
Passed 1.31) kitob (type="") nom_sg_possessive_1pl kitobimiz kitobimiz
Passed 1.32) kitob (type="") gen_sg_possessive_1pl kitobimizning kitobimizning
Passed 1.33) kitob (type="") dat_sg_possessive_1pl kitobimizga kitobimizga
Passed 1.34) kitob (type="") acc_sg_possessive_1pl kitobimizni kitobimizni
Passed 1.35) kitob (type="") loc_sg_possessive_1pl kitobimizda kitobimizda
Passed 1.36) kitob (type="") abl_sg_possessive_1pl kitobimizdan kitobimizdan
Passed 1.37) kitob (type="") nom_sg_possessive_2pl kitobingiz kitobingiz
Passed 1.38) kitob (type="") gen_sg_possessive_2pl kitobingizning kitobingizning
Passed 1.39) kitob (type="") dat_sg_possessive_2pl kitobingizga kitobingizga
Passed 1.40) kitob (type="") acc_sg_possessive_2pl kitobingizni kitobingizni
Passed 1.41) kitob (type="") loc_sg_possessive_2pl kitobingizda kitobingizda
Passed 1.42) kitob (type="") abl_sg_possessive_2pl kitobingizdan kitobingizdan
Passed 1.43) kitob (type="") nom_sg_possessive_3pl kitobi kitobi
Passed 1.44) kitob (type="") gen_sg_possessive_3pl kitobining kitobining
Passed 1.45) kitob (type="") dat_sg_possessive_3pl kitobiga kitobiga
Passed 1.46) kitob (type="") acc_sg_possessive_3pl kitobini kitobini
Passed 1.47) kitob (type="") loc_sg_possessive_3pl kitobida kitobida
Passed 1.48) kitob (type="") abl_sg_possessive_3pl kitobidan kitobidan
Passed 1.49) kitob (type="") nom_pl_possessive_1sg kitoblarim kitoblarim
Passed 1.50) kitob (type="") gen_pl_possessive_1sg kitoblarimning kitoblarimning
Passed 1.51) kitob (type="") dat_pl_possessive_1sg kitoblarimga kitoblarimga
Passed 1.52) kitob (type="") acc_pl_possessive_1sg kitoblarimni kitoblarimni
Passed 1.53) kitob (type="") loc_pl_possessive_1sg kitoblarimda kitoblarimda
Passed 1.54) kitob (type="") abl_pl_possessive_1sg kitoblarimdan kitoblarimdan
Passed 1.55) kitob (type="") nom_pl_possessive_2sg kitoblaring kitoblaring
Passed 1.56) kitob (type="") gen_pl_possessive_2sg kitoblaringning kitoblaringning
Passed 1.57) kitob (type="") dat_pl_possessive_2sg kitoblaringga kitoblaringga
Passed 1.58) kitob (type="") acc_pl_possessive_2sg kitoblaringni kitoblaringni
Passed 1.59) kitob (type="") loc_pl_possessive_2sg kitoblaringda kitoblaringda
Passed 1.60) kitob (type="") abl_pl_possessive_2sg kitoblaringdan kitoblaringdan
Passed 1.61) kitob (type="") nom_pl_possessive_3sg kitoblari kitoblari
Passed 1.62) kitob (type="") gen_pl_possessive_3sg kitoblarining kitoblarining
Passed 1.63) kitob (type="") dat_pl_possessive_3sg kitoblariga kitoblariga
Passed 1.64) kitob (type="") acc_pl_possessive_3sg kitoblarini kitoblarini
Passed 1.65) kitob (type="") loc_pl_possessive_3sg kitoblarida kitoblarida
Passed 1.66) kitob (type="") abl_pl_possessive_3sg kitoblaridan kitoblaridan
Passed 1.67) kitob (type="") nom_pl_possessive_1pl kitoblarimiz kitoblarimiz
Passed 1.68) kitob (type="") gen_pl_possessive_1pl kitoblarimizning kitoblarimizning
Passed 1.69) kitob (type="") dat_pl_possessive_1pl kitoblarimizga kitoblarimizga
Passed 1.70) kitob (type="") acc_pl_possessive_1pl kitoblarimizni kitoblarimizni
Passed 1.71) kitob (type="") loc_pl_possessive_1pl kitoblarimizda kitoblarimizda
Passed 1.72) kitob (type="") abl_pl_possessive_1pl kitoblarimizdan kitoblarimizdan
Passed 1.73) kitob (type="") nom_pl_possessive_2pl kitoblaringiz kitoblaringiz
Passed 1.74) kitob (type="") gen_pl_possessive_2pl kitoblaringizning kitoblaringizning
Passed 1.75) kitob (type="") dat_pl_possessive_2pl kitoblaringizga kitoblaringizga
Passed 1.76) kitob (type="") acc_pl_possessive_2pl kitoblaringizni kitoblaringizni
Passed 1.77) kitob (type="") loc_pl_possessive_2pl kitoblaringizda kitoblaringizda
Passed 1.78) kitob (type="") abl_pl_possessive_2pl kitoblaringizdan kitoblaringizdan
Passed 1.79) kitob (type="") nom_pl_possessive_3pl kitoblari kitoblari
Passed 1.80) kitob (type="") gen_pl_possessive_3pl kitoblarining kitoblarining
Passed 1.81) kitob (type="") dat_pl_possessive_3pl kitoblariga kitoblariga
Passed 1.82) kitob (type="") acc_pl_possessive_3pl kitoblarini kitoblarini
Passed 1.83) kitob (type="") loc_pl_possessive_3pl kitoblarida kitoblarida
Passed 1.84) kitob (type="") abl_pl_possessive_3pl kitoblaridan kitoblaridan
Passed 2.01) mavzu (type="yisi") nom_sg mavzu mavzu
Passed 2.02) mavzu (type="yisi") gen_sg mavzuning mavzuning
Passed 2.03) mavzu (type="yisi") dat_sg mavzuga mavzuga
Passed 2.04) mavzu (type="yisi") acc_sg mavzuni mavzuni
Passed 2.05) mavzu (type="yisi") loc_sg mavzuda mavzuda
Passed 2.06) mavzu (type="yisi") abl_sg mavzudan mavzudan
Passed 2.07) mavzu (type="yisi") nom_pl mavzular mavzular
Passed 2.08) mavzu (type="yisi") gen_pl mavzularning mavzularning
Passed 2.09) mavzu (type="yisi") dat_pl mavzularga mavzularga
Passed 2.10) mavzu (type="yisi") acc_pl mavzularni mavzularni
Passed 2.11) mavzu (type="yisi") loc_pl mavzularda mavzularda
Passed 2.12) mavzu (type="yisi") abl_pl mavzulardan mavzulardan
Passed 2.13) mavzu (type="yisi") nom_sg_possessive_1sg mavzuyim mavzuyim
Passed 2.14) mavzu (type="yisi") nom_sg_possessive_3sg mavzusi mavzusi
Passed 3.01) parvo (type="yiyi") nom_sg parvo parvo
Passed 3.02) parvo (type="yiyi") gen_sg parvoning parvoning
Passed 3.03) parvo (type="yiyi") dat_sg parvoga parvoga
Passed 3.04) parvo (type="yiyi") acc_sg parvoni parvoni
Passed 3.05) parvo (type="yiyi") loc_sg parvoda parvoda
Passed 3.06) parvo (type="yiyi") abl_sg parvodan parvodan
Passed 3.07) parvo (type="yiyi") nom_pl parvolar parvolar
Passed 3.08) parvo (type="yiyi") gen_pl parvolarning parvolarning
Passed 3.09) parvo (type="yiyi") dat_pl parvolarga parvolarga
Passed 3.10) parvo (type="yiyi") acc_pl parvolarni parvolarni
Passed 3.11) parvo (type="yiyi") loc_pl parvolarda parvolarda
Passed 3.12) parvo (type="yiyi") abl_pl parvolardan parvolardan
Passed 3.13) parvo (type="yiyi") nom_sg_possessive_1sg parvoyim parvoyim
Passed 3.14) parvo (type="yiyi") nom_sg_possessive_3sg parvoyi parvoyi
Passed 4.01) ishtirok (type="kq") nom_sg ishtirok ishtirok
Passed 4.02) ishtirok (type="kq") gen_sg ishtirokning ishtirokning
Passed 4.03) ishtirok (type="kq") dat_sg ishtirokka ishtirokka
Passed 4.04) ishtirok (type="kq") acc_sg ishtirokni ishtirokni
Passed 4.05) ishtirok (type="kq") loc_sg ishtirokda ishtirokda
Passed 4.06) ishtirok (type="kq") abl_sg ishtirokdan ishtirokdan
Passed 4.07) ishtirok (type="kq") nom_pl ishtiroklar ishtiroklar
Passed 4.08) ishtirok (type="kq") gen_pl ishtiroklarning ishtiroklarning
Passed 4.09) ishtirok (type="kq") dat_pl ishtiroklarga ishtiroklarga
Passed 4.10) ishtirok (type="kq") acc_pl ishtiroklarni ishtiroklarni
Passed 4.11) ishtirok (type="kq") loc_pl ishtiroklarda ishtiroklarda
Passed 4.12) ishtirok (type="kq") abl_pl ishtiroklardan ishtiroklardan
Passed 4.13) ishtirok (type="kq") nom_sg_possessive_1sg ishtirokim ishtirokim
Passed 4.14) ishtirok (type="kq") nom_sg_possessive_3sg ishtiroki ishtiroki
Passed 5.01) huquq (type="kq") nom_sg huquq huquq
Passed 5.02) huquq (type="kq") gen_sg huquqning huquqning
Passed 5.03) huquq (type="kq") dat_sg huquqqa huquqqa
Passed 5.04) huquq (type="kq") acc_sg huquqni huquqni
Passed 5.05) huquq (type="kq") loc_sg huquqda huquqda
Passed 5.06) huquq (type="kq") abl_sg huquqdan huquqdan
Passed 5.07) huquq (type="kq") nom_pl huquqlar huquqlar
Passed 5.08) huquq (type="kq") gen_pl huquqlarning huquqlarning
Passed 5.09) huquq (type="kq") dat_pl huquqlarga huquqlarga
Passed 5.10) huquq (type="kq") acc_pl huquqlarni huquqlarni
Passed 5.11) huquq (type="kq") loc_pl huquqlarda huquqlarda
Passed 5.12) huquq (type="kq") abl_pl huquqlardan huquqlardan
Passed 5.13) huquq (type="kq") nom_sg_possessive_1sg huquqim huquqim
Passed 5.14) huquq (type="kq") nom_sg_possessive_3sg huquqi huquqi
Passed 6.01) qorin (type="reduced") nom_sg qorin qorin
Passed 6.02) qorin (type="reduced") gen_sg qorinning qorinning
Passed 6.03) qorin (type="reduced") dat_sg qoringa qoringa
Passed 6.04) qorin (type="reduced") acc_sg qorinni qorinni
Passed 6.05) qorin (type="reduced") loc_sg qorinda qorinda
Passed 6.06) qorin (type="reduced") abl_sg qorindan qorindan
Passed 6.07) qorin (type="reduced") nom_pl qorinlar qorinlar
Passed 6.08) qorin (type="reduced") gen_pl qorinlarning qorinlarning
Passed 6.09) qorin (type="reduced") dat_pl qorinlarga qorinlarga
Passed 6.10) qorin (type="reduced") acc_pl qorinlarni qorinlarni
Passed 6.11) qorin (type="reduced") loc_pl qorinlarda qorinlarda
Passed 6.12) qorin (type="reduced") abl_pl qorinlardan qorinlardan
Passed 6.13) qorin (type="reduced") nom_sg_possessive_1sg qornim qornim
Passed 6.14) qorin (type="reduced") nom_sg_possessive_3sg qorni qorni
Passed 7.01) metall (type="") nom_sg metall metall
Passed 7.02) metall (type="") gen_sg metallning metallning
Passed 7.03) metall (type="") dat_sg metallga metallga
Passed 7.04) metall (type="") acc_sg metallni metallni
Passed 7.05) metall (type="") loc_sg metallda metallda
Passed 7.06) metall (type="") abl_sg metalldan metalldan
Passed 7.07) metall (type="") nom_pl metallar metallar
Passed 7.08) metall (type="") gen_pl metallarning metallarning
Passed 7.09) metall (type="") dat_pl metallarga metallarga
Passed 7.10) metall (type="") acc_pl metallarni metallarni
Passed 7.11) metall (type="") loc_pl metallarda metallarda
Passed 7.12) metall (type="") abl_pl metallardan metallardan
Passed 7.13) metall (type="") nom_sg_possessive_1sg metallim metallim
Passed 7.14) metall (type="") nom_sg_possessive_3sg metalli metalli
Passed 8.01) bobo (type="std") nom_sg bobo bobo
Passed 8.02) bobo (type="std") gen_sg boboning boboning
Passed 8.03) bobo (type="std") dat_sg boboga boboga
Passed 8.04) bobo (type="std") acc_sg boboni boboni
Passed 8.05) bobo (type="std") loc_sg boboda boboda
Passed 8.06) bobo (type="std") abl_sg bobodan bobodan
Passed 8.07) bobo (type="std") nom_pl bobolar bobolar
Passed 8.08) bobo (type="std") gen_pl bobolarning bobolarning
Passed 8.09) bobo (type="std") dat_pl bobolarga bobolarga
Passed 8.10) bobo (type="std") acc_pl bobolarni bobolarni
Passed 8.11) bobo (type="std") loc_pl bobolarda bobolarda
Passed 8.12) bobo (type="std") abl_pl bobolardan bobolardan
Passed 8.13) bobo (type="std") nom_sg_possessive_1sg bobom bobom
Passed 8.14) bobo (type="std") nom_sg_possessive_3sg bobosi bobosi
Passed 9.01) tilak (type="std") nom_sg tilak tilak
Passed 9.02) tilak (type="std") gen_sg tilakning tilakning
Passed 9.03) tilak (type="std") dat_sg tilakka tilakka
Passed 9.04) tilak (type="std") acc_sg tilakni tilakni
Passed 9.05) tilak (type="std") loc_sg tilakda tilakda
Passed 9.06) tilak (type="std") abl_sg tilakdan tilakdan
Passed 9.07) tilak (type="std") nom_pl tilaklar tilaklar
Passed 9.08) tilak (type="std") gen_pl tilaklarning tilaklarning
Passed 9.09) tilak (type="std") dat_pl tilaklarga tilaklarga
Passed 9.10) tilak (type="std") acc_pl tilaklarni tilaklarni
Passed 9.11) tilak (type="std") loc_pl tilaklarda tilaklarda
Passed 9.12) tilak (type="std") abl_pl tilaklardan tilaklardan
Passed 9.13) tilak (type="std") nom_sg_possessive_1sg tilagim tilagim
Passed 9.14) tilak (type="std") nom_sg_possessive_3sg tilagi tilagi
Passed 10.01) tayoq (type="std") nom_sg tayoq tayoq
Passed 10.02) tayoq (type="std") gen_sg tayoqning tayoqning
Passed 10.03) tayoq (type="std") dat_sg tayoqqa tayoqqa
Passed 10.04) tayoq (type="std") acc_sg tayoqni tayoqni
Passed 10.05) tayoq (type="std") loc_sg tayoqda tayoqda
Passed 10.06) tayoq (type="std") abl_sg tayoqdan tayoqdan
Passed 10.07) tayoq (type="std") nom_pl tayoqlar tayoqlar
Passed 10.08) tayoq (type="std") gen_pl tayoqlarning tayoqlarning
Passed 10.09) tayoq (type="std") dat_pl tayoqlarga tayoqlarga
Passed 10.10) tayoq (type="std") acc_pl tayoqlarni tayoqlarni
Passed 10.11) tayoq (type="std") loc_pl tayoqlarda tayoqlarda
Passed 10.12) tayoq (type="std") abl_pl tayoqlardan tayoqlardan
Passed 10.13) tayoq (type="std") nom_sg_possessive_1sg tayogʻim tayogʻim
Passed 10.14) tayoq (type="std") nom_sg_possessive_3sg tayogʻi tayogʻi
Passed 11.01) obroʻ (type="yiyi") nom_sg obroʻ obroʻ
Passed 11.02) obroʻ (type="yiyi") gen_sg obroʻning obroʻning
Passed 11.03) obroʻ (type="yiyi") dat_sg obroʻga obroʻga
Passed 11.04) obroʻ (type="yiyi") acc_sg obroʻni obroʻni
Passed 11.05) obroʻ (type="yiyi") loc_sg obroʻda obroʻda
Passed 11.06) obroʻ (type="yiyi") abl_sg obroʻdan obroʻdan
Passed 11.07) obroʻ (type="yiyi") nom_pl obroʻlar obroʻlar
Passed 11.08) obroʻ (type="yiyi") gen_pl obroʻlarning obroʻlarning
Passed 11.09) obroʻ (type="yiyi") dat_pl obroʻlarga obroʻlarga
Passed 11.10) obroʻ (type="yiyi") acc_pl obroʻlarni obroʻlarni
Passed 11.11) obroʻ (type="yiyi") loc_pl obroʻlarda obroʻlarda
Passed 11.12) obroʻ (type="yiyi") abl_pl obroʻlardan obroʻlardan
Passed 11.13) obroʻ (type="yiyi") nom_sg_possessive_1sg obroʻyim obroʻyim
Passed 11.14) obroʻ (type="yiyi") nom_sg_possessive_3sg obroʻyi obroʻyi
Passed 12.01) dohiy (type="") nom_sg dohiy dohiy
Passed 12.02) dohiy (type="") gen_sg dohiyning dohiyning
Passed 12.03) dohiy (type="") dat_sg dohiyga dohiyga
Passed 12.04) dohiy (type="") acc_sg dohiyni dohiyni
Passed 12.05) dohiy (type="") loc_sg dohiyda dohiyda
Passed 12.06) dohiy (type="") abl_sg dohiydan dohiydan
Passed 12.07) dohiy (type="") nom_pl dohiylar dohiylar
Passed 12.08) dohiy (type="") gen_pl dohiylarning dohiylarning
Passed 12.09) dohiy (type="") dat_pl dohiylarga dohiylarga
Passed 12.10) dohiy (type="") acc_pl dohiylarni dohiylarni
Passed 12.11) dohiy (type="") loc_pl dohiylarda dohiylarda
Passed 12.12) dohiy (type="") abl_pl dohiylardan dohiylardan
Passed 12.13) dohiy (type="") nom_sg_possessive_1sg dohiyim dohiyim
Passed 12.14) dohiy (type="") nom_sg_possessive_3sg dohiysi dohiysi

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