Kaikki testit läpäisty.

Testi Odotettu Tulos
testAutomaattilinkki
testAutomaattilinkkiInvoke
testLinkkiTaiNil
testLisaparametritClass
testLisaparametritElem
testLisaparametritKuvaus
testLisaparametritKuvausParam
testPeruslinkki
testPeruslinkkiInvoke
testPeruslinkkiVaihtoehtoinenTapa


Kaikki testit läpäisty.

Testi Odotettu Tulos
testAutomaattilinkki
testAutomaattilinkkiInvoke
testLinkkiTaiNil
testLisaparametritClass
testLisaparametritElem
testLisaparametritKuvaus
testLisaparametritKuvausParam
testPeruslinkki
testPeruslinkkiInvoke
testPeruslinkkiVaihtoehtoinenTapa

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

local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

local libName = 'Kielilinkki'


-- Helper to run all tests using sandbox version of the library from the debug console. To run against main lib, use  =p.run()
function suite.runSandbox()
    local frame = mw.getCurrentFrame():newChild{title='testit', args={module=libName .. '/hiekkalaatikko', displayMode='log'}}
    return suite.run(frame)
end

-- Allow test runner to use the sandbox and the primary versions of the library with the same testcases
function suite:module()
    return require('Module:' .. (self.frame and self.frame.args.module or libName))
end

--[[
    Library-specific tests
]]

------------------------------------------------------------------------
-- Helper functions
------------------------------------------------------------------------


------------------------------------------------------------------------
-- Test linkki-funktio, peruskäyttö
------------------------------------------------------------------------

function suite:testPeruslinkki()
    local m = self:module()
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki("fi", "kohde", "teksti"))
    self:assertEquals('<span class="Zzzz linkki" lang="es">[[kohde#Espanja|kohde]]</span>',
                      m.linkki("es", "kohde", nil))
    self:assertEquals('<span class="Jpan linkki" lang="ja">[[良い#Japani|良い]]</span>',
                      m.linkki("ja", "良い", nil))
    
    local stat, msg = pcall(m.linkki, nil, "kohde", "teksti")
    self:assertFalse(stat)
    self:assertStringContains("Pakollinen kieliparametri puuttuu!", msg, true)
    
    local stat, msg = pcall(m.linkki, "fi", nil, "teksti")
    self:assertFalse(stat)
    self:assertStringContains("Pakollinen linkkiparametri puuttuu!", msg, true)

end

function suite:testPeruslinkkiVaihtoehtoinenTapa()
    local m = self:module()
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki{ kieli = "fi", 
                                kohde = "kohde", 
                                teksti = "teksti"
                      }
    )
    
    self:assertEquals('<span class="Zzzz linkki" lang="es">[[kohde#Espanja|kohde]]</span>',
                      m.linkki{ kieli = "es", 
                                kohde = "kohde"
                      }
    )
    
    self:assertEquals('<span class="Jpan linkki" lang="ja">[[良い#Japani|良い]]</span>',
                      m.linkki{
                          kieli = "ja", 
                          kohde = "良い"
                      }
    )
    
end


------------------------------------------------------------------------
-- Test linkki_tai_nil-funktio, peruskäyttö
------------------------------------------------------------------------

function suite:testLinkkiTaiNil()
    local m = self:module()
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki_tai_nil("fi", "kohde", "teksti"))
    self:assertEquals('<span class="Zzzz linkki" lang="es">[[kohde#Espanja|kohde]]</span>',
                      m.linkki_tai_nil("es", "kohde"))
    self:assertEquals('<span class="Jpan linkki" lang="ja">[[良い#Japani|良い]]</span>',
                      m.linkki_tai_nil("ja", "良い"))
    
    
    self:assertTrue(m.linkki_tai_nil("fi") == nil)

end

------------------------------------------------------------------------
-- Test linkki-funktio, lisäparametri elem
------------------------------------------------------------------------

function suite:testLisaparametritElem()
    local m = self:module()
    self:assertEquals('<b class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</b>',
                      m.linkki{
                          kieli = "fi",
                          kohde = "kohde",
                          teksti = "teksti",
                          elem   = "b"
                      }
    )
    
end

------------------------------------------------------------------------
-- Test linkki-funktio, lisäparametri class
------------------------------------------------------------------------

function suite:testLisaparametritClass()
    local m = self:module()
    
    self:assertEquals('<span class="Zzzz kaannos" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki{
                          kieli  = "fi",
                          kohde  = "kohde",
                          teksti = "teksti",
                          class  = "kaannos"
                      }
    )
    
    self:assertEquals('<span class="Zzzz kaannos xxxxxx" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.linkki{
                          kieli  = "fi",
                          kohde  = "kohde",
                          teksti = "teksti",
                          class  = "kaannos xxxxxx"
                      }
    )
    
end

------------------------------------------------------------------------
-- Test linkki-funktio, lisäparametri kuvaus
------------------------------------------------------------------------

function suite:testLisaparametritKuvaus()
    local m = self:module()
    
    self:assertEquals('<span class="Zzzz linkki" lang="fi" data-kuvaus="fi-subs-gen">[[kohde#Suomi|kohteen]]</span>',
                      m.linkki{
                          kieli  = "fi",
                          kohde  = "kohde",
                          teksti = "kohteen",
                          kuvaus = "fi-subs-gen"
                      }
    )
    
end

------------------------------------------------------------------------
-- Test linkki-funktio, lisäparametri kuvaus-param
------------------------------------------------------------------------

function suite:testLisaparametritKuvausParam()
    local m = self:module()

    local p = {
        kieli  = "ja",
        kohde  = "日本語",
        teksti = "nihongo",
        kuvaus = "ja-transkriptio",
        ["kuvaus-param"] = { [4] = "nihongo" }
    }
    
    local       odotettu = '<span class="Jpan linkki" '
        .. 'lang="ja" '
        .. 'data-kuvaus="ja-transkriptio" '
        .. 'data-kuvaus-param="{&amp;quot;4&amp;quot;:&amp;quot;nihongo&amp;quot;}">'
        .. '[[日本語#Japani|nihongo]]'
        .. '</span>'
    self:assertEquals(odotettu, m.linkki(p))

end


------------------------------------------------------------------------
-- Test linkki-funktio, automaattinen linkki
------------------------------------------------------------------------

function suite:testAutomaattilinkki()
    local m = self:module()

    self:assertEquals('<span class="Zzzz linkki" lang="sr">[[oko#Serbia|ȍko]]</span>',
                      m.linkki{
                          kieli = "sr",
                          kohde = "ȍko",
                          autolinkki = true
                      }
    )
    
    self:assertEquals('<span class="Arab linkki" lang="ar">[[بطة#Arabia|بَطَّة]]</span>',
                      m.linkki{
                          kieli = "ar",
                          kohde = "بَطَّة",
                          autolinkki = true
                      }
    )
    
end


------------------------------------------------------------------------
-- Test #invoke-testit
------------------------------------------------------------------------

------------------------------------------------------------------------
-- Test Linkki-funktio, peruskäyttö
------------------------------------------------------------------------

function suite:testPeruslinkkiInvoke()
    local m = self:module()
    local TITLE = mw.title.getCurrentTitle().fullText

    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|teksti]]</span>',
                      m.Linkki({ args = { "fi", "kohde", "teksti" } }))
    
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[kohde#Suomi|kohde]]</span>',
                      m.Linkki({ args = { "fi", "kohde" } }))
    
    
    -- Jos kohdetta ei anneta, käytetään samaa sivua.
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[' .. TITLE .. '#Suomi|teksti]]</span>',
                      m.Linkki({ args = { "fi", nil, "teksti" } }))
    
    -- Ilman kohdetta ja tekstiä, käytetään samaa sivua.
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[' .. TITLE .. '#Suomi|' .. TITLE .. ']]</span>',
                      m.Linkki({ args = { "fi" } }))
    
    -- Ilman parametreja suomi ja sama sivu.
    self:assertEquals('<span class="Zzzz linkki" lang="fi">[[' .. TITLE .. '#Suomi|' .. TITLE .. ']]</span>',
                      m.Linkki({ args = { } }))
end

------------------------------------------------------------------------
-- Test Linkki-funktio, automaattinen linkki
------------------------------------------------------------------------

function suite:testAutomaattilinkkiInvoke()
    local m = self:module()

    self:assertEquals('<span class="Zzzz linkki" lang="sr">[[oko#Serbia|ȍko]]</span>',
                      m.Linkki({ args = { "sr", "ȍko", nil, ["autolinkki"] = "1" } }))
    
    self:assertEquals('<span class="Arab linkki" lang="ar">[[بطة#Arabia|بَطَّة]]</span>',
                      m.Linkki({ args = { "ar", "بَطَّة", nil, ["autolinkki"] = "1" } }))
    
    self:assertEquals('<span class="Zzzz linkki" lang="sr">[[oko#Serbia|DÖKÖ]]</span>',
                      m.Linkki({ args = { "sr", "ȍko", "DÖKÖ", ["autolinkki"] = "1" } }))
end

return suite