Jump to content

Module:Wikt-lang/testcases

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Gonnym (talk | contribs) at 01:44, 26 October 2020. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
-- Unit tests for [[Module:Language]]. Click talk page to run tests.
local p = require('Module:UnitTests')
local m_Language = require('Module:Language')

local function tag(word, languageCode)
	return '<span lang="' .. languageCode .. '">' .. word .. '</span>'
end

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

p['test makeEntryName'] = function (self)
	local examples = {
		{ "ar", "العَرَبِيَّة", "العربية" },
		{ "grc", "δημοκρᾰτῐ́ᾱ", "δημοκρατία" },
		{ "ha", "àzàhàr̃iyyā̀", "azahariyya" },
		{ "la", "coëō", "coeo" },
		{ "nci", "Quetzalcōātl", "Quetzalcoatl" },
		{ "ru", "ру́сский язы́к", "русский язык" },
		{ "sh", "ćá", "ća" }, -- fake word with c-acute and tonal acute; add a real word if you know one
	}
	
	self:iterate(examples, "check_makeEntryName")
end

local function test_patterns_get(main)
	local data = require('Module:Language/data')
	local language_codes = {}
	
	if main then
		for code, values in pairs(data["languages"]) do
			table.insert(language_codes, {code, values.name})
		end
	else
		for code, value in pairs(data["redirects"]) do
			local redirect_name
			if data["languages"][value] then
				redirect_name = data["languages"][value].name
			else
				mw.language.fetchLanguageName(code, 'en')
			end
			table.insert(language_codes, {code, redirect_name})
		end
	end
	
	local function comp(a, b)
		return a[1] < b[1]
	end
	
	table.sort(language_codes, comp)
	return language_codes
end

function p:test_compare_language_names()
	local wiktionary_test_patterns = test_patterns_get(true)
	local name_from_tag = require('Module:Lang')._name_from_tag
	local full_test_patterns = {}

	for i = 1, #wiktionary_test_patterns do
		local code = wiktionary_test_patterns[i][1]
		local en_wiki_name = name_from_tag({code})
		local wiktionary_name = wiktionary_test_patterns[i][2] or mw.language.fetchLanguageName(code, 'en')
		table.insert(full_test_patterns, {code .. ': ' .. wiktionary_name, code .. ': ' .. en_wiki_name})
	end
	
	mw.logObject(full_test_patterns)	
    self:preprocess_equals_many('', '', full_test_patterns, {nowiki=1})
end

function p:test_compare_language_names_redirects()
	local wiktionary_test_patterns = test_patterns_get(false)
	local name_from_tag = require('Module:Lang')._name_from_tag
	local full_test_patterns = {}

	for i = 1, #wiktionary_test_patterns do
		local code = wiktionary_test_patterns[i][1]
		local en_wiki_name = name_from_tag({code})
		local wiktionary_name = wiktionary_test_patterns[i][2] or mw.language.fetchLanguageName(code, 'en')
		table.insert(full_test_patterns, {code .. ': ' .. wiktionary_name, code .. ': ' .. en_wiki_name})
	end
	
	mw.logObject(full_test_patterns)	
    self:preprocess_equals_many('', '', full_test_patterns, {nowiki=1})
end

return p