Module:languages/testcases
Jump to navigation
Jump to search
- The following documentation is located at Module:languages/testcases/documentation. [edit]
- Useful links: root page • root page’s subpages • links • transclusions • tested module • sandbox
4 of 58 tests failed. (refresh)
Text | Expected | Actual | |
---|---|---|---|
en | English language | English language | |
af | Afrikaans language | Afrikaans language | |
av | Avar language | Avar language | |
ht | Haitian Creole language | Haitian Creole language | |
ase | American Sign Language | American Sign Language |
Text | Expected | Actual | |
---|---|---|---|
en | gmw-ang | gmw-ang | |
ht | crp | crp | |
ase | sgn | sgn |
Text | Expected | Actual | |
---|---|---|---|
de | de | de | |
de-AT | de | de | |
de-AT-vie | de | de | |
gem | gem | gem |
Text | Expected | Actual | |
---|---|---|---|
ht | {"Creole", "Haitian", "Kreyòl"} | {"Creole", "Haitian", "Kreyòl"} | |
ase | {"Ameslan", "ASL"} | {"Ameslan", "ASL"} |
Text | Expected | Actual | |
---|---|---|---|
en | {"Latn", "Brai", "Shaw", "Dsrt"} | {"Latn", "Brai", "Shaw", "Dsrt"} | |
ht | {"Latn"} | {"Latn"} | |
ase | {"Sgnw"} | {"Sgnw"} |
Text | Expected | Actual | |
---|---|---|---|
en | Q1860 | Q1860 | |
eo | Q143 | Q143 | |
aql-pro | Q18389588 | Q18389588 | |
mkh-ban-pro | (nil) | (nil) |
Text | Expected | Actual | |
---|---|---|---|
en | English language | English language | |
af | Afrikaans | Afrikaans | |
ae | Avestan | Avestan | |
ht | Haitian Creole | Haitian Creole | |
ase | American Sign Language | American Sign Language | |
dv | Maldivian language | Maldivian language | |
eo | Esperanto | Esperanto | |
goh | Old High German | Old High German |
Text | Expected | Actual | |
---|---|---|---|
ஸ்ரீகாகுளம் (Tamil, ta ) | ஶ்ரீகாகுளம் | ஶ்ரீகாகுளம் |
Text | Expected | Actual | |
---|---|---|---|
hūmānitās (Latin, la ) | humanitas | humanitas | |
coëō (Latin, la ) | coeo | coeo | |
àzàhàr̃iyyā̀ (Hausa, ha ) | azahariyya | azahariyya | |
alas! (English, en ) | alas | alas | |
¿cómo te llamas? (Spanish, es ) | cómo te llamas | cómo te llamas | |
ӓ ё (Russian, ru ) | а ё | а ё | |
¿ ? (Spanish, es ) | ¿ ? | ¿ ? | |
¡ ! (Spanish, es ) | ¡ ! | ¡ ! | |
mais bien sûr ! (French, fr ) | mais bien sûr | mais bien sûr | |
¡ (Translingual, mul ) | ¡ | ¡ | |
Πηληῐ̈ᾰ́δης (Ancient Greek, grc ) | Πηληϊάδης | Πηληϊάδης | |
العَرَبِيَّة (Arabic, ar ) | العربية | العربية | |
ٱ (Arabic, ar ) | ٱ | ٱ | |
ـُ (Arabic, ar ) | ـُ | ـُ | |
치〯 (Middle Korean, okm ) | 치 | 치 | |
script-specific (no change when wrong script code is provided) | |||
ایشؽق (Azerbaijani, az ) | ایشیق | ایشیق | |
ایشؽق (Azerbaijani, az ), table | ایشؽق | ایشؽق |
Text | Expected | Actual | |
---|---|---|---|
diacritic removal | |||
Πηληϊάδης Αἶνος (Ancient Greek, grc ) | ΠΗΛΗΙΑΔΗΣ ΑΙΝΟΣ | ΠΗΛΗΙΑΔΗΣ ΑΙΝΟΣ | |
shį́į́dą́ą́ʼ (Navajo, nv ) | SIIDAAZ | SIIDAAZ | |
dedicated sortkey modules | |||
Tuyên ngôn toàn thế giới về nhân quyền của Liên Hợp Quốc (Vietnamese, vi ) | TUYEN NGON TOAN! THE% GIOI% VE! NHAN QUYEN! CUA# LIEN HOP& QUOC% | TUYEN NGON TOAN! THE% GIOI% VE! NHAN QUYEN! CUA# LIEN HOP& QUOC% | |
命裡有時終須有,命裡無時莫強求 (Chinese, zh ) | 口05衣07月02日06糸05頁03月02,口05衣07火08日06艸07弓08水02 | 口05衣07月02日06糸05頁03月02,口05衣07火08日06艸07弓08水02 | |
⿱𡩧⿺進⿰貝招 (Chinese, zh ) | 宀37 | 宀37 | |
dotted and dotless i | |||
İzmir (Turkish, tr ) | IZMIR | IZMIR | |
ışık (Turkish, tr ) | ISIK | ISIK |
Text | Expected | Actual | |
---|---|---|---|
en | [[w:English language|English]] | [[w:English language|English]] | |
af | [[w:Afrikaans|Afrikaans]] | [[w:Afrikaans|Afrikaans]] | |
ae | [[w:Avestan|Avestan]] | [[w:Avestan|Avestan]] |
Text | Expected | Actual | |
---|---|---|---|
en-toJSON | {"ancestors" : [ "en-ear" ], "code" : "en", "canonicalName" : "English", "wikimediaLanguages" : [ "en", "simple" ], "aliases" : [ "Modern English", "New English" ], "type" : [ "language", "full", "regular" ], "wikidataItem" : "Q1860", "varieties" : [ "Polari", "Yinglish" ], "scripts" : [ "Latn", "Brai", "Shaw", "Dsrt" ], "family" : "gmw-ang", "otherNames" : [], "categoryName" : "English language", "nonEtymological" : "en"} | {"ancestors" : [ "en-ear" ], "code" : "en", "canonicalName" : "English", "wikimediaLanguages" : [ "en", "simple" ], "full" : "en", "aliases" : [ "Modern English", "New English" ], "wikidataItem" : "Q1860", "varieties" : [ "Polari", "Yinglish" ], "scripts" : [ "Latn", "Brai", "Shaw", "Dsrt" ], "family" : "gmw-ang", "otherNames" : [], "categoryName" : "English language", "type" : [ "full", "language", "regular" ]} |
local tests = require("Module:UnitTests")
local m_languages = require("Module:languages")
local tag = require("Module:script utilities").tag_text
-- Auto-create language objects: langs.en -> language object for English.
local langs = require ("Module:languages/cache")
local get_script = require("Module:scripts").getByCode
function tests:check(funcName)
-- Use English language object to test for existence of function.
local func = langs.en[funcName] or error("No function named " .. funcName .. " in language object.")
local options = {}
local function show_remaining_arguments(...)
if select("#", ...) > 0 then
local output = require "Module:array"()
for _, arg in ipairs {...} do
output:insert(", ")
output:insert(tostring(arg))
end
return output:concat()
else
return ""
end
end
return function(self, lang, example, expected, ...)
function options.display(text)
return tag(text, lang)
end
self:equals(tag(example, lang) .. " (" .. lang:getCanonicalName() .. ", <code>" .. lang:getCode() .. "</code>)" .. show_remaining_arguments(...),
func(lang, example, ...),
expected,
options)
end
end
function tests:test_makeEntryName()
local examples = {
{ langs.la, "hūmānitās", "humanitas" },
{ langs.la, "coëō", "coeo" },
{ langs.ha, "àzàhàr̃iyyā̀", "azahariyya" },
{ langs.en, "alas!", "alas" },
{ langs.es, "¿cómo te llamas?", "cómo te llamas" },
{ langs.ru, "ӓ ё", "а ё" },
{ langs.es, "¿ ?", "¿ ?" },
{ langs.es, "¡ !", "¡ !" },
{ langs.fr, "mais bien sûr !", "mais bien sûr" },
{ langs.mul, "¡", "¡" },
{ langs.grc, "Πηληῐ̈ᾰ́δης", "Πηληϊάδης" },
{ langs.ar, "العَرَبِيَّة", "العربية" },
{ langs.ar, "ٱ", "ٱ" }, -- special case: alif waṣla
{ langs.ar, "ـُ", "ـُ" }, -- special case: taṭwīl with vowel diacritic
{ langs.okm, "치〯", "치" },
"script-specific (no change when wrong script code is provided)",
{ langs.az, "ایشؽق", "ایشیق" },
{ langs.az, "ایشؽق", "ایشؽق", get_script("Cyrl") }, -- no change with wrong script code
}
self:iterate(examples, self:check("makeEntryName"))
end
function tests:test_makeDisplayText()
local examples = {
{ langs.ta, "ஸ்ரீகாகுளம்", "ஶ்ரீகாகுளம்" },
}
self:iterate(examples, self:check("makeDisplayText"))
end
function tests:test_makeSortKey()
local examples = {
"diacritic removal",
{ langs.grc, "Πηληϊάδης Αἶνος", "ΠΗΛΗΙΑΔΗΣ ΑΙΝΟΣ" },
{ langs.nv, "shį́į́dą́ą́ʼ", "SIIDAAZ" },
"dedicated sortkey modules",
{ langs.vi, "Tuyên ngôn toàn thế giới về nhân quyền của Liên Hợp Quốc", "TUYEN NGON TOAN! THE% GIOI% VE! NHAN QUYEN! CUA# LIEN HOP& QUOC%" },
{ langs.zh, "命裡有時終須有,命裡無時莫強求", "口05衣07月02日06糸05頁03月02,口05衣07火08日06艸07弓08水02" },
{ langs.zh, "⿱𡩧⿺進⿰貝招", "宀37" },
"dotted and dotless i",
{ langs.tr, "İzmir", "IZMIR" },
{ langs.tr, "ışık", "ISIK" }
}
self:iterate(examples, self:check("makeSortKey"))
end
function tests:test_getWikipediaArticle()
local examples = {
{"en", "English language"},
{"af", "Afrikaans"},
{"ae", "Avestan"},
{"ht", "Haitian Creole"},
{"ase", "American Sign Language"},
{"dv", "Maldivian language"},
{"eo", "Esperanto"},
{"goh", "Old High German"},
}
self:iterate(examples, function(self, lang, expected)
self:equals(lang, langs[lang]:getWikipediaArticle(), expected)
end)
end
function tests:test_makeWikipediaLink()
local examples = {
{"en", "[[w:English language|English]]"},
{"af", "[[w:Afrikaans|Afrikaans]]"},
{"ae", "[[w:Avestan|Avestan]]"},
}
self:iterate(examples, function(self, lang, expected)
self:equals(lang, langs[lang]:makeWikipediaLink(), expected, {nowiki=1})
end)
end
function tests:test_getFamily()
local examples = {
{"en", "gmw-ang"},
{"ht", "crp"},
{"ase", "sgn"}
}
self:iterate(examples, function(self, lang, expected)
self:equals(lang, langs[lang]:getFamily():getCode(), expected)
end)
end
function tests:test_getScriptCodes()
local examples = {
{"en", {"Latn", "Brai", "Shaw", "Dsrt"}},
{"ht", {"Latn"}},
{"ase", {"Sgnw"}}
}
self:iterate(examples, function(self, lang, expected)
self:equals_deep(lang, langs[lang]:getScriptCodes(), expected, {})
end)
end
function tests:test_getOtherNames()
local examples = {
{"ht", {"Creole", "Haitian", "Kreyòl"}},
{"ase", {"Ameslan", "ASL"}}
}
self:iterate(examples, function(self, lang, expected)
self:equals_deep(lang, langs[lang]:getOtherNames(), expected, {})
end)
end
function tests:test_getCategoryName()
local examples = {
{"en", "English language"},
{"af", "Afrikaans language"},
{"av", "Avar language"},
{"ht", "Haitian Creole language"},
{"ase", "American Sign Language"}
}
self:iterate(examples, function(self, lang, expected)
self:equals(lang, langs[lang]:getCategoryName(), expected)
end)
end
function tests:test_getWikidataItem()
local examples = {
{"en", "Q1860"},
{"eo", "Q143"},
{"aql-pro", "Q18389588"},
{"mkh-ban-pro", nil},
}
self:iterate(examples, function(self, lang, expected)
self:equals(lang, langs[lang]:getWikidataItem(), expected)
end)
end
function tests:test_toJSON()
self:equals('en-toJSON', langs.en:toJSON(), [[{"ancestors" : [ "en-ear" ], "code" : "en", "canonicalName" : "English", "wikimediaLanguages" : [ "en", "simple" ], "aliases" : [ "Modern English", "New English" ], "type" : [ "language", "full", "regular" ], "wikidataItem" : "Q1860", "varieties" : [ "Polari", "Yinglish" ], "scripts" : [ "Latn", "Brai", "Shaw", "Dsrt" ], "family" : "gmw-ang", "otherNames" : [], "categoryName" : "English language", "nonEtymological" : "en"}]])
end
function tests:test_getFull()
local examples = {
{ "de", "de" },
{ "de-AT", "de" },
{ "de-AT-vie", "de" },
{ "gem", "gem" },
}
self:iterate(examples, function(self, lang, expected)
self:equals(lang, langs[lang]:getFull():getCode(), expected)
end)
end
for k, v in require "Module:table".sortedPairs(tests) do
if type(k) == "string" and k:sub(1, 5) == "test_" then
local new_key = k:gsub('^test_(.+)$', 'testcases for <code>%1</code>')
tests[new_key], tests[k] = v, nil
end
end
return tests