Jump to content

Module:links/testcases

ពីWiktionary

Documentation for this module may be created at Module:links/testcases/doc

--[=[
    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>')

    -- constructed terms ([[Module:languages]])
    self:preprocess_equals('{{' .. p.temp .. '|' .. lang .. 'sjn|mithril}}',
                           '<span class="Latn" lang="sjn">[[Appendix:Sindarin/mithril#Sindarin|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">[[Appendix:Proto-Indo-European/bʰréh₂tēr#Proto-Indo-European|*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">[[Appendix:Proto-Slavic/dьnь#Proto-Slavic|*dьnь]] [[Appendix:Proto-Slavic/serda#Proto-Slavic|*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]] .. [[Appendix:Latin/verbum#Latin|*verbum]] .. [[Appendix:Latin/verbum#Latin|verbum]] .. [[Appendix:Latin/verbum#Latin|*verba]]</span>')
    self:preprocess_equals('{{' .. p.temp .. '|' .. lang .. 'sla-pro|*[[serda]]}}',
                           '<span class="Latinx" lang="sla-pro">*[[Appendix:Proto-Slavic/serda#Proto-Slavic|serda]]</span>')
    self:preprocess_equals('{{' .. p.temp .. '|' .. lang .. 'sla-pro|*[[*serda]] .. [[*serda]] .. [[serda]] .. [[*serda|serda]] .. [[*serda|*serda]]}}',
                           '<span class="Latinx" lang="sla-pro">[[Appendix:Proto-Slavic/serda#Proto-Slavic|*serda]] .. [[Appendix:Proto-Slavic/serda#Proto-Slavic|*serda]] .. [[Appendix:Proto-Slavic/serda#Proto-Slavic|serda]] .. [[Appendix:Proto-Slavic/serda#Proto-Slavic|serda]] .. [[Appendix:Proto-Slavic/serda#Proto-Slavic|*serda]]</span>')
    self:preprocess_equals('{{' .. p.temp .. '|' .. lang .. 'sla-pro|*[[dьnь|alt1]] [[serda|alt2]]}}',
                           '<span class="Latinx" lang="sla-pro">*[[Appendix:Proto-Slavic/dьnь#Proto-Slavic|alt1]] [[Appendix:Proto-Slavic/serda#Proto-Slavic|alt2]]</span>')
    self:preprocess_equals('{{' .. p.temp .. '|' .. lang .. 'und|[[attested]] .. [[*unattested]] .. [[*unattested|unattested-alt]]}}',
                           '<span class="Latn" lang="und">[[attested]] .. *unattested .. unattested-alt</span>')

    -- 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|كلمة]]</span> (<span lang="">kalima</span>)')
    self:preprocess_equals('{{' .. p.temp .. '|' .. lang .. 'ru|русский}}',
                           '<span class="Cyrl" lang="ru">[[русский#Russian|русский]]</span> (<span lang="">russkij</span>)')

    -- gloss
    self:preprocess_equals('{{' .. p.temp .. '|' .. lang .. 'ru|русский|gloss=Russian}}',
                           '<span class="Cyrl" lang="ru">[[русский#Russian|русский]]</span> (<span lang="">russkij</span>, <span class="mention-gloss-double-quote">“</span><span class="mention-gloss">Russian</span><span class="mention-gloss-double-quote">”</span>)')

end

function p:check_remove_diacr(lang, unstripped, stripped)
	self:equals(
		('[%s] <i class="mention %s" lang="%s">%s</i>'):format(lang:getCode(), m_util.detect_script(unstripped, lang), 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.getLanguageByCode("ru"), 'ба́бушка', 'бабушка')
	self:check_remove_diacr(m_languages.getLanguageByCode("mk"), 'ЃѓЌќ - е́а́́', 'ЃѓЌќ - еа')  -- [[w:Macedonian alphabet]]
	self:check_remove_diacr(m_languages.getLanguageByCode("sh"), 'Łł ĆćŃńŹź Ŭŭ - ȁàȃáā ȐȒŔ ѝӣ', 'Łł ĆćŃńŹź Ŭŭ - aaaaa RRR ии') -- [[w:Serbian Cyrillic alphabet]] / [[w:Gaj's Latin alphabet]]
end

return p