local tests = require("Module:UnitTests")
local m_IPA = require("Module:ar-pronunciation")
local function tag_IPA(IPA)
return '<span class="IPA">' .. IPA .. '</span>'
end
local function not_Latin(text)
return not string.find(text, "[a-z]")
end
local options = { display = tag_IPA, show_difference = true }
function tests:check_output(term, expected, comment)
options.comment = comment
local is_Arabic = not_Latin(term)
self:equals(
is_Arabic and m_IPA.link(term) or term,
m_IPA.toIPA(is_Arabic and { Arabic = term } or { tr = term}, true),
expected,
options
)
end
function tests:test_Arabic()
local examples = {
{ "طَبَّ", "tˤab.ba" },
{ "رُوسِيَا", "ruː.si.jaː" },
{ "أَنْتَ", "ʔan.ta" },
{ "ذٰلِكَ", "ðaː.li.ka" },
{ "صَغِير", "sˤa.ɣiːr" },
{ "إِصْبَع", "ʔisˤ.baʕ" },
{ "عَلَى", "ʕa.laː" },
{ "جَزِيرَة", "d͡ʒa.ziː.ra" },
{ "أَرْبَعَة", "ʔar.ba.ʕa" },
{ "حُبّ", "ħubb" },
{ "عَرَبِيّ", "ʕa.ra.bijj" },
{ "خَاصّ", "xaːsˤsˤ" },
{ "خَاصَّة", "xaːsˤ.sˤa" },
{ "يَوْمُ ٱلِٱثْنَيْنِ", "jaw.mu liθ.naj.ni", "" },
{ "تُدُووِلَ", "tu.duː.wi.la" },
"Allah",
{ "اللّٰه", "aɫ.ɫaːh", "special case" },
{ "عَبْدُ اللّٰه", "ʕab.du‿ɫ.ɫaːh", "special case" },
{ "لِلّٰه", "lil.laːh", "special case of the special case" },
"Phrases",
{
"الْمَمْلَكَة الْعَرَبِيَّة السُّعُودِيَّة",
"al.mam.la.ka‿l.ʕa.ra.bij.ja‿s.su.ʕuː.dij.ja"
},
{"مَعَ اَلسَّلَامَة", "ma.ʕa‿s.sa.laː.ma"},
{
"لٰكِنَّ الرَّئِيسَ كَانَ أَذْكَى مِمَّا تَوَقَّعَ النَّاسُ",
"laː.kin.na‿r.ra.ʔiː.sa kaː.na ʔað.kaː mim.maː ta.waq.qa.ʕa‿n.naː.su"
},
{ "بِسْمِ اللهِ الرَّحْمٰنِ الرَّحِيمِ", "bis.mi‿l.laː.hi‿r.raħ.maː.ni‿r.ra.ħiː.mi" },
{ "إِنْ شَاءَ ٱللَٰهُ", "ʔin ʃaː.ʔa‿ɫ.ɫaː.hu" },
{ "بِٱلْهَنَاءِ وَٱلشِّفَاء", "bil.ha.naː.ʔi waʃ.ʃi.faːʔ" },
"vowel shortening",
{ "فِي الْبَيْت", "fi‿l.bajt" },
{ "مَا ٱسْمُك", "ma‿s.muk" },
{ "ذُو الْقَرْنَيْن", "ðu‿l.qar.najn" },
{ "إِلَّا الله", "ʔil.la‿ɫ.ɫaːh" },
{ "فِي ٱتِّحَادِنَا", "fi‿t.ti.ħaː.di.naː" },
{ "فِي الله", "fi‿l.laːh" },
--[[ Copy the following to add more examples:
{ "", "" },
]]
}
self:iterate(examples, "check_output")
end
function tests:test1_transliteration()
local examples = {
{ "tilivizyōn", "ti.li.viz.joːn" },
{ "ʾinglīziyy", "ʔinɡliː.zijj" },
--[[ Copy the following to add more examples:
{ "", "" },
]]
}
self:iterate(examples, "check_output")
end
return tests