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(""), " ", {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▶]]</nowiki>", "en")', mut.link("[[abc▶]]", "en"), "[[abc▶#Engelska|abc▶]]", {nowiki=1})
self:equals('mut.link("<nowiki>[[abc▶]]</nowiki>", "en")', mut.link("[[abc▶]]", "en"), "[[abc▶#Engelska|abc▶]]", {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