Module:fa-IPA/sandbox/testcases

local tests = require("Module:UnitTests") local m_IPA = require("Module:fa-IPA/sandbox")

local sc_fa = require("Module:scripts").getByCode("fa-Arab") local sc_tg = require("Module:scripts").getByCode("Cyrl") local lang_fa = require("Module:languages").getByCode("fa") local lang_tg = require("Module:languages").getByCode("tg")

local options = { display = tag_IPA, show_difference = true }

function link(term) return require("Module:links").full_link { term = term, lang = lang_fa, sc = sc_fa } end

function link_tg(term) return require("Module:links").full_link { term = term, lang = lang_tg, sc = sc_tg } end

local function tag_IPA(IPA) return ' ' .. IPA .. ' ' end

function tests:check_output_fa(term, romanisation, expected) self:equals(		link(term),		tag_IPA(m_IPA.fa_IPA(romanisation, false)),		tag_IPA(expected),		options	) end

function tests:check_output_fa_phonetic(term, romanisation, expected) self:equals(		link(term),		tag_IPA(m_IPA.fa_IPA(romanisation, true)),		tag_IPA(expected),		options	) end

function tests:check_output_fa_cls(term, romanisation, expected) self:equals(		link(term),		tag_IPA(m_IPA.fa_cls_IPA(romanisation)),		tag_IPA(expected)	) end

function tests:check_output_tg(term, romanisation, expected) self:equals(		link_tg(term),		tag_IPA(m_IPA.tg_IPA(romanisation)),		tag_IPA(expected),		options	) end

function tests:check_output_prs(term, romanisation, expected) self:equals(		link(term),		tag_IPA(m_IPA.prs_IPA(romanisation)),		tag_IPA(expected),		options	) end

function tests:test_classical_persian examples = { { "سانسکریت", "sānskrīt", "sɑːns.kᵊ.ɾiːt"},-- complex syllabification test { "خوش", "xwaš", "xʷaʃ"}, { "خواب", "xwāb", "xʷɑːβ"}, { "ابرنواختر", "abarnaw.ax`tar", "ʔa.βaɾ.naw.ʔax.ˈtaɾ"}, { "ابراهیم", "ibrā`hīm", "ʔiβ.ɾɑː.ˈhiːm"}, { "امام", "i`mām", "ʔi.ˈmɑːm"}, { "پیشوا", "pēš`vā", "peːʃ.ˈwɑː"}, { "نو", "naw", "naw"}, { "مستعمره", "musta'ma`ra", "mus.taʔ.ma.ˈɾa"}, { "آزاد", "ā`zād", "ʔɑː.ˈzɑːð"}, { "دادن", "dā`dan", "dɑː.ˈðan"}, { "قول", "qawl", "qawl"}, { "دولت", "dawlat", "daw.lat"}, { "آخور", "āxwar", "ʔɑː.xʷaɾ"}, { "لغو", "lağw", "laɣw"}, { "معتدل", "mu'tadil", "muʔ.ta.ðil"}, { "خوی", "xway", "xʷaj"}, { "خوید", "xwēd", "xʷeːð"}, } --	Copy the following to add more examples:		{ "", "", ""}, tests:iterate(examples, "check_output_fa_cls") end

function tests:test_dari_persian examples = { { "خوش", "xwaš", "xʊʃ"}, { "خواب", "xwāb", "xɑːb"}, { "خواهر", "`xʷā.har", "xʷɑ́ː.ɦäɾ"}, { "ابرنواختر", "abarnaw.ax`tar", "ʔä.bäɾ.näw.ʔäx.t̪ʰǽɾ"}, { "ابراهیم", "ibrā`hīm", "ʔɪb.ɾɑː.ɦíːm"}, { "امام", "i`mām", "ʔɪ.mɑ́ːm"}, { "پیشوا", "pēš`vā", "pʰeːʃ.wɑ́ː"}, { "نو", "naw", "näw"}, { "مستعمره", "musta'ma`ra", "mʊs.t̪ʰäʔ.mä.ɾǽ"}, { "آزاد", "ā`zād", "ʔɑː.zɑ́ːd̪"}, { "قول", "qawl", "qäwl"}, { "دولت", "dawlat", "d̪äw.lät̪"}, { "آخور", "āxwar", "ʔɑː.xʊɾ"}, { "لغو", "lağw", "läɣw"}, { "گور", "gawr", "ɡäwɾ"}, { "معتدل", "mu'tadil", "mo̞ʔ.t̪ʰä.d̪ɪl"}, { "خوی", "xway", "xʊj"}, { "خوید", "xwēd", "xeːd̪"}, } --	Copy the following to add more examples:		{ "", "", ""}, tests:iterate(examples, "check_output_prs") end

--	Copy the following to add more examples:		{ "", "", ""},

function tests:test_phonetic_iranian_persian examples = { { "توپ", "tōp", "t̪ʰuːp"}, { "دبستان", "dabis.tān", "d̪æ.bes.t̪ʰɒːn"}, { "کار", "kār", "kʰɒːɹ"}, { "کمی", "`kamē", "cʰǽ.miː"}, { "گیج", "gēj", "ɟiː.d̥͡ʒ̥"}, { "گل", "gul", "ɡ̥ol̥"}, { "چند", "čand", "t͡ʃʰæn̪d̪̥"}, { "کتابچه", "kitābča", "cʰe.t̪ʰɒːb.t͡ʃʰe"}, { "سگ", "sag", "sæɟ̥"}, { "عشق", "išq", "ʔeʃq"}, { "قلب", "qalb", "qælb̥"}, { "غزال", "ğazāl", "qæ.zɒːl̥"}, { "گاو", "gāw", "ɡ̥ɒːv"}, { "موسیقی", "mūsīqī", "muː.siː.ʁiː"}, { "نقطه", "nuqta", "nox.t̪ʰe"}, { "آهنگ", "āhang", "ʔɒː.ɦæɲɟ̥"}, { "سمفونی", "samfunī", "sæɱ.fo.niː"}, { "زنبور", "zanbūr", "zæm.buːɹ"}, { "انواع", "anwā'", "ʔæɱ.vɒːʔ"}, { "انگور", "angūr", "ʔæŋ.ɡuːɹ"}, { "عنقا", "anqā", "ʔæɴ.ɢɒː"}, { "اصل", "asl", "ʔæsɬ"}, } --	Copy the following to add more examples:		{ "", "", ""}, tests:iterate(examples, "check_output_fa_phonetic") end

function tests:test_tajik examples = { { "хуш", "xwaš", "χuʃ"}, { "хоб", "xwāb", "χɔb"}, { "абарнавахтар", "abarnaw.ax`tar", "ʔä.bäɾ.näw.ʔäχ.t̪ʰǽɾ"}, { "Иброҳим", "ibrā`hīm", "ʔib.ɾɔ.ɦím"}, { "имом", "i`mām", "ʔi.mɔ́m"}, { "пешво", "pēš`vā", "pʰeʃ.vɔ́"}, { "нав", "naw", "näw"}, { "мустаъмара", "musta'ma`ra", "mus.t̪ʰäʔ.mä.ɾǽ"}, { "фoтеҳ", "fā`tih", "fɔ.t̪ʰéʱ"}, { "диҳад", "di`had", "d̪i.ɦǽd̪"}, { "фасеҳ", "fa`sīh", "fä.séʱ"}, { "васеъ", "va`sī\'", "vä.séʔ"}, { "охур", "āxwar", "ʔɔ.χuɾ"}, { "лағв", "lağw", "läʁw"}, { "биҳишт", "bihišt", "bi.ɦiʃt̪"}, { "мӯътадил", "mu'tadil", "mɵʔ.t̪ʰä.d̪il"}, { "хуй", "xway", "χuj"}, { "хед", "xwēd", "χed̪"}, } --	Copy the following to add more examples:		{ "", "", ""}, tests:iterate(examples, "check_output_tg") end

return tests