All tests passed. (refresh)

Text Expected Actual
test01_basic:
Passed mut.link("ord") [[ord]] [[ord]]
Text Expected Actual
test02_special_cases:
Passed mut.link("-")
Passed mut.link("?") ? ?
Passed mut.link("")    
Text Expected Actual
test03_namespaces:
Passed mut.link(":Kategori:Index") [[:Kategori:Index]] [[:Kategori:Index]]
Passed mut.link("w:Portal:Huvudsida") [[w:Portal:Huvudsida]] [[w:Portal:Huvudsida]]
Passed mut.link(":en:Wiktionary:Main Page") [[:en:Wiktionary:Main Page]] [[:en:Wiktionary:Main Page]]
Text Expected Actual
test04_links_with_special_chars:
Passed mut.link("abc#åäö") [[abc#åäö]] [[abc#åäö]]
Passed mut.link("...") [[...]] [[...]]
Passed mut.link("(") [[(]] [[(]]
Passed mut.link("\"") [["]] [["]]
Text Expected Actual
test05_phrases:
Passed mut.link("compound word") [[compound word]] [[compound word]]
Passed mut.link("[[Surt, sa räven]]") [[Surt, sa räven]] [[Surt, sa räven]]
Passed mut.link("[[Surt, sa räven om rönnbären.]]") [[Surt, sa räven om rönnbären.]] [[Surt, sa räven om rönnbären.]]
Passed mut.link("[[veni, vidi, vici]]") [[veni, vidi, vici]] [[veni, vidi, vici]]
Text Expected Actual
test06_multiword:
Passed mut.link("ord1, ord2") [[ord1]], [[ord2]] [[ord1]], [[ord2]]
Passed mut.link("[[ord1]], ord2") [[ord1]], [[ord2]] [[ord1]], [[ord2]]
Passed mut.link("[[frasord1, frasord2]], ord1, [[ord2]]") [[frasord1, frasord2]], [[ord1]], [[ord2]] [[frasord1, frasord2]], [[ord1]], [[ord2]]
Text Expected Actual
test07_already_linked_should_not_double_link:
Passed mut.link("[[ord]]") [[ord]] [[ord]]
Passed mut.link("[[ord|text]]") [[ord|text]] [[ord|text]]
Passed mut.link("[[ord]]<sup>1</sup>") [[ord]]<sup>1</sup> [[ord]]<sup>1</sup>
Text Expected Actual
test08_invalid_titles:
Passed mut.link(".") . .
Passed mut.link("..") .. ..
Passed mut.link(":") : :
Passed mut.link("> abc") > abc > abc
Text Expected Actual
test09_anchors:
Passed mut.link("[[ord]]", "en") [[ord#Engelska|ord]] [[ord#Engelska|ord]]
Passed mut.link("ord", "en") [[ord#Engelska|ord]] [[ord#Engelska|ord]]
Passed mut.link("[[ord1]], ord2", "en") [[ord1#Engelska|ord1]], [[ord2#Engelska|ord2]] [[ord1#Engelska|ord1]], [[ord2#Engelska|ord2]]
Passed mut.link("[[w:ord]]", "en") [[w:ord]] [[w:ord]]
Passed mut.link("[[Wiktionary:ord]]", "en") [[Wiktionary:ord]] [[Wiktionary:ord]]
Passed mut.link("[[mumsa i|mumsa i sig]]", "en") [[mumsa i#Engelska|mumsa i sig]] [[mumsa i#Engelska|mumsa i sig]]
Passed mut.link("[[Sverige]]s", "sv") [[Sverige#Svenska|Sverige]]s [[Sverige#Svenska|Sverige]]s
Passed mut.link("[[skratte#Bokmål|skratte]]", "no") [[skratte#Bokmål|skratte]] [[skratte#Bokmål|skratte]]
Passed mut.link("[[Surt, sa räven|Nåt helt annat]]") [[Surt, sa räven|Nåt helt annat]] [[Surt, sa räven|Nåt helt annat]]
Passed mut.link("[[veni, vidi, vici|nåt helt annat]]") [[veni, vidi, vici|nåt helt annat]] [[veni, vidi, vici|nåt helt annat]]
Passed mut.link("[[Surt, sa räven|Nåt helt annat]]", "en") [[Surt, sa räven#Engelska|Nåt helt annat]] [[Surt, sa räven#Engelska|Nåt helt annat]]
Passed mut.link("[[veni, vidi, vici|nåt helt annat]]", "en") [[veni, vidi, vici#Engelska|nåt helt annat]] [[veni, vidi, vici#Engelska|nåt helt annat]]
Passed mut.link("[[abc▶]]", "en") [[abc&#9654;#Engelska|abc&#9654;]] [[abc&#9654;#Engelska|abc&#9654;]]
Passed mut.link("[[abc▶]]", "en") [[abc&#x25b6;#Engelska|abc&#x25b6;]] [[abc&#x25b6;#Engelska|abc&#x25b6;]]
Text Expected Actual
test10_do_add_anchor_even_if_pagename_equals_word:
Passed mut.link("link/test", "en") [[link/test#Engelska|link/test]] [[link/test#Engelska|link/test]]
Passed mut.link("[[link/test]]", "en") [[link/test#Engelska|link/test]] [[link/test#Engelska|link/test]]
Passed mut.link("link/test, [[link/test]]", "en") [[link/test#Engelska|link/test]], [[link/test#Engelska|link/test]] [[link/test#Engelska|link/test]], [[link/test#Engelska|link/test]]
Text Expected Actual
test11_entry_name_should_be_used:
Passed mut.link("abdērītānus", "la") [[abderitanus#Latin|abdērītānus]] [[abderitanus#Latin|abdērītānus]]
Passed mut.link("[[abdērītānus]]", "la") [[abderitanus#Latin|abdērītānus]] [[abderitanus#Latin|abdērītānus]]
Passed mut.link("[[abdērītānus#Latin|madeup]]", "la") [[abderitanus#Latin|madeup]] [[abderitanus#Latin|madeup]]
Text Expected Actual
test12_multiword_with_anchors:
Passed mut.link("[[multiple]] [[word]]s", "en") [[multiple#Engelska|multiple]] [[word#Engelska|word]]s [[multiple#Engelska|multiple]] [[word#Engelska|word]]s
Passed mut.link("[[abdērītānus1]] [[abdērītānus2]]", "la") [[abderitanus1#Latin|abdērītānus1]] [[abderitanus2#Latin|abdērītānus2]] [[abderitanus1#Latin|abdērītānus1]] [[abderitanus2#Latin|abdērītānus2]]
Passed mut.link("[[abdērītānus1#Latin|madeup1]] [[abdērītānus2#Latin|madeup2]]", "la") [[abderitanus1#Latin|madeup1]] [[abderitanus2#Latin|madeup2]] [[abderitanus1#Latin|madeup1]] [[abderitanus2#Latin|madeup2]]
local t = require('Modul:UnitTests')
local mut = require('Modul:link')
local lang = require('Modul:lang')

function t:test01_basic()
	self:equals('mut.link("ord")', mut.link("ord"), "[[ord]]", {nowiki=1})
end


function t:test02_special_cases()
	self:equals('mut.link("-")', mut.link("-"), "–", {nowiki=1})
	self:equals('mut.link("?")', mut.link("?"), "?", {nowiki=1})
	self:equals('mut.link("")', mut.link(""), "&nbsp;", {nowiki=1})
end

function t:test03_namespaces()
	self:equals('mut.link(":Kategori:Index")', mut.link(":Kategori:Index"), "[[:Kategori:Index]]", {nowiki=1})
	self:equals('mut.link("w:Portal:Huvudsida")', mut.link("w:Portal:Huvudsida"), "[[w:Portal:Huvudsida]]", {nowiki=1})
	self:equals('mut.link(":en:Wiktionary:Main Page")', mut.link(":en:Wiktionary:Main Page"), "[[:en:Wiktionary:Main Page]]", {nowiki=1})
end

function t:test04_links_with_special_chars()
	self:equals('mut.link("abc#åäö")', mut.link("abc#åäö"), "[[abc#åäö]]", {nowiki=1})
	self:equals('mut.link("...")', mut.link("..."), "[[...]]", {nowiki=1})
	self:equals('mut.link("(")', mut.link("("), "[[(]]", {nowiki=1})
	self:equals('mut.link("\\\"")', mut.link("\""), "[[\"]]", {nowiki=1})
end

function t:test05_phrases()
	self:equals('mut.link("compound word")', mut.link("compound word"), "[[compound word]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[Surt, sa räven]]</nowiki>")', mut.link("[[Surt, sa räven]]"), "[[Surt, sa räven]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[Surt, sa räven om rönnbären.]]</nowiki>")', mut.link("[[Surt, sa räven om rönnbären.]]"), "[[Surt, sa räven om rönnbären.]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[veni, vidi, vici]]</nowiki>")', mut.link("[[veni, vidi, vici]]"), "[[veni, vidi, vici]]", {nowiki=1})
end

function t:test06_multiword()
	self:equals('mut.link("<nowiki>ord1, ord2</nowiki>")', mut.link("ord1, ord2"), "[[ord1]], [[ord2]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[ord1]], ord2</nowiki>")', mut.link("[[ord1]], ord2"), "[[ord1]], [[ord2]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[frasord1, frasord2]], ord1, [[ord2]]</nowiki>")', mut.link("[[frasord1, frasord2]], ord1, ord2"), "[[frasord1, frasord2]], [[ord1]], [[ord2]]", {nowiki=1})
end

function t:test07_already_linked_should_not_double_link()
	self:equals('mut.link("<nowiki>[[ord]]</nowiki>")', mut.link("[[ord]]"), "[[ord]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[ord|text]]</nowiki>")', mut.link("[[ord|text]]"), "[[ord|text]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[ord]]<sup>1</sup></nowiki>")', mut.link("[[ord]]<sup>1</sup>"), "[[ord]]<sup>1</sup>", {nowiki=1})
end

function t:test08_invalid_titles()
	self:equals('mut.link(".")', mut.link("."), ".", {nowiki=1})
	self:equals('mut.link("..")', mut.link(".."), "..", {nowiki=1})
	self:equals('mut.link(":")', mut.link(":"), ":", {nowiki=1})
	self:equals('mut.link("> abc")', mut.link("> abc"), "> abc", {nowiki=1})
end

function t:test09_anchors()
	self:equals('mut.link("<nowiki>[[ord]]", "en</nowiki>")', mut.link("[[ord]]","en"), "[[ord#Engelska|ord]]", {nowiki=1})
	self:equals('mut.link("<nowiki>ord", "en</nowiki>")', mut.link("ord", "en"), "[[ord#Engelska|ord]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[ord1]], ord2", "en</nowiki>")', mut.link("[[ord1]], ord2", "en"), "[[ord1#Engelska|ord1]], [[ord2#Engelska|ord2]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[w:ord]]", "en</nowiki>")', mut.link("[[w:ord]]","en"), "[[w:ord]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[Wiktionary:ord]]", "en</nowiki>")', mut.link("[[Wiktionary:ord]]","en"), "[[Wiktionary:ord]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[mumsa i|mumsa i sig]]", "en</nowiki>")', mut.link("[[mumsa i|mumsa i sig]]","en"), "[[mumsa i#Engelska|mumsa i sig]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[Sverige]]s", "sv</nowiki>")', mut.link("[[Sverige]]s","sv"), "[[Sverige#Svenska|Sverige]]s", {nowiki=1})
	self:equals('mut.link("<nowiki>[[skratte#Bokmål|skratte]]", "no</nowiki>")', mut.link("[[skratte#Bokmål|skratte]]","no"), "[[skratte#Bokmål|skratte]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[Surt, sa räven|Nåt helt annat]]</nowiki>")', mut.link("[[Surt, sa räven|Nåt helt annat]]"), "[[Surt, sa räven|Nåt helt annat]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[veni, vidi, vici|nåt helt annat]]</nowiki>")', mut.link("[[veni, vidi, vici|nåt helt annat]]"), "[[veni, vidi, vici|nåt helt annat]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[Surt, sa räven|Nåt helt annat]]</nowiki>", "en")', mut.link("[[Surt, sa räven|Nåt helt annat]]", "en"), "[[Surt, sa räven#Engelska|Nåt helt annat]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[veni, vidi, vici|nåt helt annat]]</nowiki>", "en")', mut.link("[[veni, vidi, vici|nåt helt annat]]", "en"), "[[veni, vidi, vici#Engelska|nåt helt annat]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[abc&#9654;]]</nowiki>", "en")', mut.link("[[abc&#9654;]]", "en"), "[[abc&#9654;#Engelska|abc&#9654;]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[abc&#x25b6;]]</nowiki>", "en")', mut.link("[[abc&#x25b6;]]", "en"), "[[abc&#x25b6;#Engelska|abc&#x25b6;]]", {nowiki=1})
end

function t:test10_do_add_anchor_even_if_pagename_equals_word()
	self:equals('mut.link("<nowiki>' .. mw.title.getCurrentTitle().text .. '", "en</nowiki>")', mut.link(mw.title.getCurrentTitle().text, "en"), "[[" .. mw.title.getCurrentTitle().text .. "#Engelska|" .. mw.title.getCurrentTitle().text .. "]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[' .. mw.title.getCurrentTitle().text .. ']]", "en</nowiki>")', mut.link("[[" .. mw.title.getCurrentTitle().text .. "]]", "en"), "[[" .. mw.title.getCurrentTitle().text .. "#Engelska|" .. mw.title.getCurrentTitle().text .. "]]", {nowiki=1})
	self:equals('mut.link("<nowiki>' .. mw.title.getCurrentTitle().text .. ', [[' .. mw.title.getCurrentTitle().text .. ']]", "en</nowiki>")', mut.link(mw.title.getCurrentTitle().text .. ", [[" .. mw.title.getCurrentTitle().text .. "]]", "en"), "[[" .. mw.title.getCurrentTitle().text .. "#Engelska|" .. mw.title.getCurrentTitle().text .. "]], [[" .. mw.title.getCurrentTitle().text .. "#Engelska|" .. mw.title.getCurrentTitle().text .. "]]", {nowiki=1})
end

function t:test11_entry_name_should_be_used()
	self:equals('mut.link("<nowiki>abdērītānus", "la</nowiki>")', mut.link("abdērītānus", "la"), "[[" .. lang.getEntryName("la", "abdērītānus") .. "#Latin|abdērītānus]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[abdērītānus]]", "la</nowiki>")', mut.link("[[abdērītānus]]", "la"), "[[" .. lang.getEntryName("la", "abdērītānus") .. "#Latin|abdērītānus]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[abdērītānus#Latin|madeup]]", "la</nowiki>")', mut.link("[[abdērītānus#Latin|madeup]]", "la"), "[[" .. lang.getEntryName("la", "abdērītānus") .. "#Latin|madeup]]", {nowiki=1})
end

function t:test12_multiword_with_anchors()
	self:equals('mut.link("<nowiki>[[multiple]] [[word]]s</nowiki>", "en")', mut.link("[[multiple]] [[word]]s", "en"), "[[multiple#Engelska|multiple]] [[word#Engelska|word]]s", {nowiki=1})
	self:equals('mut.link("<nowiki>[[abdērītānus1]] [[abdērītānus2]]", "la</nowiki>")', mut.link("[[abdērītānus1]] [[abdērītānus2]]", "la"), "[[" .. lang.getEntryName("la", "abdērītānus1") .. "#Latin|abdērītānus1]]" .. " [[" .. lang.getEntryName("la", "abdērītānus2") .. "#Latin|abdērītānus2]]", {nowiki=1})
	self:equals('mut.link("<nowiki>[[abdērītānus1#Latin|madeup1]] [[abdērītānus2#Latin|madeup2]]", "la</nowiki>")', mut.link("[[abdērītānus1#Latin|madeup1]] [[abdērītānus2#Latin|madeup2]]", "la"), "[[" .. lang.getEntryName("la", "abdērītānus1") .. "#Latin|madeup1]]" .. " [[" .. lang.getEntryName("la", "abdērītānus2") .. "#Latin|madeup2]]", {nowiki=1})
end

return t