local tests = require('Module:UnitTests')
local m_IPA = require('Module:mk-pronunciation')

local Macedonian = require("Module:languages").getByCode("mk")
local Cyrillic = require("Module:scripts").getByCode("Cyrl")

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

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

function tests:check_output(term, expected)
	tests:equals(
		link(term),
		m_IPA.toIPA(term),
		expected,
		{ display = tag_IPA }
	)
end

function tests:test_all()
	local list = {
		{ "нананазад", "naˈnanazat" },
		{ "Тласолтеотл", "tɫasɔɫˈtɛɔtɫ̩" },
		{ "њутн", "ˈɲutn̩" },
		{ "беџ", "bɛt͡ʃ"},
		{ "правци", "ˈpraft͡si" },
		{ "надежта", "ˈnadɛʃta" },
		{ "бели", "ˈbɛli" },
		{ "соседство", "ˈsɔsɛtstvɔ" },
		{ "зима́ва", "ziˈmava" },
		{ "одва́j", "ɔˈdvaj" },
		{ "Мавританија", "mavriˈtani(j)a" },
		{ "’рѓа", "ˈr̩ɟa" },
		{ "бесчестен", "ˈbɛʃt͡ʃɛstɛn" },
		{ "бара", "ˈbaɾa"},
		{ "станбен", "ˈstambɛn"},
		{ "конфузен", "ˈkɔɱfuzɛn"},
		{ "рамка", "ˈramka"},
		{ "амфора", "ˈaɱfɔɾa"},
		{ "емиграциски", "ɛmiˈɡrat͡siski"},
		{ "соучесништво", "sɔuˈt͡ʃɛsniʃtvɔ"},
		{ "подмножество", "pɔdˈmnɔʒɛstvɔ"},
		{ "грнчарство", "ˈɡr̩nt͡ʃarstvɔ"},
		{ "стокхолмски", "ˈstɔkxɔɫmski"},
		{ "трамвајскиот", "traɱˈvajski(j)ɔt"},
		{ "одраниот", "ɔˈdrani(j)ɔt"},
		{ "позлатува", "pɔˈzɫatuva"},
		{ "остварува", "ɔˈstvaɾuva"},
		{ "дошколува", "dɔˈʃkɔɫuva"},
		{ "основање", "ɔˈsnɔvaɲɛ"},
		{ "потковица", "pɔtˈkɔvit͡sa"},
		{ "инјекција", "inˈjɛkt͡si(j)a"},
		{ "отсјаите", "ɔtˈsjaitɛ"},
		{ "подморница", "pɔdˈmɔrnit͡sa"},
		{ "полудневниот", "pɔɫuˈdnɛvni(j)ɔt"},
		{ "од играчка плачка", "ɔd ˈiɡrat͡ʃka ˈpɫat͡ʃka"},
		{ "од немај-каде", "ɔd nɛˈmajkadɛ"},
		{ "од почит кон", "ɔt ˈpɔt͡ʃit kɔn"},
		{ "обновува", "ɔbˈnɔvuva"},
		{ "облажува", "ɔˈbɫaʒuva"},
		{ "чувствителност", "t͡ʃufˈstvitɛɫnɔst"},
		{ "конфли́кт", "kɔɱˈflikt" },
		{ "комфорен", "ˈkɔɱfɔɾɛn" },
		{ "бара преку леб погача", "ˈbaɾa ˈprɛku ˈlɛp ˈpɔɡat͡ʃa" },
		{ "сѐ или ништо", "ˈsɛ ili ˈniʃtɔ" },
		{ "сѐ уште", "ˈsɛ uʃtɛ" },
		{ "илјадити", "iˈʎaditi" },
		{ "Унгарија", "uŋˈɡaɾi(j)a" },
		{ "архиепископ", "arxiˈɛpiskɔp" },
		{ "комба́јн", "kɔmˈbajn" },
		{ "мјаука", "ˈmjauka" },
		{ "скејтборд", "ˈskɛjdbɔrt" },
		{ "жанр", "ˈʒanr̩" },
		{ "подредува", "pɔdˈrɛduva"},
		{ "разликува", "razˈlikuva"},
		{ "растворени", "rasˈtvɔɾɛni"},
		{ "потешкотија", "pɔtɛʃˈkɔti(j)a"},
		{ "олеснување", "ɔlɛsˈnuvaɲɛ"},
		{ "соткаено", "sɔˈtkaɛnɔ"},
	}
--[[
	Additions take this form –
		{ "word with acutes", "IPA" },
		{ "", "" },
	Make sure to include the comma, or the module will return an error.
]]
	
	self:iterate(list, "check_output")
end

return tests