Jump to content

Module:it-pronunciation/testcases

From Wiktionary, the free dictionary

35 of 74 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
Passedingléseinˈɡle.zeinˈɡle.ze
Faileddisegniàtedi.zeɲˈɲa.tedi.zeɲˈɲja.te
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.ze", "" },
	{ "disegniàte", "di.zeɲˈɲa.te", "" },
	"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