Module:Yesno/testcases: Difference between revisions

Content deleted Content added
remove code duplication: extract functions runTest and runTestWithDefault
test live module alongside the sandbox (refactor; extract compareLiveAndSandbox; fix message in runYesnoTestWithDefault)
 
(10 intermediate revisions by the same user not shown)
Line 1:
local yesno = require('Module:Yesno/sandbox')
local yesnoSandbox = require('Module:Yesno/sandbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
 
local function runTestcompareLiveAndSandbox(expected, inputValueliveValue, sandboxValue)
local message = "Expected " .. tostring(expected) .. ". Got "
self:assertEquals(expected, yesno(inputValue))
suite:assertEquals(expected, liveValue, message .. tostring(liveValue)
.. " from live module.")
suite:assertEquals(expected, sandboxValue, message .. tostring(sandboxValue)
.. " from sandbox.")
end
 
local function runTestWithDefaultrunYesnoTest(expected, inputValue)
local liveValue self:assertEquals(expected,= yesno(inputValue, 'default'))
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
 
Line 16 ⟶ 29:
 
function suite:testYes()
runTestrunYesnoTest(true, 'yes')
end
 
function suite:testY()
runTestrunYesnoTest(true, 'y')
end
 
function suite:testTrueText()
runTestrunYesnoTest(true, 'true')
end
 
function suite:testT()
runYesnoTest(true, 't')
end
 
function suite:testTrue()
runTestrunYesnoTest(true, true)
end
 
function suite:testOneText()
runTestrunYesnoTest(true, '1')
end
 
function suite:testOne()
runTestrunYesnoTest(true, 1)
end
 
function suite:testOn()
runTestrunYesnoTest(true, 'on')
end
 
function suite:testNo()
runTestrunYesnoTest(false, 'no')
end
 
function suite:testN()
runTestrunYesnoTest(false, 'n')
end
 
function suite:testF()
runYesnoTest(false, 'f')
end
 
function suite:testFalseText()
runTestrunYesnoTest(false, 'false')
end
 
function suite:testFalse()
runTestrunYesnoTest(false, false)
end
 
function suite:testZero()
runTestrunYesnoTest(false, 0)
end
 
function suite:testZeroText()
runTestrunYesnoTest(false, '0')
end
 
function suite:testOff()
runTestrunYesnoTest(false, 'off')
end
 
function suite:testNil()
runTestrunYesnoTest(nil, nil)
end
 
Line 80 ⟶ 101:
 
function suite:testYesCaps()
runTestrunYesnoTest(true, 'Yes')
runTestrunYesnoTest(true, 'YES')
runTestrunYesnoTest(true, 'yEs')
end
 
function suite:testYCaps()
runTestrunYesnoTest(true, 'Y')
end
 
function suite:testTCaps()
runYesnoTest(true, 'T')
end
 
function suite:testTrueTextCaps()
runTestrunYesnoTest(true, 'True')
runTestrunYesnoTest(true, 'TRUE')
runTestrunYesnoTest(true, 'trUE')
end
 
function suite:testOnCaps()
runTestrunYesnoTest(true, 'On')
runTestrunYesnoTest(true, 'ON')
runTestrunYesnoTest(true, 'oN')
end
 
function suite:testNoCaps()
runTestrunYesnoTest(false, 'No')
runTestrunYesnoTest(false, 'NO')
runTestrunYesnoTest(false, 'nO')
end
 
function suite:testNCaps()
runTestrunYesnoTest(false, 'N')
end
 
function suite:testFCaps()
runYesnoTest(false, 'F')
end
 
function suite:testFalseTextCaps()
runTestrunYesnoTest(false, 'False')
runTestrunYesnoTest(false, 'FALSE')
runTestrunYesnoTest(false, 'fALSe')
end
 
function suite:testOffCaps()
runTestrunYesnoTest(false, 'ofF')
runTestrunYesnoTest(false, 'oFf')
runTestrunYesnoTest(false, 'oFF')
runTestrunYesnoTest(false, 'Off')
runTestrunYesnoTest(false, 'OfF')
runTestrunYesnoTest(false, 'OFf')
runTestrunYesnoTest(false, 'OFF')
end
 
Line 132 ⟶ 161:
 
function suite:testOneTextConversion()
runTestrunYesnoTest(true, '1.0')
runTestrunYesnoTest(true, '001')
end
 
function suite:testZeroTextConversion()
runTestrunYesnoTest(false, '0.0')
runTestrunYesnoTest(false, '000')
end
 
Line 146 ⟶ 175:
 
function suite:testStringNoDefault()
runTestrunYesnoTest(nil, 'foo')
end
 
function suite:testNumberNoDefault()
runTestrunYesnoTest(nil, 100)
end
 
function suite:testTableNoDefault()
runTestrunYesnoTest(nil, {})
end
 
function suite:testFunctionNoDefault()
runTestrunYesnoTest(nil, function() return true end)
end
 
function suite:testBlankStringNoDefault()
runTestrunYesnoTest(nil, '')
end
 
Line 170 ⟶ 199:
 
function suite:testStringDefaultSet()
runTestWithDefaultrunYesnoTestWithDefault('default', 'foo')
end
 
function suite:testNumberDefaultSet()
runTestWithDefaultrunYesnoTestWithDefault('default', 100)
end
 
function suite:testTableDefaultSet()
runTestWithDefaultrunYesnoTestWithDefault('default', {})
end
 
function suite:testFunctionDefaultSet()
self:assertEqualsrunYesnoTestWithDefault('default', yesno(function() return true end))
end
 
function suite:testBlankStringDefaultSet()
runTestWithDefaultrunYesnoTestWithDefault('default', '')
end
 
Line 194 ⟶ 223:
 
function suite:testYesDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(true, 'yes')
end
 
function suite:testYDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(true, 'y')
end
 
function suite:testTrueTextDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(true, 'true')
end
 
function suite:testTrueDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(true, true)
end
 
function suite:testOneTextDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(true, '1')
end
 
function suite:testOneDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(true, 1)
end
 
function suite:testNoDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(false, 'no')
end
 
function suite:testNDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(false, 'n')
end
 
function suite:testFalseTextDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(false, 'false')
end
 
function suite:testFalseDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(false, false)
end
 
function suite:testZeroDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(false, 0)
end
 
function suite:testZeroTextDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(false, '0')
end
 
function suite:testNilDefaultPrecedence()
runTestWithDefaultrunYesnoTestWithDefault(nil, nil)
end