Module:links/testcases

20 of 38 tests failed. (refresh)

TextExpectedActual
test_links:
anchor
Passed{{l|en|-er#Etymology 2|-er}}<span class="Latn" lang="en">[[-er#Etymology 2|-er]]</span><span class="Latn" lang="en">[[-er#Etymology 2|-er]]</span>
Passed{{l|en|[[-er#Etymology 2|-er]]}}<span class="Latn" lang="en">[[-er#Etymology 2|-er]]</span><span class="Latn" lang="en">[[-er#Etymology 2|-er]]</span>
character entity references in link target
Passed{{l|nia|wa&#39;a}}<span class="Latn" lang="nia">[[wa'a#Nias|wa'a]]</span><span class="Latn" lang="nia">[[wa'a#Nias|wa'a]]</span>
Passed{{l|nia|wa&#x27;a}}<span class="Latn" lang="nia">[[wa'a#Nias|wa'a]]</span><span class="Latn" lang="nia">[[wa'a#Nias|wa'a]]</span>
Failed{{l|ja|恵&#8204;美|恵&amp;#8204;美}}<span class="Jpan" lang="ja">[[恵‌美#Japanese|恵&amp;#8204;美]]</span><span class="Jpan" lang="ja">[[恵‌美#Japanese|恵<span style="color: red;">‌</span>美]]</span>
Failed{{l|en|&amp;}}<span class="None" lang="en">[[Unsupported titles/Amp#English|&amp;]]</span><span class="None" lang="en">[[<span style="color: red;">&</span>#x26;#English|&#x26;]]</span>
simple linking
Passed{{l|la|verbum}}<span class="Latn" lang="la">[[verbum#Latin|verbum]]</span><span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>
using wikilinks
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>
alternative text
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>
sense id
Failed{{l|en|go|id=game}}<span class="Latn" lang="en">[[go#English-game|go]]</span><span class="Latn" lang="en">[[go#English<span style="color: red;">&</span>#x3A;&#x5F;game|go]]</span>
constructed terms
Failed{{l|sjn|mithril}}<span class="Latn" lang="sjn">[[Appendix&#x3a;Sindarin/mithril|mithril]]</span><span class="Latn" lang="sjn">[[Appendix&#x3<span style="color: red;">A</span>;Sindarin&#x2F;mithril|mithril]]</span>
reconstructed terms
Failed{{l|ine-pro|*bʰréh₂tēr}}<span class="Latn" lang="ine-pro">[[Reconstruction&#x3a;Proto-Indo-European/bʰréh₂tēr|*bʰréh₂tēr]]</span><span class="Latn" lang="ine-pro">[[Reconstruction&#x3<span style="color: red;">A</span>;Proto-Indo-European&#x2F;bʰréh₂tēr|&#x2A;bʰréh₂tēr]]</span>
Passed{{#iferror:{{l|ine-pro|bʰréh₂tēr}}|Script error}}Script errorScript error
Failed{{l|sla-pro|[[*dьnь]] [[*serda]]}}<span class="Latn" lang="sla-pro">[[Reconstruction&#x3a;Proto-Slavic/dьnь|*dьnь]] [[Reconstruction&#x3a;Proto-Slavic/serda|*serda]]</span><span class="Latn" lang="sla-pro">[[Reconstruction&#x3<span style="color: red;">A</span>;Proto-Slavic&#x2F;dьnь|&#x2A;dьnь]] [[Reconstruction&#x3A;Proto-Slavic&#x2F;serda|&#x2A;serda]]</span>
Failed{{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&#x3<span style="color: red;">A</span>;Latin&#x2F;verbum|&#x2A;verbum]] .. [[Reconstruction&#x3A;Latin&#x2F;verbum|verbum]] .. [[Reconstruction&#x3A;Latin&#x2F;verbum|&#x2A;verba]]</span>
Failed{{l|sla-pro|*[[serda]]}}<span class="Latn" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/serda|serda]]</span><span class="Latn" lang="sla-pro"><span style="color: red;">&</span>#x2A;[[Reconstruction&#x3A;Proto-Slavic&#x2F;serda|serda]]</span>
Failed{{l|sla-pro|*[[*serda]] .. [[*serda]] .. [[serda]] .. [[*serda|serda]] .. [[*serda|*serda]]}}<span class="Latn" 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="Latn" lang="sla-pro"><span style="color: red;">&</span>#x2A;[[Reconstruction&#x3A;Proto-Slavic&#x2F;serda|&#x2A;serda]] .. [[Reconstruction&#x3A;Proto-Slavic&#x2F;serda|&#x2A;serda]] .. [[Reconstruction&#x3A;Proto-Slavic&#x2F;serda|serda]] .. [[Reconstruction&#x3A;Proto-Slavic&#x2F;serda|serda]] .. [[Reconstruction&#x3A;Proto-Slavic&#x2F;serda|&#x2A;serda]]</span>
Failed{{l|sla-pro|*[[dьnь|alt1]] [[serda|alt2]]}}<span class="Latn" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/dьnь|alt1]] [[Reconstruction&#x3a;Proto-Slavic/serda|alt2]]</span><span class="Latn" lang="sla-pro"><span style="color: red;">&</span>#x2A;[[Reconstruction&#x3A;Proto-Slavic&#x2F;dьnь|alt1]] [[Reconstruction&#x3A;Proto-Slavic&#x2F;serda|alt2]]</span>
Failed{{l|und|[[attested]] .. [[*unattested]] .. [[*unattested|unattested-alt]]}}<span class="Zyyy" lang="und">[[attested|attested]] .. *unattested .. unattested-alt</span>[[Category:Undetermined language links]]<span class="<span style="color: red;">L</span>atn" lang="und">[[attested|attested]] .. &#x2A;unattested .. unattested-alt</span>[[Category:Undetermined language links]]
script detection
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>
target page's title
Passed{{l|la|verbō}}<span class="Latn" lang="la">[[verbo#Latin|verbō]]</span><span class="Latn" lang="la">[[verbo#Latin|verbō]]</span>
gender and number
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> or <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> or <abbr title="feminine gender">f</abbr></span>
transliteration
Failed{{l|ar|كلمة|tr=kalima}}<span class="Arab" lang="ar">[[كلمة#Arabic|كلمة]]</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><span class="Arab" lang="ar">[[كلمة#Arabic|كلمة]]</span><span style="background-color: pink;">&nbsp;</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>
gloss
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>
Wikipedia link
Failed{{l|en|w:word}}<span class="Latn" lang="en">[[w:word|word]]</span><span class="Latn" lang="en">[[<span style="color: red;">:</span>w&#x3A;word|word]]</span>
Failed{{l|en|[[w:English language]]}}<span class="Latn" lang="en">[[w:English language|w:English language]]</span><span class="Latn" lang="en">[[<span style="color: red;">:</span>w&#x3A;English language|English language]]</span>
Failed{{l|en|[[wikipedia:English language]]}}<span class="Latn" lang="en">[[wikipedia:English language|wikipedia:English language]]</span><span class="Latn" lang="en">[[<span style="color: red;">:</span>wikipedia&#x3A;English language|English language]]</span>
Linking to titles with special characters: asterisk, slash
Failed{{l|mul|/}}<span class="None" lang="mul">[[&#x3a;/#Translingual|/]]</span><span class="None" lang="mul">[[<span style="color: red;">:</span>&#x2F;#Translingual|&#x2F;]]</span>
Failed{{l|mul|//}}<span class="None" lang="mul">[[&#x3a;//#Translingual|//]]</span><s<span style="color: red;">m</span>all>[Term?]</small>
Failed{{l|mul|*}}<span class="None" lang="mul">[[*#Translingual|*]]</span><span class="None" lang="mul">[[*#Translingual|<span style="color: red;">&</span>#x2A;]]</span>
TextExpectedActual
test_remove_diacritics:
Passed[ru] ба́бушкабабушкабабушка
Passed[mk] ЃѓЌќ - е́а́́ЃѓЌќ - еаЃѓЌќ - еа
Failed[sh] Łł ĆćŃńŹź Ŭŭ - ȁàȃáā ȐȒŔ ѝӣŁł ĆćŃńŹź Ŭŭ - aaaaa RRR ииŁł ĆćNnŹź Ŭŭ - aaaaa RRR ии
Passed[grc] ᾱ, ᾱ́, ᾰ̓́α, ά, ἄα, ά, ἄ
TextExpectedActual
test_section_link:
Failedw:Hindustani phonology#Vowels [ɛ], [ɛː]w:Hindustani phonology § Vowels [ɛ], [ɛː]w:Hindustani phonology § Vowels [ɛ], [ɛː]

--[=[
	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')
local get_lang_by_code = require("Module:languages").getByCode

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">[[-er#Etymology 2|-er]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|[[-er#Etymology 2|-er]]}}',
		'<span class="Latn" lang="en">[[-er#Etymology 2|-er]]</span>'
	},
	'character entity references in link target',
	{
		'{{' .. temp .. '|' .. lang .. 'nia|wa&#39;a}}',
		'<span class="Latn" lang="nia">[[wa\'a#Nias|wa\'a]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'nia|wa&#x27;a}}',
		'<span class="Latn" lang="nia">[[wa\'a#Nias|wa\'a]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'ja|恵&#8204;美|恵&amp;#8204;美}}',
		'<span class="Jpan" lang="ja">[[恵‌美#Japanese|恵&amp;#8204;美]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|&amp;}}',
		'<span class="None" lang="en">[[Unsupported titles/Amp#English|&amp;]]</span>'
	},
	'simple linking', -- ([[Module:languages]])
	{
		'{{' .. temp .. '|' .. lang .. 'la|verbum}}',
		'<span class="Latn" lang="la">[[verbum#Latin|verbum]]</span>'
	},

	'using wikilinks',
	{
		'{{' .. 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',
	{
		'{{' .. temp .. '|' .. lang .. 'en|go|went}}',
		'<span class="Latn" lang="en">[[go#English|went]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|to [[go]]|went}}',
		'<span class="Latn" lang="en">to [[go#English|go]]</span>'
	},

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

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

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

	},
	{
		'{{' .. temp .. '|' .. lang .. 'sla-pro|[[*dьnь]] [[*serda]]}}',
		'<span class="Latn" lang="sla-pro">[[Reconstruction&#x3a;Proto-Slavic/dьnь|*dьnь]] [[Reconstruction&#x3a;Proto-Slavic/serda|*serda]]</span>'
	},

	{
		'{{' .. 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>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'sla-pro|*[[serda]]}}',
		'<span class="Latn" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/serda|serda]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'sla-pro|*[[*serda]] .. [[*serda]] .. [[serda]] .. [[*serda|serda]] .. [[*serda|*serda]]}}',
		'<span class="Latn" 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>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'sla-pro|*[[dьnь|alt1]] [[serda|alt2]]}}',
		'<span class="Latn" lang="sla-pro">*[[Reconstruction&#x3a;Proto-Slavic/dьnь|alt1]] [[Reconstruction&#x3a;Proto-Slavic/serda|alt2]]</span>'
	},
	{
		'{{' .. 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', -- (lang_obj:findBestScript())
	{
		'{{' .. temp .. '|' .. lang .. 'sh|српски}} / {{' .. 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', -- (Language:makeEntryName())
	{
		'{{' .. temp .. '|' .. lang .. 'la|verbō}}',
		'<span class="Latn" lang="la">[[verbo#Latin|verbō]]</span>'
	},

	'gender and number', -- ([[Module:gender and number]])
	{
		'{{' .. 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>'
	},
	{
		'{{' .. 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> or <abbr title="feminine gender">f</abbr></span>'
	},

	'transliteration',
	{
		'{{' .. temp .. '|' .. lang .. 'ar|كلمة|tr=kalima}}',
		'<span class="Arab" lang="ar">[[كلمة#Arabic|كلمة]]</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">[[русский#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',
	{
		'{{' .. 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',
	{
		'{{' .. temp .. '|' .. lang .. 'en|w:word}}',
		'<span class="Latn" lang="en">[[w:word|word]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|[[w:English language]]}}',
		'<span class="Latn" lang="en">[[w:English language|w:English language]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'en|[[wikipedia:English language]]}}',
		'<span class="Latn" lang="en">[[wikipedia:English language|wikipedia:English language]]</span>'
	},
	'Linking to titles with special characters: asterisk, slash',
	{
		'{{' .. temp .. '|' .. lang .. 'mul|/}}',
		'<span class="None" lang="mul">[[&#x3a;/#Translingual|/]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'mul|//}}',
		'<span class="None" lang="mul">[[&#x3a;//#Translingual|//]]</span>'
	},
	{
		'{{' .. temp .. '|' .. lang .. 'mul|*}}',
		'<span class="None" lang="mul">[[*#Translingual|*]]</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 = lang_obj:findBestScript(unstripped):getCode()
	self:equals(
		('[%s] <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', 'ЃѓЌќ - е́а́́', 'ЃѓЌќ - еа' },  -- [[w:Macedonian alphabet]]
		{ 'sh', 'Łł ĆćŃńŹź Ŭŭ - ȁàȃáā ȐȒŔ ѝӣ', 'Łł ĆćŃńŹź Ŭŭ - aaaaa RRR ии' }, -- [[w:Serbian Cyrillic alphabet]] / [[w:Gaj's Latin alphabet]]
		{ '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 §&nbsp;Vowels [ɛ], [ɛː]]]"
		},
	}
	
	self:iterate(
		examples,
		function (self, page, expected)
			self:equals(
				mw.text.nowiki(page),
				m_links.section_link(page),
				expected)
		end)
end

return p