Module:it-pronunciation/testcases

30 tests failed. (refresh)

Text Expected Actual
test_to_phonemic:
Passed càne ˈka.ne ˈka.ne
Passed bène ˈbɛ.ne ˈbɛ.ne
Passed sóno ˈso.no ˈso.no
Passed sòno ˈsɔ.no ˈsɔ.no
Failed ho ɔ o
Passed all' all all
English letter sequences
Passed smoking ˈzmo.kiŋ ˈzmo.kiŋ
Failed gangster ˈgaŋ.ster ˈɡan.ɡster
Passed hòckey ˈɔ.ke.i ˈɔ.ke.i
Passed hockeìstico o.keˈis.ti.ko o.keˈis.ti.ko
Passed crawl krɔl krɔl
y
Passed yo-yo ˈjo.jo ˈjo.jo
Passed whisky ˈwis.ki ˈwis.ki
x
Passed Craxi ˈkrak.si ˈkrak.si
-izzare
Passed analizzare a.na.lidˈd͡za.re a.na.lidˈd͡za.re
Passed nazionalizzare nat.t͡sjo.na.lidˈd͡za.re nat.t͡sjo.na.lidˈd͡za.re
Passed zonizzare (all z sequences are voiced) d͡zo.nidˈd͡za.re d͡zo.nidˈd͡za.re
Passed rizzare ritˈt͡sa.re ritˈt͡sa.re
c, g, sc
Passed cèlo ˈt͡ʃɛ.lo ˈt͡ʃɛ.lo
Passed ciaccòna t͡ʃakˈkɔ.na t͡ʃakˈkɔ.na
Passed fàccio ˈfat.t͡ʃo ˈfat.t͡ʃo
Passed che ke ke
Passed òcchio ˈɔk.kjo ˈɔk.kjo
Passed òcchi ˈɔk.ki ˈɔk.ki
Passed òggi ˈɔd.d͡ʒi ˈɔd.d͡ʒi
Passed Sciàlpi ˈʃal.pi ˈʃal.pi
Passed lasciàre laʃˈʃa.re laʃˈʃa.re
Passed scleràre skleˈra.re skleˈra.re
Passed ùscio ˈuʃ.ʃo ˈuʃ.ʃo
gn, gl
Passed ógni ˈoɲ.ɲi ˈoɲ.ɲi
Passed gnòcco ˈɲɔk.ko ˈɲɔk.ko
Passed gnagnà ɲaɲˈɲa ɲaɲˈɲa
Passed vòglio ˈvɔʎ.ʎo ˈvɔʎ.ʎo
Passed gli ʎi ʎi
Failed inglése inˈɡle.se inˈɡle.ze
ng, nq, nch
Passed anche ˈan.ke ˈan.ke
Passed dúnque ˈdun.kwe ˈdun.kwe
Passed vóngola ˈvon.ɡo.la ˈvon.ɡo.la
s
Passed sguardo ˈzɡwar.do ˈzɡwar.do
Passed sregolato zre.ɡoˈla.to zre.ɡoˈla.to
Passed gira-sole d͡ʒi.raˈso.le d͡ʒi.raˈso.le
Failed desìdero deˈsi.de.ro deˈzi.de.ro
Passed ròsa ˈrɔ.za ˈrɔ.za
z, zz
Passed fòrza ˈfɔr.t͡sa ˈfɔr.t͡sa
Passed ragàzza raˈɡat.t͡sa raˈɡat.t͡sa
Failed mèzzo ˈmɛd.d͡zo ˈmɛt.t͡so
Passed mèzzo (z sequence 1 is voiced) ˈmɛd.d͡zo ˈmɛd.d͡zo
Passed zanzara (all z sequences are voiced) d͡zanˈd͡za.ra d͡zanˈd͡za.ra
Passed nazione natˈt͡sjo.ne natˈt͡sjo.ne
Passed spazzi ˈspat.t͡si ˈspat.t͡si
Passed zìo ˈt͡si.o ˈt͡si.o
Passed agenzìa a.d͡ʒenˈt͡si.a a.d͡ʒenˈt͡si.a
Passed grazie ˈɡrat.t͡sje ˈɡrat.t͡sje
Passed azienda (z sequence 1 is voiced) adˈd͡zjen.da adˈd͡zjen.da
Passed romanzière (z sequence 1 is voiced) ro.manˈd͡zjɛ.re ro.manˈd͡zjɛ.re
Failed spazi ˈspat.t͡si ˈspad.d͡zi
Passed spazî ˈspat.t͡si ˈspat.t͡si
Passed ozòno (all z sequences are voiced) odˈd͡zɔ.no odˈd͡zɔ.no
semivowels
Passed quéllo ˈkwel.lo ˈkwel.lo
Passed grànchio ˈɡran.kjo ˈɡran.kjo
Passed capiènza kaˈpjɛn.t͡sa kaˈpjɛn.t͡sa
Passed niènte ˈnjɛn.te ˈnjɛn.te
Passed sùo ˈsu.o ˈsu.o
Passed può ˈpwɔ ˈpwɔ
Passed nuòvo ˈnwɔ.vo ˈnwɔ.vo
Passed devi-are de.viˈa.re de.viˈa.re
Passed televisione te.le.viˈzjo.ne te.le.viˈzjo.ne
Handling of words without accents
Passed sono ˈso.no ˈso.no
Passed cane ˈka.ne ˈka.ne
Passed carta ˈkar.ta ˈkar.ta
Syllabification
Failed sottosvillupo sot.to.zvilˈlu.po sot.toz.vilˈlu.po
Failed manùbrio maˈnu.brjo maˈnub.rjo
Failed àulico ˈau.li.ko ˈa.u.li.ko
Text Expected Actual
test_to_phonetic:
Failed càne ˈkäː.n̺e̞ ˈkäː.n̺e
Passed bène ˈbɛː.n̺e ˈbɛː.n̺e
Failed sóno ˈs̪oː.n̺o ˈsoː.n̺o
Failed sòno ˈs̪ɔː.n̺o ˈsɔː.n̺o
English letter sequences
y
x
-izzare
c, g, sc
Passed cèlo ˈt͡ʃɛː.lo ˈt͡ʃɛː.lo
Passed ciaccòna t͡ʃäkˈkɔː.n̺ä t͡ʃäkˈkɔː.n̺ä
Failed fàccio ˈfät͡ʃ.t͡ʃo ˈfät.t͡ʃo
Passed che k̟e k̟e
Failed òcchio ˈɔk̟.k̟jo ˈɔk.k̟jo
Failed òcchi ˈɔk̟.k̟i ˈɔk.k̟i
Failed òggi ˈɔd͡ʒ.d͡ʒi ˈɔd.d͡ʒi
Passed Sciàlpi ˈʃäl.pi ˈʃäl.pi
Failed lasciàre läʃˈʃäː.r̺e̞ läʃˈʃäː.re
Failed scleràre s̪kleˈr̺äː.r̺e̞ skleˈräː.re
Passed ùscio ˈuʃ.ʃo ˈuʃ.ʃo
gn, gl
Passed ógni ˈoɲ.ɲi ˈoɲ.ɲi
Passed gnòcco ˈɲɔk.ko ˈɲɔk.ko
Passed gnagnà ɲäɲˈɲä ɲäɲˈɲä
Passed vòglio ˈvɔʎ.ʎo ˈvɔʎ.ʎo
Passed gli ʎi ʎi
Failed inglése iŋˈɡleː.s̪e iŋˈɡleː.ze
ng, nq, nch
Passed anche ˈäŋ.k̟e ˈäŋ.k̟e
Passed dúnque ˈduŋ.kwe ˈduŋ.kwe
Passed vóngola ˈvoŋ.ɡo.lä ˈvoŋ.ɡo.lä
s
Passed sguardo ˈzɡwär.do ˈzɡwär.do
Passed sregolato zre.ɡoˈläː.to zre.ɡoˈläː.to
z, zz
Failed fòrza ˈfɔr̺.t̪͡s̪ä ˈfɔr.t͡sä
Failed ragàzza r̺äˈɡät̪͡s̪.t̪͡s̪ä räˈɡät.t͡sä
Failed mèzzo ˈmɛd̪͡z̪.d̪͡z̪o ˈmɛt.t͡so
Failed mèzzo (z sequence 1 is voiced) ˈmɛd̪͡z̪.d̪͡z̪o ˈmɛd.d͡zo
Failed zanzara (all z sequences are voiced) d̪͡z̪änˈd̪͡z̪äː.r̺ä d͡zän̺ˈd͡zäː.rä
Passed nazione n̺ätˈt͡sjoː.n̺e n̺ätˈt͡sjoː.n̺e
Passed spazzi ˈspät.t͡si ˈspät.t͡si
Failed spazi ˈspät.t͡si ˈspäd.d͡zi
Passed spazî ˈspät.t͡si ˈspät.t͡si
semivowels
Passed quéllo ˈkwel.lo ˈkwel.lo
Passed grànchio ˈɡräŋ.k̟jo ˈɡräŋ.k̟jo
Passed capiènza käˈpjɛn̺.t͡sä käˈpjɛn̺.t͡sä
Failed niènte ˈnjɛn̪.t̪e ˈn̺jɛn̺.te
Passed sùo ˈsuː.o ˈsuː.o
Passed può ˈpwɔ ˈpwɔ
Passed nuòvo ˈn̺wɔː.vo ˈn̺wɔː.vo
Handling of words without accents
Passed sono ˈsoː.n̺o ˈsoː.n̺o
Failed cane ˈkäː.n̺e̞ ˈkäː.n̺e
Failed carta ˈkär̺.t̪ä ˈkär.tä
Syllabification
Failed sottosvillupo sot.to.zvilˈluː.po sot.toz.vilˈluː.po
Failed manùbrio mäˈn̺u.brjo mäˈn̺ub.rjo

local tests = require "Module:UnitTests"

setmetatable(_G, { __index = require "Module:it-pronunciation" })

local function tag_IPA(transcription)
	if transcription:find "^Error" then
		return transcription
	else
		return '<span class="IPA">' .. transcription .. '</span>'
	end
end

local examples = {
	{ "càne", "ˈka.ne", "ˈkäː.n̺e̞" },
	{ "bène", "ˈbɛ.ne", "ˈbɛː.n̺e" },
	{ "sóno", "ˈso.no", "ˈs̪oː.n̺o" },
	{ "sòno", "ˈsɔ.no", "ˈs̪ɔː.n̺o" },
	{ "ho", "ɔ", "" },
	{"all'", "all", ""},
	"English letter sequences",
	{ "smoking", "ˈzmo.kiŋ", "" },
	{ "gangster", "ˈgaŋ.ster", "" },
	{ "hòckey", "ˈɔ.ke.i", "" },
	{ "hockeìstico", "o.keˈis.ti.ko", "" },
	{ "crawl", "krɔl", "" },
	"y",
	{ "yo-yo", "ˈjo.jo", "" },
	{ "whisky", "ˈwis.ki", "" },
	"x",
	{ "Craxi", "ˈkrak.si", "" },
	"-izzare",
	{ "analizzare", "a.na.lidˈd͡za.re", ""},
	{ "nazionalizzare", "nat.t͡sjo.na.lidˈd͡za.re", "" },
	{ "zonizzare", "d͡zo.nidˈd͡za.re", "", true },
	{ "rizzare", "ritˈt͡sa.re", ""},
	"c, g, sc",
	{ "cèlo", "ˈt͡ʃɛ.lo", "ˈt͡ʃɛː.lo" },
	{ "ciaccòna", "t͡ʃakˈkɔ.na", "t͡ʃäkˈkɔː.n̺ä" },
	{ "fàccio", "ˈfat.t͡ʃo", "ˈfät͡ʃ.t͡ʃo" }, -- ˈfat.t͡ʃo is too phonetic; other alternative, ˈfa.t͡ʃːo
	{ "che", "ke", "k̟e" },
	{ "òcchio", "ˈɔk.kjo", "ˈɔk̟.k̟jo" }, -- Good test for syllabification.
	{ "òcchi", "ˈɔk.ki", "ˈɔk̟.k̟i" },
	{ "òggi", "ˈɔd.d͡ʒi", "ˈɔd͡ʒ.d͡ʒi" }, -- ˈɔd.d͡ʒi is too phonetic; other alternative, ˈɔ.d͡ʒːi 
	{ "Sciàlpi", "ˈʃal.pi", "ˈʃäl.pi" },
	{ "lasciàre", "laʃˈʃa.re", "läʃˈʃäː.r̺e̞" },
	{ "scleràre", "skleˈra.re", "s̪kleˈr̺äː.r̺e̞" },
	{ "ùscio", "ˈuʃ.ʃo", "ˈuʃ.ʃo" },
	"gn, gl",
	{ "ógni", "ˈoɲ.ɲi", "ˈoɲ.ɲi" },
	{ "gnòcco", "ˈɲɔk.ko", "ˈɲɔk.ko" },
	{ "gnagnà", "ɲaɲˈɲa", "ɲäɲˈɲä" }, -- probably not a real word
	{ "vòglio", "ˈvɔʎ.ʎo", "ˈvɔʎ.ʎo" },
	{ "gli", "ʎi", "ʎi" },
	{ "inglése", "inˈɡle.se", "iŋˈɡleː.s̪e" },
	"ng, nq, nch",
	{ "anche", "ˈan.ke", "ˈäŋ.k̟e" },
	{ "dúnque", "ˈdun.kwe", "ˈduŋ.kwe"  },
	{ "vóngola", "ˈvon.ɡo.la", "ˈvoŋ.ɡo.lä" }, 
	"s",
	{ "sguardo", "ˈzɡwar.do", "ˈzɡwär.do" },
	{ "sregolato", "zre.ɡoˈla.to", "zre.ɡoˈläː.to" },
	{ "gira-sole", "d͡ʒi.raˈso.le", "" },
    { "desìdero", "deˈsi.de.ro", "" },
    { "ròsa", "ˈrɔ.za", "" },
	"z, zz",
	{ "fòrza", "ˈfɔr.t͡sa", "ˈfɔr̺.t̪͡s̪ä" },
	{ "ragàzza", "raˈɡat.t͡sa", "r̺äˈɡät̪͡s̪.t̪͡s̪ä" },
	{ "mèzzo", "ˈmɛd.d͡zo", "ˈmɛd̪͡z̪.d̪͡z̪o" },
	{ "mèzzo", "ˈmɛd.d͡zo", "ˈmɛd̪͡z̪.d̪͡z̪o", { 1 } },
	{ "zanzara", "d͡zanˈd͡za.ra", "d̪͡z̪änˈd̪͡z̪äː.r̺ä", true },
	-- [[w:Italian orthography]] says the z is geminate, while the English
	-- and Italian Wiktionaries say it isn't. It sounds geminate in the soundfile.
	{ "nazione", "natˈt͡sjo.ne" , "n̺ätˈt͡sjoː.n̺e" },
	{ "spazzi", "ˈspat.t͡si", "ˈspät.t͡si" },
	{ "zìo", "ˈt͡si.o", "" },
	{ "agenzìa", "a.d͡ʒenˈt͡si.a", "" },
	{ "grazie", "ˈɡrat.t͡sje", "" },
	{ "azienda", "adˈd͡zjen.da", "", { 1 } },
	{ "romanzière", "ro.manˈd͡zjɛ.re", "",  { 1 } },
	-- intervocalic "autogeminazione" [[w:it:Autogeminazione]]
	{ "spazi", "ˈspat.t͡si", "ˈspät.t͡si" },
	{ "spazî", "ˈspat.t͡si", "ˈspät.t͡si" },
	{ "ozòno", "odˈd͡zɔ.no", "", true },
	"semivowels",
	{ "quéllo", "ˈkwel.lo", "ˈkwel.lo" },
	{ "grànchio", "ˈɡran.kjo", "ˈɡräŋ.k̟jo" },
	{ "capiènza", "kaˈpjɛn.t͡sa", "käˈpjɛn̺.t͡sä" },
	{ "niènte", "ˈnjɛn.te", "ˈnjɛn̪.t̪e" }, -- or [n̺ʲ-]?
	{ "sùo", "ˈsu.o", "ˈsuː.o" },
	{ "può", "ˈpwɔ", "ˈpwɔ" },
	{ "nuòvo", "ˈnwɔ.vo", "ˈn̺wɔː.vo" },
	{ "devi-are", "de.viˈa.re", "" },
	{ "televisione", "te.le.viˈzjo.ne", "" },
	"Handling of words without accents",
	{ "sono", "ˈso.no", "ˈsoː.n̺o" },
	{ "cane", "ˈka.ne", "ˈkäː.n̺e̞" },
	{ "carta", "ˈkar.ta", "ˈkär̺.t̪ä" },
	"Syllabification",
	{ "sottosvillupo", "sot.to.zvilˈlu.po", "sot.to.zvilˈluː.po" },
	{ "manùbrio", "maˈnu.brjo", "mäˈn̺u.brjo" }, -- Is u long here?
	{ "àulico", "ˈau.li.ko", "" }
	
	--[[
	-- For new examples:
	{ "", "", "" },
	-- respelling, phonemic, phonetic
	]]
}

function tests:test_to_phonemic()
	self:iterate(examples,
		function (self, example, expected, _, voiced_z)
			local success, result = pcall(to_phonemic, example, voiced_z)
			if not success then
				result = ("Error: %s"):format(result)
			end
			
			local voiced_text
			if not voiced_z then
				voiced_text = ""
			elseif type(voiced_z) == "boolean" then
				if voiced_z then
					voiced_text = " (all z sequences are voiced)"
				else
					voiced_text = " (no z sequences are voiced)"
				end
			else
				voiced_text = (" (z sequence%s %s %s voiced)"):format(
					voiced_z[2] and "s" or "",
					table.concat(voiced_z, ", "),
					voiced_z[2] and "are" or "is")
			end
			
			self:equals(example .. voiced_text, result, expected, { display = tag_IPA })
		end)
end

function tests:test_to_phonetic()
	self:iterate(examples,
		function (self, example, _, expected, voiced_z)
			if expected == "" then
				return
			end
			
			local success, result = pcall(to_phonetic, example, voiced_z)
			if not success then
				result = ("Error: %s"):format(result)
			end
			
			local voiced_text
			if not voiced_z then
				voiced_text = ""
			elseif type(voiced_z) == "boolean" then
				if voiced_z then
					voiced_text = " (all z sequences are voiced)"
				else
					voiced_text = " (no z sequences are voiced)"
				end
			else
				voiced_text = (" (z sequence%s %s %s voiced)"):format(
					voiced_z[2] and "s" or "",
					table.concat(voiced_z, ", "),
					voiced_z[2] and "are" or "is")
			end
			
			self:equals(example .. voiced_text, result, expected, { display = tag_IPA })
		end)
end

return tests