Бул бирдикти сыноо модулу Module:ar-nominals.

3 tests failed. (refresh)

Text Expected Actual Differs at
test_decl_arabic:
Passed sfp for مرْآة مرْ￰َيَات/� مرْ￰َيَات/�
Passed sfp for مراة مرَيَات/� مرَيَات/�
Passed sfp for مَرَاة (marāh) مَرَيَات/marayāt مَرَيَات/marayāt
Passed sfp for مُسْتَشْفًى (mustašfan) مُسْتَشْفَيَات/mustašfayāt مُسْتَشْفَيَات/mustašfayāt
Passed sfp for كَاتٍ (kātin) كَاتِيَات/kātiyāt كَاتِيَات/kātiyāt
Passed sfp for ذِكْرَى (ḏikrā) ذِكْرَيَات/ḏikrayāt ذِكْرَيَات/ḏikrayāt
Passed sfp for دُنْيَا (dunyā) دُنْيَيَات/dunyayāt دُنْيَيَات/dunyayāt
Passed sfp for كَامِيرَا (kāmīrā) كَامِيرَات/kāmīrāt كَامِيرَات/kāmīrāt
Passed sfp for كُبْء (kubʔ) كُبْ￰َات/kubʔāt كُبْ￰َات/kubʔāt
Passed sfp for كُوب (kūb) كُوبَات/kūbāt كُوبَات/kūbāt
Passed smp for كَاتٍ (kātin) كَاتُون/kātūn كَاتُون/kātūn
Passed smp for كَتَأ (kataʔ) كَتَ￰ُون/kataʔūn كَتَ￰ُون/kataʔūn
Passed smp for كَتِئ (katiʔ) كَتِ￰ُون/katiʔūn كَتِ￰ُون/katiʔūn
Passed smp for كُبْء (kubʔ) كُبْ￰ُون/kubʔūn كُبْ￰ُون/kubʔūn
Passed smp for مُسْلِم (muslim) مُسْلِمُون/muslimūn مُسْلِمُون/muslimūn
Passed awnp for كَتًى (katan) كَتَوْن/katawn كَتَوْن/katawn
Passed singular دُنْيَا (dunyā) inv inv
Passed plural هَدَايَا (hadāyā) inv inv
Passed singular ذِكْرَى (ḏikrā) inv inv
Failed singular لِيبِيَا (lībiyā) inv lwinv 1
Passed singular كَامِيرَا (kāmīrā) lwinv lwinv
Passed plural لَيَالٍ (layālin) diin diin
Passed plural مَآسٍ (maʔāsin) diin diin
Passed plural أَيْدٍ (ʔaydin) triin triin
Passed singular وَادٍ (wādin) triin triin
Passed singular مُسْتَشْفًى (mustašfan) an an
Passed singular عَصًا (ʕaṣan) an an
Passed plural أَدْنَوْن (ʔadnawn) awnp awnp
Passed plural أَدْنَوْنَ (ʔadnawna) awnp awnp
Passed plural مُسْلِمُون (muslimūn) smp smp
Passed plural مُسْلِمُونَ (muslimūna) smp smp
Passed singular مُسْلِمَة (muslima) tri tri
Passed singular مُسْلِمَةٌ (muslimatun) tri tri
Passed plural مُسْلِمَات (muslimāt) sfp sfp
Passed plural مُسْلِمَاتٌ (muslimātun) sfp sfp
Passed plural فَوَاكِه (fawākih) di di
Passed plural فَوَاكِهُ (fawākihu) di di
Passed plural مَفَاتِيح (mafātīḥ) di di
Passed plural مَقَامّ (maqāmm) di di
Passed plural مَقَامُّ (maqāmmu) di di
Passed plural وُزَرَاء (wuzarāʔ) di di
Passed plural أَصْدِقَاء (ʔaṣdiqāʔ) di di
Passed plural أَقِلَّاء (ʔaqillāʔ) di di
Failed singular كَسْلَان (kaslān) di tri 1
Passed singular قَمْرَاء (qamrāʔ) di di
Failed singular لَفَّاء (laffāʔ) di tri 1
Passed singular أَحْمَر (ʔaḥmar) di di
Passed singular أَلَفّ (ʔalaff) di di
Passed singular آلَم (ʔālam) di di
Passed singular كِتَاب (kitāb) tri tri
Passed plural كُتُب (kutub) tri tri
Passed plural أَفْلَام (ʔaflām) tri tri

-- Unit tests for [[Module:ar-nominals]]. Refresh page to run tests.
local tests = require('Module:UnitTests')
local ar_nominals = require('Module:ar-nominals')

local full_link = require('Module:links').full_link
local Arabic = require("Module:languages").getByCode("ar")
local rsub = mw.ustring.gsub
local u = mw.ustring.char

local BOGUS_CHAR = u(0xFFFD)
local HAMZA_PH = u(0xFFF0)

local function link(form)
	return full_link{term = form, lang = Arabic}
end

local function canon_hamza(form)
	form = rsub(form, "آ", HAMZA_PH .. "َا")
	form = rsub(form, "[ءأئؤ]", HAMZA_PH)
	return form
end

function tests:check_gen_plural(sg, form, outform)
	-- For given singular, detect the declension type ...
	local sgform, sgtype = ar_nominals.stem_and_type(sg, "", "", false, "sg", "noun")
	-- .. then pass in when we need to generate the plural
	local oform, oclass = ar_nominals.stem_and_type(form, sgform, sgtype, false, "pl", "noun")
	return self:equals(form .. " for " .. link(sg), oform, canon_hamza(outform) .. "/" .. ((Arabic:transliterate(outform)) or BOGUS_CHAR))
end

function tests:check_detect(form, outclass, ispl)
	local oform, oclass = ar_nominals.stem_and_type(form, "", "", false, ispl and "pl" or "sg", "noun")
	return self:equals((ispl and "plural " or "singular ") .. link(form), oclass, outclass)
end

function tests:test_decl_arabic()
	local examples1 = {
		{ "مرْآة", "sfp", "مرْأَيَات" },
		{ "مراة", "sfp", "مرَيَات" },
		{ "مَرَاة", "sfp", "مَرَيَات" },
		{ "مُسْتَشْفًى", "sfp", "مُسْتَشْفَيَات" },
		{ "كَاتٍ", "sfp", "كَاتِيَات" },
		{ "ذِكْرَى", "sfp", "ذِكْرَيَات" },
		{ "دُنْيَا", "sfp", "دُنْيَيَات" },
		{ "كَامِيرَا", "sfp", "كَامِيرَات" },
		{ "كُبْء", "sfp", "كُبْآت" },
		{ "كُوب", "sfp", "كُوبَات" },
	
		{ "كَاتٍ", "smp", "كَاتُون" },
		{ "كَتَأ", "smp", "كَتَؤُون" },
		{ "كَتِئ", "smp", "كَتِئُون" },
		{ "كُبْء", "smp", "كُبْؤُون" },
		{ "مُسْلِم", "smp", "مُسْلِمُون" },
	
		{ "كَتًى", "awnp", "كَتَوْن" },
	}
	
	self:iterate(examples1, "check_gen_plural")

	local examples2 = {
		{ "دُنْيَا", "inv" }, -- dunyā "world"
		{ "هَدَايَا", "inv", true }, -- hadāyā "gifts"
		{ "ذِكْرَى", "inv" }, -- ḏikrā "remembrance"
		{ "لِيبِيَا", "inv" }, -- lībiyā "Libya"
		{ "كَامِيرَا", "lwinv" }, -- kāmērā "camera"
		{ "لَيَالٍ", "diin", true }, -- layālin "nights"
		{ "مَآسٍ", "diin", true }, -- maʾāsin "tragedies, dramas"
		{ "أَيْدٍ", "triin", true }, -- ʾaydin "hands"
		{ "وَادٍ", "triin" }, -- wādin "valley"
		{ "مُسْتَشْفًى", "an" }, -- mustašfan "hospital"
		{ "عَصًا", "an" }, -- ʿaṣan "stick"
		{ "أَدْنَوْن", "awnp", true }, -- ʾadnawn "nearer (masc. pl.)"
		{ "أَدْنَوْنَ", "awnp", true }, -- ʾadnawna "nearer (masc. pl.)"
		{ "مُسْلِمُون", "smp", true }, -- muslimūn "Muslims"
		{ "مُسْلِمُونَ", "smp", true }, -- muslimūna "Muslims"
		{ "مُسْلِمَة", "tri" }, -- muslima "Muslim (fem.)"
		{ "مُسْلِمَةٌ", "tri" }, -- muslimatun "Muslim (fem.)"
		{ "مُسْلِمَات", "sfp", true }, -- muslimāt "Muslims (fem.)"
		{ "مُسْلِمَاتٌ", "sfp", true }, -- muslimāti "Muslims (fem.)"
		{ "فَوَاكِه", "di", true }, -- fawākih "fruits"
		{ "فَوَاكِهُ", "di", true }, -- fawākihu "fruits"
		{ "مَفَاتِيح", "di", true }, -- mafātīḥ "keys"
		{ "مَقَامّ", "di", true }, -- maqāmm "brooms"
		{ "مَقَامُّ", "di", true }, -- maqāmmu "brooms"
		{ "وُزَرَاء", "di", true }, -- wuzarāʾ "ministers"
		{ "أَصْدِقَاء", "di", true }, -- ʾaṣdiqāʾ "friends"
		{ "أَقِلَّاء", "di", true }, -- ʾaqillāʾ "small (masc. pl.)"
		{ "كَسْلَان", "di" }, -- kaslān "lazy"
		{ "قَمْرَاء", "di" }, -- qamrāʾ "moon-white, moonlight"
		{ "لَفَّاء", "di" }, -- laffāʾ "plump (fem.)"
		{ "أَحْمَر", "di" }, -- ʾaḥmar "red"
		{ "أَلَفّ", "di" }, -- ʾalaff "plump"
		{ "آلَم", "di" }, -- ʾālam "more painful"
		{ "كِتَاب", "tri" }, -- kitāb "book"
		{ "كُتُب", "tri", true }, -- kutub "books"
		{ "أَفْلَام", "tri", true }, -- ʾaflām "films"
	}
	self:iterate(examples2, "check_detect")
end
 
return tests