Module:User:Erutuon/en-pronunciation/testcases

From Wiktionary, the free dictionary
Jump to navigation Jump to search

All tests passed. (refresh)

TextExpectedActual
test_smoothing:
Passedˈlɔɪ.ə (RP)ˈlɔəˈlɔə
Passedˈloj.ə (Lindsey)ˈloːˈloː
Passedˈləʊə (RP)ˈləəˈləə
Passedˈləwə (Lindsey)ˈləːˈləː
Passedlaɪəˈbɪlɪti (RP)laəˈbɪlɪtilaəˈbɪlɪti
Passedlɑjəˈbɪlɪtɪj (Lindsey)lɑːˈbɪlɪtɪjlɑːˈbɪlɪtɪj
Passedˈpeɪə (RP)ˈpeəˈpeə
Passedˈpɛjə (Lindsey)ˈpɛːˈpɛː
Passedˈfɹiːə (RP)ˈfɹɪəˈfɹɪə
Passedˈfɹɪjə (Lindsey)ˈfɹɪːˈfɹɪː
Passedsɪˈkjuːə (RP)sɪˈkjʊəsɪˈkjʊə
Passedsɪˈkjʉwə (Lindsey)sɪˈkjɵːsɪˈkjɵː
Passedˈflɑʊə (RP)ˈflɑəˈflɑə
Passedˈflawə (Lindsey)ˈflaːˈflaː
TextExpectedActual
test_system_conversion:
Passedˈlɔɪ.ə (RP → Lindsey)ˈloj.əˈloj.ə
Passedˈmeə (RP → Lindsey)ˈmɛːˈmɛː
Passedæmbɪˈgjuːɪti (RP → Lindsey)ambɪˈgjʉwɪtɪjambɪˈgjʉwɪtɪj
Passedˈləʊə (RP → Lindsey)ˈləwəˈləwə

local tests = require "Module:UnitTests"
local m_pron = require "Module:User:Erutuon/en-pronunciation"
local convert = m_pron.convert
local smooth = m_pron.smooth

local function tag(text)
	return '<span class="IPA">' .. text .. '</span>'
end

local options = { display = tag }
function tests:check_system_conversion(example, from, to, expected)
	self:equals(tag(example) .. " (" .. from .. " &rarr; " .. to .. ")", convert(example, from, to), expected, options)
end

function tests:test_system_conversion()
	local examples = {
		{ "ˈlɔɪ.ə", "RP", "Lindsey", "ˈloj.ə" },
		{ "ˈmeə", "RP", "Lindsey", "ˈmɛː" },
		{ "æmbɪˈgjuːɪti", "RP", "Lindsey", "ambɪˈgjʉwɪtɪj" },
		{ "ˈləʊə", "RP", "Lindsey", "ˈləwə" },
	}
	
	self:iterate(examples, "check_system_conversion")
end

function tests:check_smoothing(example, system, expected)
	self:equals(
		tag(example) .. " (" .. system .. ")",
		smooth(example, system),
		expected,
		options)
end

function tests:test_smoothing()
	local examples = {
		{ "ˈlɔɪ.ə", "RP", "ˈlɔə" }, -- a pronunciation of lawyer
		{ "ˈloj.ə", "Lindsey", "ˈloː" },
		{ "ˈləʊə", "RP", "ˈləə" }, -- lower
		{ "ˈləwə", "Lindsey", "ˈləː" },
		{ "laɪəˈbɪlɪti", "RP", "laəˈbɪlɪti" }, -- liability
		{ "lɑjəˈbɪlɪtɪj", "Lindsey", "lɑːˈbɪlɪtɪj" },
		{ "ˈpeɪə", "RP", "ˈpeə" }, -- payer: smoothing unlikely?
		{ "ˈpɛjə", "Lindsey", "ˈpɛː" },
		{ "ˈfɹiːə", "RP", "ˈfɹɪə" }, -- freer: smoothing unlikely?
		{ "ˈfɹɪjə", "Lindsey", "ˈfɹɪː" },
		{ "sɪˈkjuːə", "RP", "sɪˈkjʊə" }, -- secure; this pronunciation probably not used in RP; better example?
		{ "sɪˈkjʉwə", "Lindsey", "sɪˈkjɵː" },
		{ "ˈflɑʊə", "RP", "ˈflɑə" }, -- flower
		{ "ˈflawə", "Lindsey", "ˈflaː" },
		--[[
		{ "", "", "" },
		--]]
	}
	
	self:iterate(examples, "check_smoothing")
end

return tests