Jump to content

Module:it-pronunciation/testcases

From Wiktionary, the free dictionary

35 of 73 tests failed. (refresh)

TextExpectedActual
test_to_phonemic:
Passedcàneˈka.neˈka.ne
Passedbèneˈbɛ.neˈbɛ.ne
Passedsónoˈso.noˈso.no
Passedsònoˈsɔ.noˈsɔ.no
Failedhoɔo
Failedall'allˈall‿
English letter sequences
Failedsmokingˈzmo.kiŋError: Module:it-pronunciation:350: When stressed vowel is e or o, it must be marked é/è or ó/ò to indicate quality: smoking
Failedgangsterˈgaŋ.sterˈɡanɡ.ster
Failedhòckeyˈɔ.ke.iˈɔ.kej
Failedhockeìsticoo.keˈis.ti.koo.keˈi.sti.ko
Failedcrawlkrɔlˈkrawl
y
Failedyo-yoˈjo.joˈi.o ˈi.o
Failedwhiskyˈwis.kiˈwi.ski
x
PassedCraxiˈkrak.siˈkrak.si
-izzare
Passedanalizzarea.na.lidˈd͡za.rea.na.lidˈd͡za.re
Failednazionalizzarenat.t͡sjo.na.lidˈd͡za.reError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: nazionaliddzàre
Failedzonizzared͡zo.nidˈd͡za.reError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: zoniddzàre
Failedrizzareritˈt͡sa.reridˈd͡za.re
c, g, sc
Passedcèloˈt͡ʃɛ.loˈt͡ʃɛ.lo
Passedciaccònat͡ʃakˈkɔ.nat͡ʃakˈkɔ.na
Passedfàccioˈfat.t͡ʃoˈfat.t͡ʃo
Passedchekeke
Passedòcchioˈɔk.kjoˈɔk.kjo
Passedòcchiˈɔk.kiˈɔk.ki
Passedòggiˈɔd.d͡ʒiˈɔd.d͡ʒi
PassedSciàlpiˈʃal.piˈʃal.pi
Passedlasciàrelaʃˈʃa.relaʃˈʃa.re
Passedscleràreskleˈra.reskleˈra.re
Passedùscioˈuʃ.ʃoˈuʃ.ʃo
gn, gl
Passedógniˈoɲ.ɲiˈoɲ.ɲi
Passedgnòccoˈɲɔk.koˈɲɔk.ko
Passedgnagnàɲaɲˈɲaɲaɲˈɲa
Passedvòglioˈvɔʎ.ʎoˈvɔʎ.ʎo
Passedgliʎiʎi
Failedingléseinˈɡle.seinˈɡle.ze
ng, nq, nch
Passedancheˈan.keˈan.ke
Passeddúnqueˈdun.kweˈdun.kwe
Passedvóngolaˈvon.ɡo.laˈvon.ɡo.la
s
Failedsguardoˈzɡwar.doError: Module:it-pronunciation:350: With more than two vowels and an unrecognized suffix, stress must be explicitly given: sguardo
Passedsregolatozre.ɡoˈla.tozre.ɡoˈla.to
Failedgira-soled͡ʒi.raˈso.leError: Module:it-pronunciation:350: When stressed vowel is e or o, it must be marked é/è or ó/ò to indicate quality: sole
Faileddesìderodeˈsi.de.rodeˈzi.de.ro
Passedròsaˈrɔ.zaˈrɔ.za
z, zz
Failedfòrzaˈfɔr.t͡saError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: fòrza
Failedragàzzaraˈɡat.t͡saError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: ragàzza
Failedmèzzoˈmɛd.d͡zoError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: mèzzo
Failedmèzzoˈmɛd.d͡zoError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: mèzzo
Failedzanzarad͡zanˈd͡za.raError: Module:it-pronunciation:350: With more than two vowels and an unrecognized suffix, stress must be explicitly given: zanzara
Passednazionenatˈt͡sjo.nenatˈt͡sjo.ne
Failedspazziˈspat.t͡siError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: spàzzi
Failedzìoˈt͡si.oError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: zìo
Failedagenzìaa.d͡ʒenˈt͡si.aError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: agenzìa
Failedgrazieˈɡrat.t͡sjeError: Module:it-pronunciation:350: With more than two vowels and an unrecognized suffix, stress must be explicitly given: grazie
Failedaziendaadˈd͡zjen.daError: Module:it-pronunciation:350: With more than two vowels and an unrecognized suffix, stress must be explicitly given: azienda
Failedromanzièrero.manˈd͡zjɛ.reError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: romanzière
Failedspaziˈspat.t͡siError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: spàzi
Failedspazîˈspat.t͡siError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: spàzî
Failedozònoodˈd͡zɔ.noError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: ozòno
semivowels
Passedquélloˈkwel.loˈkwel.lo
Passedgrànchioˈɡran.kjoˈɡran.kjo
Failedcapiènzakaˈpjɛn.t͡saError: Module:it-pronunciation:535: z must be respelled (d)dz or (t)ts: capiènza
Passedniènteˈnjɛn.teˈnjɛn.te
Passedsùoˈsu.oˈsu.o
Passedpuòˈpwɔˈpwɔ
Passednuòvoˈnwɔ.voˈnwɔ.vo
Faileddevi-arede.viˈa.reError: Module:it-pronunciation:350: When stressed vowel is e or o, it must be marked é/è or ó/ò to indicate quality: devi
Passedtelevisionete.le.viˈzjo.nete.le.viˈzjo.ne
Handling of words without accents
Failedsonoˈso.noError: Module:it-pronunciation:350: When stressed vowel is e or o, it must be marked é/è or ó/ò to indicate quality: sono
Passedcaneˈka.neˈka.ne
Passedcartaˈkar.taˈkar.ta
Syllabification
Failedsottosvilluposot.to.zvilˈlu.poError: Module:it-pronunciation:350: With more than two vowels and an unrecognized suffix, stress must be explicitly given: sottosvillupo
Passedmanùbriomaˈnu.brjomaˈnu.brjo
Failedàulicoˈau.li.koˈaw.li.ko

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,example)
			if not success then
				result = ("Error: %s"):format(result)
			else
				result = result.phonemic
			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, 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