Modul:scripts/testcases

A Wikiszótárból, a nyitott szótárból

1 teszt sikertelen. (frissítés)

Szöveg Várt Tényleges
testCharToScript:
Sikeres A Latn Latn
Sikeres Hani Hani
Sikeres ώ Grek Grek
Sikeres polytonic polytonic
Sikeres Ж Cyrl Cyrl
Sikeres Ѹ Cyrs Cyrs
Sikeres Cyrs Cyrs
Sikeres Geor Geor
Sikeres Geok Geok
Sikeres Geok Geok
Sikeres ! None None
Sikeres None None
Szöveg Várt Tényleges
testFindbestScript:
Sikeres word (angol) Latn Latn
Sikertelen العربية (arab) Arab fa-Arab
Sikeres عرب (perzsa) fa-Arab fa-Arab
Sikeres большо́й (orosz) Cyrl Cyrl
Sikeres ругала се шерпа лонцу широка му уста (szerbhorvát) Cyrl Cyrl
Scripts with overlapping characters
Sikeres Русь (óorosz) Cyrs Cyrs
Sikeres Русь (orosz) Cyrl Cyrl
Sikeres Велика Британија (szerbhorvát) Cyrl Cyrl
Sikeres velika Brìtānija (szerbhorvát) Latn Latn
Sikeres λόγος (ógörög) polytonic polytonic
Sikeres λόγος (görög) Grek Grek

local tests = require("Module:UnitTests")

local m_scripts = require("Module:scripts")
local m_script_utils = require("Module:script utilities")
local getLangByCode = require("Module:languages").getByCode

local function tag(text, lang, scCode)
	return m_script_utils.tag_text(text, lang, m_scripts.getByCode(scCode))
end

local function tagScript(char, sc)
	return string.format('<span class="%s">%s</span>', sc, char)
end

function tests:checkFindBestScript(example, langCode, expected)
	local lang = getLangByCode(langCode)
	self:equals(tag(example, lang, expected) .. " (" .. lang:getCanonicalName() .. ")",
		m_scripts.findBestScript(example, lang):getCode(),
		expected)
end

function tests:testFindbestScript()
	local examples = {
		{ "word", "en", "Latn" },
		{ "العربية", "ar", "Arab" },
		{ "عرب", "fa", "fa-Arab" },
		{ "большо́й", "ru", "Cyrl" },
		{ "ругала се шерпа лонцу широка му уста", "sh", "Cyrl" },
		"Scripts with overlapping characters",
		{ "Русь", "orv", "Cyrs" },
		{ "Русь", "ru", "Cyrl" },
		{ "Велика Британија", "sh", "Cyrl" },
		{ "velika Brìtānija", "sh", "Latn" },
		{ "λόγος", "grc", "polytonic" },
		{ "λόγος", "el", "Grek" },
	}
	
	tests:iterate(examples, "checkFindBestScript")
end

function tests:testCharToScript()
	local U = mw.ustring.char
	local examples = {
		{ "A", "Latn" },
		{ "一", "Hani" },
		{ "ώ", "Grek" },
		{ "ὦ", "polytonic" },
		{ "Ж", "Cyrl" },
		{ "Ѹ", "Cyrs" },
		{ "ꙑ", "Cyrs" },
		{ "ა", "Geor" },
		{ "Ⴀ", "Geok" },
		{ "ⴀ", "Geok" },
		{ "!", "None" },
		{ U(0x2F82B), "None" },
	}
	
	self:iterate(
		examples,
		function (self, char, expected)
			local sc = m_scripts.charToScript(char)
			self:equals(
				tagScript(char, sc),
				sc,
				expected
			)
		end)
end

return tests