Difference between revisions of "Module:Language/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>Erutuon
(start testcases)
 
blackwiki>Erutuon
(fix normalization issue)
Line 21: Line 21:
 
end
 
end
  
 +
local decompose = mw.ustring.toNFD
 
function p:check_makeEntryName(languageCode, word, expected)
 
function p:check_makeEntryName(languageCode, word, expected)
self:equals(word, m_Language.makeEntryName(word, languageCode), expected)
+
self:equals(
 +
word,
 +
decompose(m_Language.makeEntryName(word, languageCode)),
 +
decompose(expected))
 
end
 
end
  

Revision as of 18:41, 23 June 2018

Documentation for this module may be created at Module:Language/testcases/doc

-- Example Unit tests for [[Module:Bananas]]. Click talk page to run tests.
local p = require 'Module:UnitTests'
local m_Language = require 'Module:Language'

function p:iterate(examples, func)
	if type(examples) ~= 'table' then
		error('First argument of iterate should be a table, not ' .. type(examples) .. '.')
	end
	if type(func) == 'string' then
		func = self[func]
		for i, example in ipairs(examples) do
			if type(example) == 'table' then
				func(self, unpack(example))
			else
				error('iterate does not know what to do with example number ' .. i .. ', whose type is ' .. type(example) .. '.')
			end
		end
	else
		error('Second argument of iterate should be a string, not ' .. type(func) .. '.')
	end
end

local decompose = mw.ustring.toNFD
function p:check_makeEntryName(languageCode, word, expected)
	self:equals(
		word,
		decompose(m_Language.makeEntryName(word, languageCode)),
		decompose(expected))
end

p['test makeEntryName'] = function (self)
	local examples = {
		{ "la", "homō", "homo" },
		{ "grc", "δημοκρᾰτῐ́ᾱ", "δημοκρατία" },
	}
	
	self:iterate(examples, "check_makeEntryName")
end

return p