Module:scripts/testcases

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(' %s ', sc, char) end

function tests:checkFindBestScript(example, langCode, expected) local lang = getLangByCode(langCode) self:equals(tag(example, lang, expected) .. " (" .. lang:getCanonicalName .. ")",		lang:findBestScript(example):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" }, { "λόγος", "grc", "Polyt" }, { "λόγος", "el", "Grek" }, }	tests:iterate(examples, "checkFindBestScript") end

function tests:testCharToScript local U = mw.ustring.char local examples = { { "A", "Latn" }, { "一", "Hani" }, { "ώ", "Grek" }, { "ὦ", "Polyt" }, { "Ж", "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