Module:links/testcases

Definition from Wiktionary, the free dictionary
Jump to: navigation, search

1 test failed. (refresh)

test_links:
Text Expected Actual
Passed {{l|la|verbum}} <span class="Latn" lang="la">[[verbum#Latin|verbum]]</span> <span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>
Passed {{l|en|[[God]] be [[with]] [[you]]}} <span class="Latn" lang="en">[[God#English|God]] be [[with#English|with]] [[you#English|you]]</span> <span class="Latn" lang="en">[[God#English|God]] be [[with#English|with]] [[you#English|you]]</span>
Passed {{l|en|go|went}} <span class="Latn" lang="en">[[go#English|went]]</span> <span class="Latn" lang="en">[[go#English|went]]</span>
Passed {{l|en|to [[go]]|went}} <span class="Latn" lang="en">to [[go#English|go]]</span> <span class="Latn" lang="en">to [[go#English|go]]</span>
Passed {{l|en|go|id=game}} <span class="Latn" lang="en">[[go#English-game|go]]</span> <span class="Latn" lang="en">[[go#English-game|go]]</span>
Passed {{l|sjn|mithril}} <span class="Latn" lang="sjn">[[Appendix&#x3a;Sindarin/mithril|mithril]]</span> <span class="Latn" lang="sjn">[[Appendix&#x3a;Sindarin/mithril|mithril]]</span>
Passed {{l|ine-pro|*bʰréh₂tēr}} <span class="Latinx" lang="ine-pro">[[Reconstruction&#x3a;Proto-Indo-European/bʰréh₂tēr|*bʰréh₂tēr]]</span> <span class="Latinx" lang="ine-pro">[[Reconstruction&#x3a;Proto-Indo-European/bʰréh₂tēr|*bʰréh₂tēr]]</span>
Passed {{#iferror:{{l|ine-pro|bʰréh₂tēr}}|Script error}} Script error Script error
Passed {{l|sla-pro|[[*dьnь]] [[*serda]]}} <span class="Latinx" lang="sla-pro">[[Reconstruction&#x3a;Proto-Slavic/dьnь|*dьnь]] [[Reconstruction&#x3a;Proto-Slavic/serda|*serda]]</span> <span class="Latinx" lang="sla-pro">[[Reconstruction&#x3a;Proto-Slavic/dьnь|*dьnь]] [[Reconstruction&#x3a;Proto-Slavic/serda|*serda]]</span>
Passed {{l|la|verbum .. [[verbum]] .. [[*verbum]] .. [[*verbum|verbum]] .. [[*verbum|*verba]]}} <span class="Latn" lang="la">verbum .. [[verbum#Latin|verbum]] .. [[Reconstruction&#x3a;Latin/verbum|*verbum]] .. [[Reconstruction&#x3a;Latin/verbum|verbum]] .. [[Reconstruction&#x3a;Latin/verbum|*verba]]</span> <span class="Latn" lang="la">verbum .. [[verbum#Latin|verbum]] .. [[Reconstruction&#x3a;Latin/verbum|*verbum]] .. [[Reconstruction&#x3a;Latin/verbum|verbum]] .. [[Reconstruction&#x3a;Latin/verbum|*verba]]</span>
Passed {{l|sla-pro|*[[serda]]}} <span class="Latinx" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/serda|serda]]</span> <span class="Latinx" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/serda|serda]]</span>
Failed {{l|sla-pro|*[[*serda]] .. [[*serda]] .. [[serda]] .. [[*serda|serda]] .. [[*serda|*serda]]}} <span class="Latinx" lang="sla-pro">[[Reconstruction&#x3a;Proto-Slavic/serda|*serda]] .. [[Reconstruction&#x3a;Proto-Slavic/serda|*serda]] .. [[Reconstruction&#x3a;Proto-Slavic/serda|serda]] .. [[Reconstruction&#x3a;Proto-Slavic/serda|serda]] .. [[Reconstruction&#x3a;Proto-Slavic/serda|*serda]]</span> <span class="Latinx" lang="sla-pro">[[Reconstruction&#x3a;Proto-Slavic/*serda|*serda]] .. [[Reconstruction&#x3a;Proto-Slavic/*serda|*serda]] .. [[Reconstruction&#x3a;Proto-Slavic/serda|serda]] .. [[Reconstruction&#x3a;Proto-Slavic/*serda|serda]] .. [[Reconstruction&#x3a;Proto-Slavic/*serda|*serda]]</span>
Passed {{l|sla-pro|*[[dьnь|alt1]] [[serda|alt2]]}} <span class="Latinx" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/dьnь|alt1]] [[Reconstruction&#x3a;Proto-Slavic/serda|alt2]]</span> <span class="Latinx" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/dьnь|alt1]] [[Reconstruction&#x3a;Proto-Slavic/serda|alt2]]</span>
Passed {{l|und|[[attested]] .. [[*unattested]] .. [[*unattested|unattested-alt]]}} <span class="Zyyy" lang="und">[[attested|attested]] .. *unattested .. unattested-alt</span>[[Category:Undetermined language links]] <span class="Zyyy" lang="und">[[attested|attested]] .. *unattested .. unattested-alt</span>[[Category:Undetermined language links]]
Passed {{l|sh|српски}} / {{l|sh|srpski}} <span class="Cyrl" lang="sh">[[српски#Serbo-Croatian|српски]]</span> / <span class="Latn" lang="sh">[[srpski#Serbo-Croatian|srpski]]</span> <span class="Cyrl" lang="sh">[[српски#Serbo-Croatian|српски]]</span> / <span class="Latn" lang="sh">[[srpski#Serbo-Croatian|srpski]]</span>
Passed {{l|la|verbō}} <span class="Latn" lang="la">[[verbo#Latin|verbō]]</span> <span class="Latn" lang="la">[[verbo#Latin|verbō]]</span>
Passed {{l|la|verbum|g=m}} <span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>&nbsp;<span class="gender"><abbr title="masculine gender">m</abbr></span> <span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>&nbsp;<span class="gender"><abbr title="masculine gender">m</abbr></span>
Passed {{l|la|verbum|g=m|g2=f}} <span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>&nbsp;<span class="gender"><abbr title="masculine gender">m</abbr>, <abbr title="feminine gender">f</abbr></span> <span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>&nbsp;<span class="gender"><abbr title="masculine gender">m</abbr>, <abbr title="feminine gender">f</abbr></span>
Passed {{l|la|verbum|g=m-f-p}} <span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>&nbsp;<span class="gender"><abbr title="masculine gender">m</abbr>&nbsp;<abbr title="feminine gender">f</abbr>&nbsp;<abbr title="plural number">pl</abbr></span> <span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>&nbsp;<span class="gender"><abbr title="masculine gender">m</abbr>&nbsp;<abbr title="feminine gender">f</abbr>&nbsp;<abbr title="plural number">pl</abbr></span>
Passed {{l|ar|كلمة|tr=kalima}} <span class="Arab" lang="ar">[[كلمة#Arabic|كلمة]]&rlm;</span> <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> <span class="Arab" lang="ar">[[كلمة#Arabic|كلمة]]&rlm;</span> <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>
Passed {{l|ru|русский}} <span class="Cyrl" lang="ru">[[русский#Russian|русский]]</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> <span class="Cyrl" lang="ru">[[русский#Russian|русский]]</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>
Passed {{l|ru|русский|gloss=Russian}} <span class="Cyrl" lang="ru">[[русский#Russian|русский]]</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> <span class="Cyrl" lang="ru">[[русский#Russian|русский]]</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>
Passed {{l|en|[[w:English language]]}} <span class="Latn" lang="en">[[w:English language|w:English language]]</span> <span class="Latn" lang="en">[[w:English language|w:English language]]</span>
Passed {{l|en|[[wikipedia:English language]]}} <span class="Latn" lang="en">[[wikipedia:English language|wikipedia:English language]]</span> <span class="Latn" lang="en">[[wikipedia:English language|wikipedia:English language]]</span>
test_remove_diacritics:
Text Expected Actual
Passed [ru] ба́бушка бабушка бабушка
Passed [mk] ЃѓЌќ - е́а́́ ЃѓЌќ - еа ЃѓЌќ - еа
Passed [sh] Łł ĆćŃńŹź Ŭŭ - ȁàȃáā ȐȒŔ ѝӣ Łł ĆćŃńŹź Ŭŭ - aaaaa RRR ии Łł ĆćŃńŹź Ŭŭ - aaaaa RRR ии

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

local p = require('Module:UnitTests')
local m_links = require('Module:links')
local m_util = require('Module:utilities')

function p:test_links()
	p.temp = mw.getCurrentFrame().args.temp or "l"
	local compat = mw.getCurrentFrame().args.compat
	lang = compat and "lang=" or ""

	-- simple linking ([[Module:languages]])
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'la|verbum}}',
		'<span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>'
	)

	-- using wikilinks
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'en|[[God]] be [[with]] [[you]]}}',
		'<span class="Latn" lang="en">[[God#English|God]] be [[with#English|with]] [[you#English|you]]</span>'
	)

	-- alternative text
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'en|go|went}}',
		'<span class="Latn" lang="en">[[go#English|went]]</span>'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'en|to [[go]]|went}}',
		'<span class="Latn" lang="en">to [[go#English|go]]</span>'
	)

	-- sense id
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'en|go|id=game}}',
		'<span class="Latn" lang="en">[[go#English-game|go]]</span>'
	)

	-- constructed terms ([[Module:languages]])
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'sjn|mithril}}',
		'<span class="Latn" lang="sjn">[[Appendix&#x3a;Sindarin/mithril|mithril]]</span>'
	)

	-- reconstructed terms ([[Module:languages]])
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'ine-pro|*bʰréh₂tēr}}',
		'<span class="Latinx" lang="ine-pro">[[Reconstruction&#x3a;Proto-Indo-European/bʰréh₂tēr|*bʰréh₂tēr]]</span>'
	)
	self:preprocess_equals(
		'{{#iferror:{{' .. p.temp .. '|' .. lang .. 'ine-pro|bʰréh₂tēr}}|Script error}}',
		'Script error'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'sla-pro|[[*dьnь]] [[*serda]]}}',
		'<span class="Latinx" lang="sla-pro">[[Reconstruction&#x3a;Proto-Slavic/dьnь|*dьnь]] [[Reconstruction&#x3a;Proto-Slavic/serda|*serda]]</span>'
	)

	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'la|verbum .. [[verbum]] .. [[*verbum]] .. [[*verbum|verbum]] .. [[*verbum|*verba]]}}',
		'<span class="Latn" lang="la">verbum .. [[verbum#Latin|verbum]] .. [[Reconstruction&#x3a;Latin/verbum|*verbum]] .. [[Reconstruction&#x3a;Latin/verbum|verbum]] .. [[Reconstruction&#x3a;Latin/verbum|*verba]]</span>'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'sla-pro|*[[serda]]}}',
		'<span class="Latinx" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/serda|serda]]</span>'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'sla-pro|*[[*serda]] .. [[*serda]] .. [[serda]] .. [[*serda|serda]] .. [[*serda|*serda]]}}',
		'<span class="Latinx" lang="sla-pro">[[Reconstruction&#x3a;Proto-Slavic/serda|*serda]] .. [[Reconstruction&#x3a;Proto-Slavic/serda|*serda]] .. [[Reconstruction&#x3a;Proto-Slavic/serda|serda]] .. [[Reconstruction&#x3a;Proto-Slavic/serda|serda]] .. [[Reconstruction&#x3a;Proto-Slavic/serda|*serda]]</span>'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'sla-pro|*[[dьnь|alt1]] [[serda|alt2]]}}',
		'<span class="Latinx" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/dьnь|alt1]] [[Reconstruction&#x3a;Proto-Slavic/serda|alt2]]</span>'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'und|[[attested]] .. [[*unattested]] .. [[*unattested|unattested-alt]]}}',
		'<span class="Zyyy" lang="und">[[attested|attested]] .. *unattested .. unattested-alt</span>[[Category:Undetermined language links]]'
	)

	-- script detection ([[Module:utilities]].detect_script())
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'sh|српски}} / {{' .. p.temp .. '|' .. lang .. 'sh|srpski}}',
		'<span class="Cyrl" lang="sh">[[српски#Serbo-Croatian|српски]]</span> / <span class="Latn" lang="sh">[[srpski#Serbo-Croatian|srpski]]</span>'
	)

	-- target page's title (prepare_title())
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'la|verbō}}',
		'<span class="Latn" lang="la">[[verbo#Latin|verbō]]</span>'
	)

	-- gender and number ([[Module:gender and number]])
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'la|verbum|g=m}}',
		'<span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>&nbsp;<span class="gender"><abbr title="masculine gender">m</abbr></span>'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'la|verbum|g=m|g2=f}}',
		'<span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>&nbsp;<span class="gender"><abbr title="masculine gender">m</abbr>, <abbr title="feminine gender">f</abbr></span>'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'la|verbum|g=m-f-p}}',
		'<span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>&nbsp;<span class="gender"><abbr title="masculine gender">m</abbr>&nbsp;<abbr title="feminine gender">f</abbr>&nbsp;<abbr title="plural number">pl</abbr></span>'
	)

	-- transliteration
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'ar|كلمة|tr=kalima}}',
		'<span class="Arab" lang="ar">[[كلمة#Arabic|كلمة]]&rlm;</span> <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>'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'ru|русский}}',
		'<span class="Cyrl" lang="ru">[[русский#Russian|русский]]</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
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'ru|русский|gloss=Russian}}',
		'<span class="Cyrl" lang="ru">[[русский#Russian|русский]]</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
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'en|[[w:English language]]}}',
		'<span class="Latn" lang="en">[[w:English language|w:English language]]</span>'
	)
	self:preprocess_equals(
		'{{' .. p.temp .. '|' .. lang .. 'en|[[wikipedia:English language]]}}',
		'<span class="Latn" lang="en">[[wikipedia:English language|wikipedia:English language]]</span>'
	)

end

function p:check_remove_diacr(lang, unstripped, stripped)
	self:equals(
		('[%s] <i class="mention %s" lang="%s">%s</i>'):format(lang:getCode(), require("Module:scripts").findBestScript(unstripped, lang):getCode(), lang:getCode(), unstripped),
		lang:makeEntryName(unstripped),
		stripped
	)
end

function p:test_remove_diacritics()
	local m_languages = require("Module:languages")
	-- insert here lines of the form:
	self:check_remove_diacr(m_languages.getByCode("ru"), 'ба́бушка', 'бабушка')
	self:check_remove_diacr(m_languages.getByCode("mk"), 'ЃѓЌќ - е́а́́', 'ЃѓЌќ - еа')  -- [[w:Macedonian alphabet]]
	self:check_remove_diacr(m_languages.getByCode("sh"), 'Łł ĆćŃńŹź Ŭŭ - ȁàȃáā ȐȒŔ ѝӣ', 'Łł ĆćŃńŹź Ŭŭ - aaaaa RRR ии') -- [[w:Serbian Cyrillic alphabet]] / [[w:Gaj's Latin alphabet]]
end

return p