-- Panagsubok para iti [[Modulo:Wensaan]]. Pinduten ti tungtunganna a panid tapno maipataray ti panagsubok.
local yesno = require('Modulo:Wensaan/pagipadasan')
local ScribuntoUnit = require('Modulo:ScribuntoUnit')
local suite = ScribuntoUnit:new()
--------------------------------------------------------------------------------
-- Basic tests
--------------------------------------------------------------------------------
function suite:testYes()
self:assertEquals(true, yesno('yes'))
end
function suite:testY()
self:assertEquals(true, yesno('y'))
end
function suite:testWen()
self:assertEquals(true, yesno('wen'))
end
function suite:testW()
self:assertEquals(true, yesno('w'))
end
function suite:testTrueText()
self:assertEquals(true, yesno('true'))
end
function suite:testTrue()
self:assertEquals(true, yesno(true))
end
function suite:testOneText()
self:assertEquals(true, yesno('1'))
end
function suite:testOne()
self:assertEquals(true, yesno(1))
end
function suite:testNo()
self:assertEquals(false, yesno('no'))
end
function suite:testN()
self:assertEquals(false, yesno('n'))
end
function suite:testSaan()
self:assertEquals(false, yesno('saan'))
end
function suite:testN()
self:assertEquals(false, yesno('s'))
end
function suite:testFalseText()
self:assertEquals(false, yesno('false'))
end
function suite:testFalse()
self:assertEquals(false, yesno(false))
end
function suite:testZero()
self:assertEquals(false, yesno(0))
end
function suite:testZeroText()
self:assertEquals(false, yesno('0'))
end
function suite:testNil()
self:assertEquals(nil, yesno(nil))
end
--------------------------------------------------------------------------------
-- Capitalisation tests
--------------------------------------------------------------------------------
function suite:testYesCaps()
self:assertEquals(true, yesno('Yes'))
self:assertEquals(true, yesno('YES'))
self:assertEquals(true, yesno('yEs'))
end
function suite:testYCaps()
self:assertEquals(true, yesno('Y'))
end
function suite:testWenCaps()
self:assertEquals(true, yesno('Wen'))
self:assertEquals(true, yesno('WEN'))
self:assertEquals(true, yesno('wEn'))
end
function suite:testWCaps()
self:assertEquals(true, yesno('W'))
end
function suite:testTrueTextCaps()
self:assertEquals(true, yesno('True'))
self:assertEquals(true, yesno('TRUE'))
self:assertEquals(true, yesno('trUE'))
end
function suite:testNoCaps()
self:assertEquals(false, yesno('No'))
self:assertEquals(false, yesno('NO'))
self:assertEquals(false, yesno('nO'))
end
function suite:testNCaps()
self:assertEquals(false, yesno('N'))
end
function suite:testSaanCaps()
self:assertEquals(false, yesno('Saan'))
self:assertEquals(false, yesno('SAAN'))
self:assertEquals(false, yesno('saaN'))
end
function suite:testSCaps()
self:assertEquals(false, yesno('S'))
end
function suite:testFalseTextCaps()
self:assertEquals(false, yesno('False'))
self:assertEquals(false, yesno('FALSE'))
self:assertEquals(false, yesno('fALSe'))
end
--------------------------------------------------------------------------------
-- Number conversion tests
--------------------------------------------------------------------------------
function suite:testOneTextConversion()
self:assertEquals(true, yesno('1.0'))
self:assertEquals(true, yesno('001'))
end
function suite:testZeroTextConversion()
self:assertEquals(false, yesno('0.0'))
self:assertEquals(false, yesno('000'))
end
--------------------------------------------------------------------------------
-- Test no default set
--------------------------------------------------------------------------------
function suite:testStringNoDefault()
self:assertEquals(nil, yesno('foo'))
end
function suite:testNumberNoDefault()
self:assertEquals(nil, yesno(100))
end
function suite:testTableNoDefault()
self:assertEquals(nil, yesno({}))
end
function suite:testFunctionNoDefault()
self:assertEquals(nil, yesno(function() return true end))
end
function suite:testBlankStringNoDefault()
self:assertEquals(nil, yesno(''))
end
--------------------------------------------------------------------------------
-- Test default set
--------------------------------------------------------------------------------
function suite:testStringDefaultSet()
self:assertEquals('default', yesno('foo', 'default'))
end
function suite:testNumberDefaultSet()
self:assertEquals('default', yesno(100, 'default'))
end
function suite:testTableDefaultSet()
self:assertEquals('default', yesno({}, 'default'))
end
function suite:testFunctionDefaultSet()
self:assertEquals('default', yesno(function() return true end, 'default'))
end
function suite:testBlankStringDefaultSet()
self:assertEquals('default', yesno('', 'default'))
end
--------------------------------------------------------------------------------
-- Test default precedence with true, false, and nil
--------------------------------------------------------------------------------
function suite:testYesDefaultPrecedence()
self:assertEquals(true, yesno('yes', 'default'))
end
function suite:testYDefaultPrecedence()
self:assertEquals(true, yesno('y', 'default'))
end
function suite:testWenDefaultPrecedence()
self:assertEquals(true, yesno('wen', 'default'))
end
function suite:testWDefaultPrecedence()
self:assertEquals(true, yesno('w', 'default'))
end
function suite:testTrueTextDefaultPrecedence()
self:assertEquals(true, yesno('true', 'default'))
end
function suite:testTrueDefaultPrecedence()
self:assertEquals(true, yesno(true, 'default'))
end
function suite:testOneTextDefaultPrecedence()
self:assertEquals(true, yesno('1', 'default'))
end
function suite:testOneDefaultPrecedence()
self:assertEquals(true, yesno(1, 'default'))
end
function suite:testNoDefaultPrecedence()
self:assertEquals(false, yesno('no', 'default'))
end
function suite:testNDefaultPrecedence()
self:assertEquals(false, yesno('n', 'default'))
end
function suite:testSaanDefaultPrecedence()
self:assertEquals(false, yesno('saan', 'default'))
end
function suite:testSDefaultPrecedence()
self:assertEquals(false, yesno('s', 'default'))
end
function suite:testFalseTextDefaultPrecedence()
self:assertEquals(false, yesno('false', 'default'))
end
function suite:testFalseDefaultPrecedence()
self:assertEquals(false, yesno(false, 'default'))
end
function suite:testZeroDefaultPrecedence()
self:assertEquals(false, yesno(0, 'default'))
end
function suite:testZeroTextDefaultPrecedence()
self:assertEquals(false, yesno('0', 'default'))
end
function suite:testNilDefaultPrecedence()
self:assertEquals(nil, yesno(nil, 'default'))
end
return suite