Modul:links/testcases

Üdvözlöm, Ön a Modul:links/testcases szó jelentését keresi. A DICTIOUS-ban nem csak a Modul:links/testcases szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a Modul:links/testcases szót egyes és többes számban mondani. Minden, amit a Modul:links/testcases szóról tudni kell, itt található. A Modul:links/testcases szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. AModul:links/testcases és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

--[=[
	Unit tests for ]. Click talk page to run tests.
]=]

local p = require('Module:UnitTests')
local m_links = require('Module:links')
local m_util = require('Module:utilities')
local get_lang_by_code = require("Module:languages").getByCode
local find_best_script = require("Module:scripts").findBestScript

local function tag(lang_code, sc_code)
	return function (text)
		return '<span class="' .. sc_code .. '" lang="' .. lang_code .. '">' .. text .. '</span>'
	end
end

local options = { nowiki = true, show_difference = true }
function p:check_link(example, expected)
	self:preprocess_equals(example, expected, options)
end

function p:test_links()
	local frame = mw.getCurrentFrame()
	local temp = frame.args.temp or "l"
	local compat = frame.args.compat
	local lang = compat and "lang=" or ""
	
local link_examples = {
	'anchor',
	{
		'{{' .. temp .. '|' .. lang .. 'en|-er#Etymology 2|-er}}',
		'<span class="Latn" lang="en">]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|]}}',
		'<span class="Latn" lang="en">]</span>'
	},
	'character entity references in link target',
	{
		'{{' .. temp .. '|' .. lang .. 'nia|wa&#39;a}}',
		'<span class="Latn" lang="nia">]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'nia|wa&#x27;a}}',
		'<span class="Latn" lang="nia">]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'ja|恵&#8204;美|恵&amp;#8204;美}}',
		'<span class="Jpan" lang="ja">]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|&amp;}}',
		'<span class="Latn" lang="nia">]</span>'
	},
	'simple linking', -- (])
	{
		'{{' .. temp .. '|' .. lang .. 'la|verbum}}',
		'<span class="Latn" lang="la">]</span>'
	},

	'using wikilinks',
	{
		'{{' .. temp .. '|' .. lang .. 'en|] be ] ]}}',
		'<span class="Latn" lang="en">] be ] ]</span>'
	},

	'alternative text',
	{
		'{{' .. temp .. '|' .. lang .. 'en|go|went}}',
		'<span class="Latn" lang="en">]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|to ]|went}}',
		'<span class="Latn" lang="en">to ]</span>'
	},

	'sense id',
	{
		'{{' .. temp .. '|' .. lang .. 'en|go|id=game}}',
		'<span class="Latn" lang="en">]</span>'
	},

	'constructed terms', -- (])
	{
		'{{' .. temp .. '|' .. lang .. 'sjn|mithril}}',
		'<span class="Latn" lang="sjn">]</span>'
	},

	'reconstructed terms', -- (])
	{
		'{{' .. temp .. '|' .. lang .. 'ine-pro|*bʰréh₂tēr}}',
		'<span class="Latinx" lang="ine-pro">]</span>'
	},
	{
		'{{#iferror:{{' .. temp .. '|' .. lang .. 'ine-pro|bʰréh₂tēr}}|Script error}}',
		'Script error'

	},
	{
		'{{' .. temp .. '|' .. lang .. 'sla-pro|] ]}}',
		'<span class="Latinx" lang="sla-pro">] ]</span>'
	},

	{
		'{{' .. temp .. '|' .. lang .. 'la|verbum .. ] .. ] .. ] .. ]}}',
		'<span class="Latn" lang="la">verbum .. ] .. ] .. ] .. ]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'sla-pro|*]}}',
		'<span class="Latinx" lang="sla-pro">*]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'sla-pro|*] .. ] .. ] .. ] .. ]}}',
		'<span class="Latinx" lang="sla-pro">] .. ] .. ] .. ] .. ]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'sla-pro|*] ]}}',
		'<span class="Latinx" lang="sla-pro">*] ]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'und|] .. ] .. ]}}',
		'<span class="Zyyy" lang="und">] .. *unattested .. unattested-alt</span>]'
	},

	'script detection', -- (].findBestScript())
	{
		'{{' .. temp .. '|' .. lang .. 'sh|српски}} / {{' .. temp .. '|' .. lang .. 'sh|srpski}}',
		'<span class="Cyrl" lang="sh">]</span> / <span class="Latn" lang="sh">]</span>'
	},

	'target page\'s title', -- (Language:makeEntryName())
	{
		'{{' .. temp .. '|' .. lang .. 'la|verbō}}',
		'<span class="Latn" lang="la">]</span>'
	},

	'gender and number', -- (])
	{
		'{{' .. temp .. '|' .. lang .. 'la|verbum|g=m}}',
		'<span class="Latn" lang="la">]</span>&nbsp;<span class="gender"><abbr title="hímnem">hn</abbr></span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'la|verbum|g=m|g2=f}}',
		'<span class="Latn" lang="la">]</span>&nbsp;<span class="gender"><abbr title="hímnem">hn</abbr> vagy <abbr title="nőnem">nn</abbr></span>'
	},

	'transliteration',
	{
		'{{' .. temp .. '|' .. lang .. 'ar|كلمة|tr=kalima}}',
		'<span class="Arab" lang="ar">]</span>&lrm; <span class="mention-gloss-paren annotation-paren">(</span><span lang="ar-Latn" class="tr Latn">kalima</span><span class="mention-gloss-paren annotation-paren">)</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'ru|русский}}',
		'<span class="Cyrl" lang="ru">]</span> <span class="mention-gloss-paren annotation-paren">(</span><span lang="ru-Latn" class="tr Latn">russkij</span><span class="mention-gloss-paren annotation-paren">)</span>'
	},

	'gloss',
	{
		'{{' .. temp .. '|' .. lang .. 'ru|русский|gloss=Russian}}',
		'<span class="Cyrl" lang="ru">]</span> <span class="mention-gloss-paren annotation-paren">(</span><span lang="ru-Latn" class="tr Latn">russkij</span>, <span class="mention-gloss-double-quote">“</span><span class="mention-gloss">Russian</span><span class="mention-gloss-double-quote">”</span><span class="mention-gloss-paren annotation-paren">)</span>'
	},

	'Wikipedia link',
	{
		'{{' .. temp .. '|' .. lang .. 'en|w:word}}',
		'<span class="Latn" lang="en">]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|]}}',
		'<span class="Latn" lang="en">]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|]}}',
		'<span class="Latn" lang="en">]</span>'
	},
	'Linking to titles with special characters: asterisk, slash',
	{
		'{{' .. temp .. '|' .. lang .. 'mul|/}}',
		'<span class="None" lang="mul">]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'mul|//}}',
		'<span class="None" lang="mul">]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'mul|*}}',
		'<span class="None" lang="mul">]</span>'
	},
}
	
	self:iterate(link_examples, 'check_link')
end

function p:check_make_entry_name(lang_code, unstripped, stripped)
	local lang_obj = get_lang_by_code(lang_code)
	local sc_code = find_best_script(unstripped, lang_obj):getCode()
	self:equals(
		(' <i class="mention %s" lang="%s">%s</i>'):format(lang_code, sc_code, lang_code, unstripped),
		lang_obj:makeEntryName(unstripped),
		stripped,
		{ display = tag(lang_code, sc_code) }
	)
end

function p:test_remove_diacritics()
	-- insert here lines of the form:
	local examples = {
		{ 'ru', 'ба́бушка', 'бабушка' },
		{ 'mk', 'ЃѓЌќ - е́а́́', 'ЃѓЌќ - еа' },  -- ]
		{ 'sh', 'Łł ĆćŃńŹź Ŭŭ - ȁàȃáā ȐȒŔ ѝӣ', 'Łł ĆćŃńŹź Ŭŭ - aaaaa RRR ии' }, -- ] / ]
		{ 'grc', 'ᾱ, ᾱ́, ᾰ̓́', 'α, ά, ἄ' },
	}
	self:iterate(examples, 'check_make_entry_name')
end

function p:test_section_link()
	local examples = {
		{
			"w:Hindustani phonology#Vowels , ",
			"[[w:Hindustani phonology#Vowels_%5B%C9%9B%5D,_%5B%C9%9B%CB%90%5D|"
				.. "w:Hindustani phonology § Vowels , ]]"
		},
	}
	
	self:iterate(
		examples,
		function (self, page, expected)
			self:equals(
				mw.text.nowiki(page),
				m_links.section_link(page),
				expected)
		end)
end

return p