Difference between revisions of "Module:Yesno/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>DePiep
m (49 revisions imported)
 
(40 intermediate revisions by 3 users not shown)
Line 1: Line 1:
local p = require('Module:UnitTests')
+
local yesno = require('Module:Yesno')
 +
local yesnoSandbox = require('Module:Yesno/sandbox')
 +
local ScribuntoUnit = require('Module:ScribuntoUnit')
 +
local suite = ScribuntoUnit:new()
  
function p:test_basic_arg1()
+
local function compareLiveAndSandbox(expected, liveValue, sandboxValue)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno}}', '{{Yesno}}')
+
local message = "Expected " .. tostring(expected) .. ". Got "
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|}}', '{{Yesno|}}')
+
suite:assertEquals(expected, liveValue, message .. tostring(liveValue)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| }}', '{{Yesno| }}')
+
.. " from live module.")
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|  }}', '{{Yesno|  }}')
+
suite:assertEquals(expected, sandboxValue, message .. tostring(sandboxValue)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=}}', '{{Yesno|1=}}')
+
.. " from sandbox.")
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes}}', '{{Yesno|yes}}')
+
local function runYesnoTest(expected, inputValue)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yeS}}', '{{Yesno|yeS}}')
+
local liveValue = yesno(inputValue)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|YES}}', '{{Yesno|YES}}')
+
local sandboxValue = yesnoSandbox(inputValue)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1}}', '{{Yesno|1}}')
+
compareLiveAndSandbox(expected, liveValue, sandboxValue)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=yes}}', '{{Yesno|1=yes}}')
+
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|no}}', '{{Yesno|no}}')
+
local function runYesnoTestWithDefault(expected, inputValue)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|nO}}', '{{Yesno|nO}}')
+
local liveValue = yesno(inputValue, 'default')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|0}}', '{{Yesno|0}}')
+
local sandboxValue = yesnoSandbox(inputValue, 'default')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=no}}', '{{Yesno|1=no}}')
+
compareLiveAndSandbox(expected, liveValue, sandboxValue)
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|beans}}', '{{Yesno|beans}}')
+
--------------------------------------------------------------------------------
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| beans }}', '{{Yesno| beans }}')
+
-- Basic tests
 +
--------------------------------------------------------------------------------
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|¬}}', '{{Yesno|¬}}')
+
function suite:testYes()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| ¬ }}', '{{Yesno| ¬ }}')
+
runYesnoTest(true, 'yes')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1= ¬ }}', '{{Yesno|1= ¬ }}')
 
 
end
 
end
  
function p:test_set_yes()
+
function suite:testY()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes=aye|yes=aye}}', '{{Yesno|yes=aye}}')
+
runYesnoTest(true, 'y')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno||yes=aye}}', '{{Yesno||yes=aye}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| |yes=aye}}', '{{Yesno| |yes=aye}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|  |yes=aye}}', '{{Yesno|  |yes=aye}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=|yes=aye}}', '{{Yesno|1=|yes=aye}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes|yes=aye}}', '{{Yesno|yes|yes=aye}}')
+
function suite:testTrueText()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yeS|yes=aye}}', '{{Yesno|yeS|yes=aye}}')
+
runYesnoTest(true, 'true')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|YES|yes=aye}}', '{{Yesno|YES|yes=aye}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1|yes=aye}}', '{{Yesno|1|yes=aye}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=yes|yes=aye}}', '{{Yesno|1=yes|yes=aye}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|no|yes=aye}}', '{{Yesno|no|yes=aye}}')
+
function suite:testT()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|nO|yes=aye}}', '{{Yesno|nO|yes=aye}}')
+
runYesnoTest(true, 't')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|0|yes=aye}}', '{{Yesno|0|yes=aye}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=no|yes=aye}}', '{{Yesno|1=no|yes=aye}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|beans|yes=aye}}', '{{Yesno|beans|yes=aye}}')
+
function suite:testTrue()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| beans |yes=aye}}', '{{Yesno| beans |yes=aye}}')
+
runYesnoTest(true, true)
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|¬|yes=aye}}', '{{Yesno|¬|yes=aye}}')
+
function suite:testOneText()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| ¬ |yes=aye}}', '{{Yesno| ¬ |yes=aye}}')
+
runYesnoTest(true, '1')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1= ¬ |yes=aye}}', '{{Yesno|1= ¬ |yes=aye}}')
+
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=1|Yes=aye}}', '{{Yesno|1=1|Yes=aye}}')
+
function suite:testOne()
 +
runYesnoTest(true, 1)
 +
end
  
 +
function suite:testOn()
 +
runYesnoTest(true, 'on')
 
end
 
end
  
function p:test_set_no()
+
function suite:testNo()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes=aye|no=nay}}', '{{Yesno|no=nay}}')
+
runYesnoTest(false, 'no')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno||no=nay}}', '{{Yesno||no=nay}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| |no=nay}}', '{{Yesno| |no=nay}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|  |no=nay}}', '{{Yesno|  |no=nay}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=|no=nay}}', '{{Yesno|1=|no=nay}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes|no=nay}}', '{{Yesno|yes|no=nay}}')
+
function suite:testN()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yeS|no=nay}}', '{{Yesno|yeS|no=nay}}')
+
runYesnoTest(false, 'n')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|YES|no=nay}}', '{{Yesno|YES|no=nay}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1|no=nay}}', '{{Yesno|1|no=nay}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=yes|no=nay}}', '{{Yesno|1=yes|no=nay}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|no|no=nay}}', '{{Yesno|no|no=nay}}')
+
function suite:testF()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|nO|no=nay}}', '{{Yesno|nO|no=nay}}')
+
runYesnoTest(false, 'f')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|0|no=nay}}', '{{Yesno|0|no=nay}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=no|no=nay}}', '{{Yesno|1=no|no=nay}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|beans|no=nay}}', '{{Yesno|beans|no=nay}}')
+
function suite:testFalseText()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| beans |no=nay}}', '{{Yesno| beans |no=nay}}')
+
runYesnoTest(false, 'false')
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|¬|no=nay}}', '{{Yesno|¬|no=nay}}')
+
function suite:testFalse()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| ¬ |no=nay}}', '{{Yesno| ¬ |no=nay}}')
+
runYesnoTest(false, false)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1= ¬ |no=nay}}', '{{Yesno|1= ¬ |no=nay}}')
+
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=1|No=nay}}', '{{Yesno|1=1|No=nay}}')
+
function suite:testZero()
 +
runYesnoTest(false, 0)
 
end
 
end
  
function p:test_set_yes_no()
+
function suite:testZeroText()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes=aye|no=nay}}', '{{Yesno|yes=aye|no=nay}}')
+
runYesnoTest(false, '0')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno||yes=aye|no=nay}}', '{{Yesno||yes=aye|no=nay}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| |yes=aye|no=nay}}', '{{Yesno| |yes=aye|no=nay}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|  |yes=aye|no=nay}}', '{{Yesno|  |yes=aye|no=nay}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=|yes=aye|no=nay}}', '{{Yesno|1=|yes=aye|no=nay}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes|yes=aye|no=nay}}', '{{Yesno|yes|yes=aye|no=nay}}')
+
function suite:testOff()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yeS|yes=aye|no=nay}}', '{{Yesno|yeS|yes=aye|no=nay}}')
+
runYesnoTest(false, 'off')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|YES|yes=aye|no=nay}}', '{{Yesno|YES|yes=aye|no=nay}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1|yes=aye|no=nay}}', '{{Yesno|1|yes=aye|no=nay}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=yes|yes=aye|no=nay}}', '{{Yesno|1=yes|yes=aye|no=nay}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|no|yes=aye|no=nay}}', '{{Yesno|no|yes=aye|no=nay}}')
+
function suite:testNil()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|nO|yes=aye|no=nay}}', '{{Yesno|nO|yes=aye|no=nay}}')
+
runYesnoTest(nil, nil)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|0|yes=aye|no=nay}}', '{{Yesno|0|yes=aye|no=nay}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=no|yes=aye|no=nay}}', '{{Yesno|1=no|yes=aye|no=nay}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|beans|yes=aye|no=nay}}', '{{Yesno|beans|yes=aye|no=nay}}')
+
--------------------------------------------------------------------------------
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| beans |yes=aye|no=nay}}', '{{Yesno| beans |yes=aye|no=nay}}')
+
-- Capitalisation tests
 +
--------------------------------------------------------------------------------
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|¬|yes=aye|no=nay}}', '{{Yesno|¬|yes=aye|no=nay}}')
+
function suite:testYesCaps()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| ¬ |yes=aye|no=nay}}', '{{Yesno| ¬ |yes=aye|no=nay}}')
+
runYesnoTest(true, 'Yes')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1= ¬ |yes=aye|no=nay}}', '{{Yesno|1= ¬ |yes=aye|no=nay}}')
+
runYesnoTest(true, 'YES')
 +
runYesnoTest(true, 'yEs')
 +
end
 +
 
 +
function suite:testYCaps()
 +
runYesnoTest(true, 'Y')
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=1|Yes=aye|No=nay}}', '{{Yesno|1=1|Yes=aye|No=nay}}')
+
function suite:testTCaps()
--whitespace in
+
runYesnoTest(true, 'T')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes= aye |no= nay }}', '{{Yesno|yes= aye |no= nay }}')
 
 
end
 
end
  
function p:test_set_blank()
+
function suite:testTrueTextCaps()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes=aye|blank=emptystring}}', '{{Yesno|blank=emptystring}}')
+
runYesnoTest(true, 'True')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno||blank=emptystring}}', '{{Yesno||blank=emptystring}}')
+
runYesnoTest(true, 'TRUE')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| |blank=emptystring}}', '{{Yesno| |blank=emptystring}}')
+
runYesnoTest(true, 'trUE')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|  |blank=emptystring}}', '{{Yesno|  |blank=emptystring}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=|blank=emptystring}}', '{{Yesno|1=|blank=emptystring}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes|blank=emptystring}}', '{{Yesno|yes|blank=emptystring}}')
+
function suite:testOnCaps()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yeS|blank=emptystring}}', '{{Yesno|yeS|blank=emptystring}}')
+
runYesnoTest(true, 'On')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|YES|blank=emptystring}}', '{{Yesno|YES|blank=emptystring}}')
+
runYesnoTest(true, 'ON')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1|blank=emptystring}}', '{{Yesno|1|blank=emptystring}}')
+
runYesnoTest(true, 'oN')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=yes|blank=emptystring}}', '{{Yesno|1=yes|blank=emptystring}}')
+
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|no|blank=emptystring}}', '{{Yesno|no|blank=emptystring}}')
+
function suite:testNoCaps()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|nO|blank=emptystring}}', '{{Yesno|nO|blank=emptystring}}')
+
runYesnoTest(false, 'No')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|0|blank=emptystring}}', '{{Yesno|0|blank=emptystring}}')
+
runYesnoTest(false, 'NO')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=no|blank=emptystring}}', '{{Yesno|1=no|blank=emptystring}}')
+
runYesnoTest(false, 'nO')
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|beans|blank=emptystring}}', '{{Yesno|beans|blank=emptystring}}')
+
function suite:testNCaps()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| beans |blank=emptystring}}', '{{Yesno| beans |blank=emptystring}}')
+
runYesnoTest(false, 'N')
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|¬|blank=emptystring}}', '{{Yesno|¬|blank=emptystring}}')
+
function suite:testFCaps()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| ¬ |blank=emptystring}}', '{{Yesno| ¬ |blank=emptystring}}')
+
runYesnoTest(false, 'F')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1= ¬ |blank=emptystring}}', '{{Yesno|1= ¬ |blank=emptystring}}')
 
 
end
 
end
  
function p:test_set_def()
+
function suite:testFalseTextCaps()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes=aye|def=dflt}}', '{{Yesno|def=dflt}}')
+
runYesnoTest(false, 'False')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno||def=dflt}}', '{{Yesno||def=dflt}}')
+
runYesnoTest(false, 'FALSE')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| |def=dflt}}', '{{Yesno| |def=dflt}}')
+
runYesnoTest(false, 'fALSe')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|  |def=dflt}}', '{{Yesno|  |def=dflt}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=|def=dflt}}', '{{Yesno|1=|def=dflt}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes|def=dflt}}', '{{Yesno|yes|def=dflt}}')
+
function suite:testOffCaps()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yeS|def=dflt}}', '{{Yesno|yeS|def=dflt}}')
+
runYesnoTest(false, 'ofF')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|YES|def=dflt}}', '{{Yesno|YES|def=dflt}}')
+
runYesnoTest(false, 'oFf')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1|def=dflt}}', '{{Yesno|1|def=dflt}}')
+
runYesnoTest(false, 'oFF')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=yes|def=dflt}}', '{{Yesno|1=yes|def=dflt}}')
+
runYesnoTest(false, 'Off')
 +
runYesnoTest(false, 'OfF')
 +
runYesnoTest(false, 'OFf')
 +
runYesnoTest(false, 'OFF')
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|no|def=dflt}}', '{{Yesno|no|def=dflt}}')
+
--------------------------------------------------------------------------------
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|nO|def=dflt}}', '{{Yesno|nO|def=dflt}}')
+
-- Number conversion tests
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|0|def=dflt}}', '{{Yesno|0|def=dflt}}')
+
--------------------------------------------------------------------------------
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=no|def=dflt}}', '{{Yesno|1=no|def=dflt}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|beans|def=dflt}}', '{{Yesno|beans|def=dflt}}')
+
function suite:testOneTextConversion()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| beans |def=dflt}}', '{{Yesno| beans |def=dflt}}')
+
runYesnoTest(true, '1.0')
 +
runYesnoTest(true, '001')
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|¬|def=dflt}}', '{{Yesno|¬|def=dflt}}')
+
function suite:testZeroTextConversion()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| ¬ |def=dflt}}', '{{Yesno| ¬ |def=dflt}}')
+
runYesnoTest(false, '0.0')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1= ¬ |def=dflt}}', '{{Yesno|1= ¬ |def=dflt}}')
+
runYesnoTest(false, '000')
 
end
 
end
  
function p:test_set_notsign()
+
--------------------------------------------------------------------------------
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes=aye|¬=notsign}}', '{{Yesno|¬=notsign}}')
+
-- Test no default set
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno||¬=notsign}}', '{{Yesno||¬=notsign}}')
+
--------------------------------------------------------------------------------
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| |¬=notsign}}', '{{Yesno| |¬=notsign}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|  |¬=notsign}}', '{{Yesno|  |¬=notsign}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=|¬=notsign}}', '{{Yesno|1=|¬=notsign}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes|¬=notsign}}', '{{Yesno|yes|¬=notsign}}')
+
function suite:testStringNoDefault()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yeS|¬=notsign}}', '{{Yesno|yeS|¬=notsign}}')
+
runYesnoTest(nil, 'foo')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|YES|¬=notsign}}', '{{Yesno|YES|¬=notsign}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1|¬=notsign}}', '{{Yesno|1|¬=notsign}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=yes|¬=notsign}}', '{{Yesno|1=yes|¬=notsign}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|no|¬=notsign}}', '{{Yesno|no|¬=notsign}}')
+
function suite:testNumberNoDefault()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|nO|¬=notsign}}', '{{Yesno|nO|¬=notsign}}')
+
runYesnoTest(nil, 100)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|0|¬=notsign}}', '{{Yesno|0|¬=notsign}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=no|¬=notsign}}', '{{Yesno|1=no|¬=notsign}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|beans|¬=notsign}}', '{{Yesno|beans|¬=notsign}}')
+
function suite:testTableNoDefault()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| beans |¬=notsign}}', '{{Yesno| beans |¬=notsign}}')
+
runYesnoTest(nil, {})
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|¬|¬=notsign}}', '{{Yesno|¬|¬=notsign}}')
+
function suite:testFunctionNoDefault()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| ¬ |¬=notsign}}', '{{Yesno| ¬ |¬=notsign}}')
+
runYesnoTest(nil, function() return true end)
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1= ¬ |¬=notsign}}', '{{Yesno|1= ¬ |¬=notsign}}')
 
 
end
 
end
  
function p:test_set_all_options()
+
function suite:testBlankStringNoDefault()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes=aye|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
runYesnoTest(nil, '')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno||¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno||¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno| |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|  |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|  |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|1=|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yes|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|yes|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
--------------------------------------------------------------------------------
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|yeS|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|yeS|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
-- Test default set
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|YES|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|YES|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
--------------------------------------------------------------------------------
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|1|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
 
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=yes|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|1=yes|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|no|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|no|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
function suite:testStringDefaultSet()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|nO|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|nO|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
runYesnoTestWithDefault('default', 'foo')
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|0|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|0|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
end
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1=no|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|1=no|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
 
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|beans|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|beans|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
function suite:testNumberDefaultSet()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| beans |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno| beans |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
runYesnoTestWithDefault('default', 100)
 +
end
  
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|¬|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|¬|¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
function suite:testTableDefaultSet()
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno| ¬ |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno| ¬ |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
+
runYesnoTestWithDefault('default', {})
    self:preprocess_equals_preprocess('{{#invoke:Yesno|yesno|1= ¬ |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}', '{{Yesno|1= ¬ |¬=notsign|blank=emptystring|def=dflt|yes=aye|no=nay}}')
 
 
end
 
end
return p
+
 
 +
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

Latest revision as of 08:25, 30 September 2020

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