Difference between revisions of "Module:Yesno/testcases"
Jump to navigation
Jump to search
blackwiki>Andrybak m (fix typo) |
blackwiki>Andrybak (remove code duplication: extract functions runTest and runTestWithDefault) |
||
| Line 2: | Line 2: | ||
local ScribuntoUnit = require('Module:ScribuntoUnit') | local ScribuntoUnit = require('Module:ScribuntoUnit') | ||
local suite = ScribuntoUnit:new() | local suite = ScribuntoUnit:new() | ||
| + | |||
| + | function runTest(expected, inputValue) | ||
| + | self:assertEquals(expected, yesno(inputValue)) | ||
| + | end | ||
| + | |||
| + | function runTestWithDefault(expected, inputValue) | ||
| + | self:assertEquals(expected, yesno(inputValue, 'default')) | ||
| + | end | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
| Line 8: | Line 16: | ||
function suite:testYes() | function suite:testYes() | ||
| − | + | runTest(true, 'yes') | |
end | end | ||
function suite:testY() | function suite:testY() | ||
| − | + | runTest(true, 'y') | |
end | end | ||
function suite:testTrueText() | function suite:testTrueText() | ||
| − | + | runTest(true, 'true') | |
end | end | ||
function suite:testTrue() | function suite:testTrue() | ||
| − | + | runTest(true, true) | |
end | end | ||
function suite:testOneText() | function suite:testOneText() | ||
| − | + | runTest(true, '1') | |
end | end | ||
function suite:testOne() | function suite:testOne() | ||
| − | + | runTest(true, 1) | |
end | end | ||
function suite:testOn() | function suite:testOn() | ||
| − | + | runTest(true, 'on') | |
end | end | ||
function suite:testNo() | function suite:testNo() | ||
| − | + | runTest(false, 'no') | |
end | end | ||
function suite:testN() | function suite:testN() | ||
| − | + | runTest(false, 'n') | |
end | end | ||
function suite:testFalseText() | function suite:testFalseText() | ||
| − | + | runTest(false, 'false') | |
end | end | ||
function suite:testFalse() | function suite:testFalse() | ||
| − | + | runTest(false, false) | |
end | end | ||
function suite:testZero() | function suite:testZero() | ||
| − | + | runTest(false, 0) | |
end | end | ||
function suite:testZeroText() | function suite:testZeroText() | ||
| − | + | runTest(false, '0') | |
end | end | ||
function suite:testOff() | function suite:testOff() | ||
| − | + | runTest(false, 'off') | |
end | end | ||
function suite:testNil() | function suite:testNil() | ||
| − | + | runTest(nil, nil) | |
end | end | ||
| Line 72: | Line 80: | ||
function suite:testYesCaps() | function suite:testYesCaps() | ||
| − | + | runTest(true, 'Yes') | |
| − | + | runTest(true, 'YES') | |
| − | + | runTest(true, 'yEs') | |
end | end | ||
function suite:testYCaps() | function suite:testYCaps() | ||
| − | + | runTest(true, 'Y') | |
end | end | ||
function suite:testTrueTextCaps() | function suite:testTrueTextCaps() | ||
| − | + | runTest(true, 'True') | |
| − | + | runTest(true, 'TRUE') | |
| − | + | runTest(true, 'trUE') | |
end | end | ||
function suite:testOnCaps() | function suite:testOnCaps() | ||
| − | + | runTest(true, 'On') | |
| − | + | runTest(true, 'ON') | |
| − | + | runTest(true, 'oN') | |
end | end | ||
function suite:testNoCaps() | function suite:testNoCaps() | ||
| − | + | runTest(false, 'No') | |
| − | + | runTest(false, 'NO') | |
| − | + | runTest(false, 'nO') | |
end | end | ||
function suite:testNCaps() | function suite:testNCaps() | ||
| − | + | runTest(false, 'N') | |
end | end | ||
function suite:testFalseTextCaps() | function suite:testFalseTextCaps() | ||
| − | + | runTest(false, 'False') | |
| − | + | runTest(false, 'FALSE') | |
| − | + | runTest(false, 'fALSe') | |
end | end | ||
function suite:testOffCaps() | function suite:testOffCaps() | ||
| − | + | runTest(false, 'ofF') | |
| − | + | runTest(false, 'oFf') | |
| − | + | runTest(false, 'oFF') | |
| − | + | runTest(false, 'Off') | |
| − | + | runTest(false, 'OfF') | |
| − | + | runTest(false, 'OFf') | |
| − | + | runTest(false, 'OFF') | |
end | end | ||
| Line 124: | Line 132: | ||
function suite:testOneTextConversion() | function suite:testOneTextConversion() | ||
| − | + | runTest(true, '1.0') | |
| − | + | runTest(true, '001') | |
end | end | ||
function suite:testZeroTextConversion() | function suite:testZeroTextConversion() | ||
| − | + | runTest(false, '0.0') | |
| − | + | runTest(false, '000') | |
end | end | ||
| Line 138: | Line 146: | ||
function suite:testStringNoDefault() | function suite:testStringNoDefault() | ||
| − | + | runTest(nil, 'foo') | |
end | end | ||
function suite:testNumberNoDefault() | function suite:testNumberNoDefault() | ||
| − | + | runTest(nil, 100) | |
end | end | ||
function suite:testTableNoDefault() | function suite:testTableNoDefault() | ||
| − | + | runTest(nil, {}) | |
end | end | ||
function suite:testFunctionNoDefault() | function suite:testFunctionNoDefault() | ||
| − | + | runTest(nil, function() return true end) | |
end | end | ||
function suite:testBlankStringNoDefault() | function suite:testBlankStringNoDefault() | ||
| − | + | runTest(nil, '') | |
end | end | ||
| Line 162: | Line 170: | ||
function suite:testStringDefaultSet() | function suite:testStringDefaultSet() | ||
| − | + | runTestWithDefault('default', 'foo') | |
end | end | ||
function suite:testNumberDefaultSet() | function suite:testNumberDefaultSet() | ||
| − | + | runTestWithDefault('default', 100) | |
end | end | ||
function suite:testTableDefaultSet() | function suite:testTableDefaultSet() | ||
| − | + | runTestWithDefault('default', {}) | |
end | end | ||
function suite:testFunctionDefaultSet() | function suite:testFunctionDefaultSet() | ||
| − | self:assertEquals('default', yesno(function() return true end | + | self:assertEquals('default', yesno(function() return true end)) |
end | end | ||
function suite:testBlankStringDefaultSet() | function suite:testBlankStringDefaultSet() | ||
| − | + | runTestWithDefault('default', '') | |
end | end | ||
| Line 186: | Line 194: | ||
function suite:testYesDefaultPrecedence() | function suite:testYesDefaultPrecedence() | ||
| − | + | runTestWithDefault(true, 'yes') | |
end | end | ||
function suite:testYDefaultPrecedence() | function suite:testYDefaultPrecedence() | ||
| − | + | runTestWithDefault(true, 'y') | |
end | end | ||
function suite:testTrueTextDefaultPrecedence() | function suite:testTrueTextDefaultPrecedence() | ||
| − | + | runTestWithDefault(true, 'true') | |
end | end | ||
function suite:testTrueDefaultPrecedence() | function suite:testTrueDefaultPrecedence() | ||
| − | + | runTestWithDefault(true, true) | |
end | end | ||
function suite:testOneTextDefaultPrecedence() | function suite:testOneTextDefaultPrecedence() | ||
| − | + | runTestWithDefault(true, '1') | |
end | end | ||
function suite:testOneDefaultPrecedence() | function suite:testOneDefaultPrecedence() | ||
| − | + | runTestWithDefault(true, 1) | |
end | end | ||
function suite:testNoDefaultPrecedence() | function suite:testNoDefaultPrecedence() | ||
| − | + | runTestWithDefault(false, 'no') | |
end | end | ||
function suite:testNDefaultPrecedence() | function suite:testNDefaultPrecedence() | ||
| − | + | runTestWithDefault(false, 'n') | |
end | end | ||
function suite:testFalseTextDefaultPrecedence() | function suite:testFalseTextDefaultPrecedence() | ||
| − | + | runTestWithDefault(false, 'false') | |
end | end | ||
function suite:testFalseDefaultPrecedence() | function suite:testFalseDefaultPrecedence() | ||
| − | + | runTestWithDefault(false, false) | |
end | end | ||
function suite:testZeroDefaultPrecedence() | function suite:testZeroDefaultPrecedence() | ||
| − | + | runTestWithDefault(false, 0) | |
end | end | ||
function suite:testZeroTextDefaultPrecedence() | function suite:testZeroTextDefaultPrecedence() | ||
| − | + | runTestWithDefault(false, '0') | |
end | end | ||
function suite:testNilDefaultPrecedence() | function suite:testNilDefaultPrecedence() | ||
| − | + | runTestWithDefault(nil, nil) | |
end | end | ||
return suite | return suite | ||
Revision as of 07:27, 1 April 2020
Documentation for this module may be created at Module:Yesno/testcases/doc
local yesno = require('Module:Yesno/sandbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
function runTest(expected, inputValue)
self:assertEquals(expected, yesno(inputValue))
end
function runTestWithDefault(expected, inputValue)
self:assertEquals(expected, yesno(inputValue, 'default'))
end
--------------------------------------------------------------------------------
-- Basic tests
--------------------------------------------------------------------------------
function suite:testYes()
runTest(true, 'yes')
end
function suite:testY()
runTest(true, 'y')
end
function suite:testTrueText()
runTest(true, 'true')
end
function suite:testTrue()
runTest(true, true)
end
function suite:testOneText()
runTest(true, '1')
end
function suite:testOne()
runTest(true, 1)
end
function suite:testOn()
runTest(true, 'on')
end
function suite:testNo()
runTest(false, 'no')
end
function suite:testN()
runTest(false, 'n')
end
function suite:testFalseText()
runTest(false, 'false')
end
function suite:testFalse()
runTest(false, false)
end
function suite:testZero()
runTest(false, 0)
end
function suite:testZeroText()
runTest(false, '0')
end
function suite:testOff()
runTest(false, 'off')
end
function suite:testNil()
runTest(nil, nil)
end
--------------------------------------------------------------------------------
-- Capitalisation tests
--------------------------------------------------------------------------------
function suite:testYesCaps()
runTest(true, 'Yes')
runTest(true, 'YES')
runTest(true, 'yEs')
end
function suite:testYCaps()
runTest(true, 'Y')
end
function suite:testTrueTextCaps()
runTest(true, 'True')
runTest(true, 'TRUE')
runTest(true, 'trUE')
end
function suite:testOnCaps()
runTest(true, 'On')
runTest(true, 'ON')
runTest(true, 'oN')
end
function suite:testNoCaps()
runTest(false, 'No')
runTest(false, 'NO')
runTest(false, 'nO')
end
function suite:testNCaps()
runTest(false, 'N')
end
function suite:testFalseTextCaps()
runTest(false, 'False')
runTest(false, 'FALSE')
runTest(false, 'fALSe')
end
function suite:testOffCaps()
runTest(false, 'ofF')
runTest(false, 'oFf')
runTest(false, 'oFF')
runTest(false, 'Off')
runTest(false, 'OfF')
runTest(false, 'OFf')
runTest(false, 'OFF')
end
--------------------------------------------------------------------------------
-- Number conversion tests
--------------------------------------------------------------------------------
function suite:testOneTextConversion()
runTest(true, '1.0')
runTest(true, '001')
end
function suite:testZeroTextConversion()
runTest(false, '0.0')
runTest(false, '000')
end
--------------------------------------------------------------------------------
-- Test no default set
--------------------------------------------------------------------------------
function suite:testStringNoDefault()
runTest(nil, 'foo')
end
function suite:testNumberNoDefault()
runTest(nil, 100)
end
function suite:testTableNoDefault()
runTest(nil, {})
end
function suite:testFunctionNoDefault()
runTest(nil, function() return true end)
end
function suite:testBlankStringNoDefault()
runTest(nil, '')
end
--------------------------------------------------------------------------------
-- Test default set
--------------------------------------------------------------------------------
function suite:testStringDefaultSet()
runTestWithDefault('default', 'foo')
end
function suite:testNumberDefaultSet()
runTestWithDefault('default', 100)
end
function suite:testTableDefaultSet()
runTestWithDefault('default', {})
end
function suite:testFunctionDefaultSet()
self:assertEquals('default', yesno(function() return true end))
end
function suite:testBlankStringDefaultSet()
runTestWithDefault('default', '')
end
--------------------------------------------------------------------------------
-- Test default precedence with true, false, and nil
--------------------------------------------------------------------------------
function suite:testYesDefaultPrecedence()
runTestWithDefault(true, 'yes')
end
function suite:testYDefaultPrecedence()
runTestWithDefault(true, 'y')
end
function suite:testTrueTextDefaultPrecedence()
runTestWithDefault(true, 'true')
end
function suite:testTrueDefaultPrecedence()
runTestWithDefault(true, true)
end
function suite:testOneTextDefaultPrecedence()
runTestWithDefault(true, '1')
end
function suite:testOneDefaultPrecedence()
runTestWithDefault(true, 1)
end
function suite:testNoDefaultPrecedence()
runTestWithDefault(false, 'no')
end
function suite:testNDefaultPrecedence()
runTestWithDefault(false, 'n')
end
function suite:testFalseTextDefaultPrecedence()
runTestWithDefault(false, 'false')
end
function suite:testFalseDefaultPrecedence()
runTestWithDefault(false, false)
end
function suite:testZeroDefaultPrecedence()
runTestWithDefault(false, 0)
end
function suite:testZeroTextDefaultPrecedence()
runTestWithDefault(false, '0')
end
function suite:testNilDefaultPrecedence()
runTestWithDefault(nil, nil)
end
return suite