Koha Test Wiki MW Canasta on Koha Portainer
Test major Koha Wiki changes or bug fixes here without fear of breaking the production wiki.
For the current Koha Wiki, visit https://wiki.koha-community.org .Module:Yesno/testcases
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Yesno/testcases/doc
local yesno = require('Module:Yesno')
local yesnoSandbox = require('Module:Yesno/sandbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local function compareLiveAndSandbox(expected, liveValue, sandboxValue)
local message = "Expected " .. tostring(expected) .. ". Got "
suite:assertEquals(expected, liveValue, message .. tostring(liveValue)
.. " from live module.")
suite:assertEquals(expected, sandboxValue, message .. tostring(sandboxValue)
.. " from sandbox.")
end
local function runYesnoTest(expected, inputValue)
local liveValue = yesno(inputValue)
local sandboxValue = yesnoSandbox(inputValue)
compareLiveAndSandbox(expected, liveValue, sandboxValue)
end
local function runYesnoTestWithDefault(expected, inputValue)
local liveValue = yesno(inputValue, 'default')
local sandboxValue = yesnoSandbox(inputValue, 'default')
compareLiveAndSandbox(expected, liveValue, sandboxValue)
end
--------------------------------------------------------------------------------
-- Basic tests
--------------------------------------------------------------------------------
function suite:testYes()
runYesnoTest(true, 'yes')
end
function suite:testY()
runYesnoTest(true, 'y')
end
function suite:testTrueText()
runYesnoTest(true, 'true')
end
function suite:testT()
runYesnoTest(true, 't')
end
function suite:testTrue()
runYesnoTest(true, true)
end
function suite:testOneText()
runYesnoTest(true, '1')
end
function suite:testOne()
runYesnoTest(true, 1)
end
function suite:testOn()
runYesnoTest(true, 'on')
end
function suite:testNo()
runYesnoTest(false, 'no')
end
function suite:testN()
runYesnoTest(false, 'n')
end
function suite:testF()
runYesnoTest(false, 'f')
end
function suite:testFalseText()
runYesnoTest(false, 'false')
end
function suite:testFalse()
runYesnoTest(false, false)
end
function suite:testZero()
runYesnoTest(false, 0)
end
function suite:testZeroText()
runYesnoTest(false, '0')
end
function suite:testOff()
runYesnoTest(false, 'off')
end
function suite:testNil()
runYesnoTest(nil, nil)
end
--------------------------------------------------------------------------------
-- Capitalisation tests
--------------------------------------------------------------------------------
function suite:testYesCaps()
runYesnoTest(true, 'Yes')
runYesnoTest(true, 'YES')
runYesnoTest(true, 'yEs')
end
function suite:testYCaps()
runYesnoTest(true, 'Y')
end
function suite:testTCaps()
runYesnoTest(true, 'T')
end
function suite:testTrueTextCaps()
runYesnoTest(true, 'True')
runYesnoTest(true, 'TRUE')
runYesnoTest(true, 'trUE')
end
function suite:testOnCaps()
runYesnoTest(true, 'On')
runYesnoTest(true, 'ON')
runYesnoTest(true, 'oN')
end
function suite:testNoCaps()
runYesnoTest(false, 'No')
runYesnoTest(false, 'NO')
runYesnoTest(false, 'nO')
end
function suite:testNCaps()
runYesnoTest(false, 'N')
end
function suite:testFCaps()
runYesnoTest(false, 'F')
end
function suite:testFalseTextCaps()
runYesnoTest(false, 'False')
runYesnoTest(false, 'FALSE')
runYesnoTest(false, 'fALSe')
end
function suite:testOffCaps()
runYesnoTest(false, 'ofF')
runYesnoTest(false, 'oFf')
runYesnoTest(false, 'oFF')
runYesnoTest(false, 'Off')
runYesnoTest(false, 'OfF')
runYesnoTest(false, 'OFf')
runYesnoTest(false, 'OFF')
end
--------------------------------------------------------------------------------
-- Number conversion tests
--------------------------------------------------------------------------------
function suite:testOneTextConversion()
runYesnoTest(true, '1.0')
runYesnoTest(true, '001')
end
function suite:testZeroTextConversion()
runYesnoTest(false, '0.0')
runYesnoTest(false, '000')
end
--------------------------------------------------------------------------------
-- Test no default set
--------------------------------------------------------------------------------
function suite:testStringNoDefault()
runYesnoTest(nil, 'foo')
end
function suite:testNumberNoDefault()
runYesnoTest(nil, 100)
end
function suite:testTableNoDefault()
runYesnoTest(nil, {})
end
function suite:testFunctionNoDefault()
runYesnoTest(nil, function() return true end)
end
function suite:testBlankStringNoDefault()
runYesnoTest(nil, '')
end
--------------------------------------------------------------------------------
-- Test default set
--------------------------------------------------------------------------------
function suite:testStringDefaultSet()
runYesnoTestWithDefault('default', 'foo')
end
function suite:testNumberDefaultSet()
runYesnoTestWithDefault('default', 100)
end
function suite:testTableDefaultSet()
runYesnoTestWithDefault('default', {})
end
function suite:testFunctionDefaultSet()
runYesnoTestWithDefault('default', function() return true end)
end
function suite:testBlankStringDefaultSet()
runYesnoTestWithDefault('default', '')
end
--------------------------------------------------------------------------------
-- Test default precedence with true, false, and nil
--------------------------------------------------------------------------------
function suite:testYesDefaultPrecedence()
runYesnoTestWithDefault(true, 'yes')
end
function suite:testYDefaultPrecedence()
runYesnoTestWithDefault(true, 'y')
end
function suite:testTrueTextDefaultPrecedence()
runYesnoTestWithDefault(true, 'true')
end
function suite:testTrueDefaultPrecedence()
runYesnoTestWithDefault(true, true)
end
function suite:testOneTextDefaultPrecedence()
runYesnoTestWithDefault(true, '1')
end
function suite:testOneDefaultPrecedence()
runYesnoTestWithDefault(true, 1)
end
function suite:testNoDefaultPrecedence()
runYesnoTestWithDefault(false, 'no')
end
function suite:testNDefaultPrecedence()
runYesnoTestWithDefault(false, 'n')
end
function suite:testFalseTextDefaultPrecedence()
runYesnoTestWithDefault(false, 'false')
end
function suite:testFalseDefaultPrecedence()
runYesnoTestWithDefault(false, false)
end
function suite:testZeroDefaultPrecedence()
runYesnoTestWithDefault(false, 0)
end
function suite:testZeroTextDefaultPrecedence()
runYesnoTestWithDefault(false, '0')
end
function suite:testNilDefaultPrecedence()
runYesnoTestWithDefault(nil, nil)
end
return suite