Module:ar-nominals/testcases
Appearance
- The following documentation is located at Module:ar-nominals/testcases/documentation. [edit] Categories were auto-generated by Module:module categorization. [edit]
- Useful links: root page • root page’s subpages • links • transclusions • tested module • sandbox
This is the unit-testing module for Module:ar-nominals.
3 of 52 tests failed. (refresh)
Text | Expected | Actual | Differs at | |
---|---|---|---|---|
sfp for مرْآة | مرَْيَات/� | مرَْيَات/� | ||
sfp for مراة | مرَيَات/� | مرَيَات/� | ||
sfp for مَرَاة (marāh) | مَرَيَات/marayāt | مَرَيَات/marayāt | ||
sfp for مُسْتَشْفًى (mustašfan) | مُسْتَشْفَيَات/mustašfayāt | مُسْتَشْفَيَات/mustašfayāt | ||
sfp for كَاتٍ (kātin) | كَاتِيَات/kātiyāt | كَاتِيَات/kātiyāt | ||
sfp for ذِكْرَى (ḏikrā) | ذِكْرَيَات/ḏikrayāt | ذِكْرَيَات/ḏikrayāt | ||
sfp for دُنْيَا (dunyā) | دُنْيَيَات/dunyayāt | دُنْيَيَات/dunyayāt | ||
sfp for كَامِيرَا (kāmīrā) | كَامِيرَات/kāmīrāt | كَامِيرَات/kāmīrāt | ||
sfp for كُبْء (kubʔ) | كُبَْات/kubʔāt | كُبَْات/kubʔāt | ||
sfp for كُوب (kūb) | كُوبَات/kūbāt | كُوبَات/kūbāt | ||
smp for كَاتٍ (kātin) | كَاتُون/kātūn | كَاتُون/kātūn | ||
smp for كَتَأ (kataʔ) | كَتَُون/kataʔūn | كَتَُون/kataʔūn | ||
smp for كَتِئ (katiʔ) | كَتُِون/katiʔūn | كَتُِون/katiʔūn | ||
smp for كُبْء (kubʔ) | كُبُْون/kubʔūn | كُبُْون/kubʔūn | ||
smp for مُسْلِم (muslim) | مُسْلِمُون/muslimūn | مُسْلِمُون/muslimūn | ||
awnp for كَتًى (katan) | كَتَوْن/katawn | كَتَوْن/katawn | ||
singular دُنْيَا (dunyā) | inv | inv | ||
plural هَدَايَا (hadāyā) | inv | inv | ||
singular ذِكْرَى (ḏikrā) | inv | inv | ||
singular لِيبِيَا (lībiyā) | inv | lwinv | 1 | |
singular كَامِيرَا (kāmīrā) | lwinv | lwinv | ||
plural لَيَالٍ (layālin) | diin | diin | ||
plural مَآسٍ (maʔāsin) | diin | diin | ||
plural أَيْدٍ (ʔaydin) | triin | triin | ||
singular وَادٍ (wādin) | triin | triin | ||
singular مُسْتَشْفًى (mustašfan) | an | an | ||
singular عَصًا (ʕaṣan) | an | an | ||
plural أَدْنَوْن (ʔadnawn) | awnp | awnp | ||
plural أَدْنَوْنَ (ʔadnawna) | awnp | awnp | ||
plural مُسْلِمُون (muslimūn) | smp | smp | ||
plural مُسْلِمُونَ (muslimūna) | smp | smp | ||
singular مُسْلِمَة (muslima) | tri | tri | ||
singular مُسْلِمَةٌ (muslimatun) | tri | tri | ||
plural مُسْلِمَات (muslimāt) | sfp | sfp | ||
plural مُسْلِمَاتٌ (muslimātun) | sfp | sfp | ||
plural فَوَاكِه (fawākih) | di | di | ||
plural فَوَاكِهُ (fawākihu) | di | di | ||
plural مَفَاتِيح (mafātīḥ) | di | di | ||
plural مَقَامّ (maqāmm) | di | di | ||
plural مَقَامُّ (maqāmmu) | di | di | ||
plural وُزَرَاء (wuzarāʔ) | di | di | ||
plural أَصْدِقَاء (ʔaṣdiqāʔ) | di | di | ||
plural أَقِلَّاء (ʔaqillāʔ) | di | di | ||
singular كَسْلَان (kaslān) | di | tri | 1 | |
singular قَمْرَاء (qamrāʔ) | di | di | ||
singular لَفَّاء (laffāʔ) | di | tri | 1 | |
singular أَحْمَر (ʔaḥmar) | di | di | ||
singular أَلَفّ (ʔalaff) | di | di | ||
singular آلَم (ʔālam) | di | di | ||
singular كِتَاب (kitāb) | tri | tri | ||
plural كُتُب (kutub) | tri | tri | ||
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