Pergi ke kandungan

Modul:languages/testcases

Daripada Wikikamus

9 of 59 tests failed. (refresh)

TextExpectedActual
testcases for getCategoryName:
PassedmsBahasa MelayuBahasa Melayu
PassedafBahasa AfrikaansBahasa Afrikaans
PassedavBahasa AvarBahasa Avar
PassedhtBahasa Kreol HaitiBahasa Kreol Haiti
FailedaseBahasa Tangan Amerika SyarikatBahasa American Sign Language
TextExpectedActual
testcases for getFamily:
Passedengmw-anggmw-ang
Passedhtcrpcrp
Passedasesgnsgn
TextExpectedActual
testcases for getFull:
Passeddedede
Passedde-ATdede
Passedde-AT-viedede
Passedgemgemgem
TextExpectedActual
testcases for getOtherNames:
Failedht{"Creole", "Haitian", "Kreyòl"}{"Creole", "Haitian", "Kreyòl"}
Failedase{"Ameslan", "ASL"}{"Ameslan", "ASL"}
TextExpectedActual
testcases for getScriptCodes:
Passeden{"Latn", "Brai", "Shaw", "Dsrt"}{"Latn", "Brai", "Shaw", "Dsrt"}
Passedht{"Latn"}{"Latn"}
Passedase{"Sgnw"}{"Sgnw"}
TextExpectedActual
testcases for getWikidataItem:
PassedenQ1860Q1860
PassedeoQ143Q143
Passedaql-proQ18389588Q18389588
Failedmkh-ban-pro(nil)Q116773189
TextExpectedActual
testcases for getWikipediaArticle:
PassedmsBahasa MelayuBahasa Melayu
PassedenBahasa InggerisBahasa Inggeris
PassedafBahasa AfrikaansBahasa Afrikaans
FailedaeBahasa AvestanAvestan
PassedhtBahasa Kreol HaitiBahasa Kreol Haiti
PassedaseAbjad tangan Amerika SyarikatAbjad tangan Amerika Syarikat
FaileddvBahasa DiheviBahasa Divehi
PassedeoBahasa EsperantoBahasa Esperanto
PassedgohBahasa Jerman Hulu KunoBahasa Jerman Hulu Kuno
TextExpectedActual
testcases for makeDisplayText:
Passedஸ்ரீகாகுளம் (Tamil, ta)ஶ்ரீகாகுளம்ஶ்ரீகாகுளம்
TextExpectedActual
testcases for makeEntryName:
Passedhūmānitās (Latin, la)humanitashumanitas
Passedcoëō (Latin, la)coeocoeo
Passedàzàhàr̃iyyā̀ (Hausa, ha)azahariyyaazahariyya
Passedalas! (Inggeris, en)alasalas
Passed¿cómo te llamas? (Sepanyol, es)cómo te llamascómo te llamas
Passedӓ ё (Rusia, ru)а ёа ё
Passed¿ ? (Sepanyol, es)¿ ?¿ ?
Passed¡ ! (Sepanyol, es)¡ !¡ !
Passedmais bien sûr ! (Perancis, fr)mais bien sûrmais bien sûr
Passed¡ (Translingual, mul)¡¡
PassedΠηληῐ̈ᾰ́δης (Yunani Purba, grc)ΠηληϊάδηςΠηληϊάδης
Passedالعَرَبِيَّة (Arab, ar)العربيةالعربية
Passedٱ (Arab, ar)ٱٱ
Passedـُ (Arab, ar)ـُـُ
Passed치〯 (Korea Pertengahan, okm)
script-specific (no change when wrong script code is provided)
Passedایشؽق (Azeri, az)ایشیقایشیق
Passedایشؽق (Azeri, az), tableایشؽقایشؽق
TextExpectedActual
testcases for makeSortKey:
diacritic removal
PassedΠηληϊάδης Αἶνος (Yunani Purba, grc)ΠΗΛΗΙΑΔΗΣ ΑΙΝΟΣΠΗΛΗΙΑΔΗΣ ΑΙΝΟΣ
Passedshį́į́dą́ą́ʼ (Navajo, nv)SIIDAAZSIIDAAZ
dedicated sortkey modules
FailedTuyên ngôn toàn thế giới về nhân quyền của Liên Hợp Quốc (Vietnam, vi)TUYEN NGON TOAN! THE% GIOI% VE! NHAN QUYEN! CUA# LIEN HOP& QUOC%TUYEN NGON TOAN! THE% GIOI% VE! NHAN QUYEN! CUA# LIEN HOP& QUOC%
Failed命裡有時終須有,命裡無時莫強求 (Cina, 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
Passed⿱𡩧⿺進⿰貝招 (Cina, zh)宀37宀37
dotted and dotless i
Passedİzmir (Turki, tr)IZMIRIZMIR
Passedışık (Turki, tr)ISIKISIK
TextExpectedActual
testcases for makeWikipediaLink:
Passedms[[w:Bahasa Melayu|Melayu]][[w:Bahasa Melayu|Melayu]]
Passedid[[w:Bahasa Indonesia|Indonesia]][[w:Bahasa Indonesia|Indonesia]]
Passeden[[w:Bahasa Inggeris|Inggeris]][[w:Bahasa Inggeris|Inggeris]]
TextExpectedActual
testcases for toJSON:
Faileden-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" : "Inggeris", "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" : "Bahasa Inggeris", "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ą́ą́ʼ", "SIIDAAZ" },
		"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", "TUYEN NGON TOAN! THE% GIOI% VE! NHAN QUYEN! CUA# LIEN HOP& QUOC%" },
		{ 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", "IZMIR" },
		{ langs.tr, "ışık", "ISIK" }
	}
	self:iterate(examples, self:check("makeSortKey"))
end

function tests:test_getWikipediaArticle()
	local examples = {
		{"ms", "Bahasa Melayu"},
		{"en", "Bahasa Inggeris"},
		{"af", "Bahasa Afrikaans"},
		{"ae", "Bahasa Avestan"},
		{"ht", "Bahasa Kreol Haiti"},
		{"ase", "Abjad tangan Amerika Syarikat"},
		{"dv", "Bahasa Dihevi"},
		{"eo", "Bahasa Esperanto"},
		{"goh", "Bahasa Jerman Hulu Kuno"},
	}

	self:iterate(examples, function(self, lang, expected)
		self:equals(lang, langs[lang]:getWikipediaArticle(), expected)
	end)
end

function tests:test_makeWikipediaLink()
	local examples = {
		{"ms", "[[w:Bahasa Melayu|Melayu]]"},
		{"id", "[[w:Bahasa Indonesia|Indonesia]]"},
		{"en", "[[w:Bahasa Inggeris|Inggeris]]"},
	}
	
	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 = {
		{"ms", "Bahasa Melayu"},
		{"af", "Bahasa Afrikaans"},
		{"av", "Bahasa Avar"},
		{"ht", "Bahasa Kreol Haiti"},
		{"ase", "Bahasa Tangan Amerika Syarikat"}
	}

	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