模組:Language/testcases
外观
這是Module:Language的測試樣例頁,測試結果請見討論頁。 |
-- Unit tests for [[Module:Language]]. Click talk page to run tests.
local p = require('Module:UnitTests')
local m_Language = require('Module:Language')
local name_from_tag = require('Module:Lang')._name_from_tag
function p:test_1_link()
self:preprocess_equals_preprocess_many('{{#invoke:Language/sandbox|wiktlang|', '}}', '{{#invoke:Language|wiktlang|', '}}',
{
{"grc|δημοκρᾰτῐ́ᾱ"},
{"ha|àzàhàr̃iyyā̀"},
{"la|coëō"},
{"nci|Quetzalcōātl"},
{"ru|ру́сский язы́к"},
{"he|שלום"},
{"sh|ćá|ća" }, -- fake word with c-acute and tonal acute; add a real word if you know one
}, {nowiki=1})
end
local function test_patterns_get(main)
local data = require('Module:Language/data/sandbox')
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, redirect_code in pairs(data["redirects"]) do
local redirect_name
if data["languages"][redirect_code] and data["languages"][redirect_code].name then
redirect_name = data["languages"][redirect_code].name
else
redirect_name = name_from_tag({code})
if not redirect_name or redirect_name:find("error") then
redirect_name = mw.language.fetchLanguageName(redirect_code, 'en')
end
end
table.insert(language_codes, {code, redirect_name, redirect_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_2_link()
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]
table.insert(full_test_patterns, {code .. "|test", code .. "|test"})
end
self:preprocess_equals_preprocess_many('{{#invoke:Language/sandbox|wiktlang|', '}}', '{{#invoke:Language|wiktlang|no_cat=yes|', '}}', full_test_patterns, {nowiki=1})
end
function p:test_3_link_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]
table.insert(full_test_patterns, {code .. "|test", code .. "|test"})
end
self:preprocess_equals_preprocess_many('{{#invoke:Language/sandbox|wiktlang|', '}}', '{{#invoke:Language|wiktlang|no_cat=yes|', '}}', full_test_patterns, {nowiki=1})
end
function p:test_4_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]
if wiktionary_name then
table.insert(full_test_patterns, {code .. ': ' .. wiktionary_name, code .. ': ' .. en_wiki_name})
end
end
self:preprocess_equals_many('', '', full_test_patterns, {nowiki=1})
end
function p:test_5_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 wiktionary_name = wiktionary_test_patterns[i][2]
local redirect_code = wiktionary_test_patterns[i][3]
local en_wiki_name = name_from_tag({code})
local en_wiki_redirect_name = name_from_tag({redirect_code})
table.insert(full_test_patterns, {
code .. ': ' .. wiktionary_name .. " / " .. redirect_code .. ": " .. wiktionary_name,
code .. ': ' .. en_wiki_name .. " / " .. redirect_code .. ": " .. en_wiki_redirect_name,
})
end
self:preprocess_equals_many('', '', full_test_patterns, {nowiki=1})
end
return p