Module:NumberSpell/testcases

-- Unit tests for Module:NumberSpell. Click talk page to run tests.

local ns = require('Module:NumberSpell') local ScribuntoUnit = require('Module:ScribuntoUnit') local suite = ScribuntoUnit:new

local write = ns.main local _write = ns._main

local max = 100 -- Maximum number that can be parsed.

function suite:test0To100 self:assertEquals('zero'       , _write(0)) self:assertEquals('one'        , _write(1)) self:assertEquals('two'        , _write(2)) self:assertEquals('three'      , _write(3)) self:assertEquals('four'       , _write(4)) self:assertEquals('five'       , _write(5)) self:assertEquals('six'        , _write(6)) self:assertEquals('seven'      , _write(7)) self:assertEquals('eight'      , _write(8)) self:assertEquals('nine'       , _write(9)) self:assertEquals('ten'        , _write(10)) self:assertEquals('eleven'     , _write(11)) self:assertEquals('twelve'     , _write(12)) self:assertEquals('thirteen'   , _write(13)) self:assertEquals('fourteen'   , _write(14)) self:assertEquals('fifteen'    , _write(15)) self:assertEquals('sixteen'    , _write(16)) self:assertEquals('seventeen'  , _write(17)) self:assertEquals('eighteen'   , _write(18)) self:assertEquals('nineteen'   , _write(19)) self:assertEquals('twenty'     , _write(20)) self:assertEquals('twenty-one' , _write(21)) self:assertEquals('twenty-two' , _write(22)) self:assertEquals('twenty-three', _write(23)) self:assertEquals('twenty-four', _write(24)) self:assertEquals('twenty-five', _write(25)) self:assertEquals('twenty-six' , _write(26)) self:assertEquals('twenty-seven', _write(27)) self:assertEquals('twenty-eight', _write(28)) self:assertEquals('twenty-nine', _write(29)) self:assertEquals('thirty'     , _write(30)) self:assertEquals('thirty-one' , _write(31)) self:assertEquals('thirty-two' , _write(32)) self:assertEquals('thirty-three', _write(33)) self:assertEquals('thirty-four', _write(34)) self:assertEquals('thirty-five', _write(35)) self:assertEquals('thirty-six' , _write(36)) self:assertEquals('thirty-seven', _write(37)) self:assertEquals('thirty-eight', _write(38)) self:assertEquals('thirty-nine', _write(39)) self:assertEquals('forty'      , _write(40)) self:assertEquals('forty-one'  , _write(41)) self:assertEquals('forty-two'  , _write(42)) self:assertEquals('forty-three', _write(43)) self:assertEquals('forty-four' , _write(44)) self:assertEquals('forty-five' , _write(45)) self:assertEquals('forty-six'  , _write(46)) self:assertEquals('forty-seven', _write(47)) self:assertEquals('forty-eight', _write(48)) self:assertEquals('forty-nine' , _write(49)) self:assertEquals('fifty'      , _write(50)) self:assertEquals('fifty-one'  , _write(51)) self:assertEquals('fifty-two'  , _write(52)) self:assertEquals('fifty-three', _write(53)) self:assertEquals('fifty-four' , _write(54)) self:assertEquals('fifty-five' , _write(55)) self:assertEquals('fifty-six'  , _write(56)) self:assertEquals('fifty-seven', _write(57)) self:assertEquals('fifty-eight', _write(58)) self:assertEquals('fifty-nine' , _write(59)) self:assertEquals('sixty'      , _write(60)) self:assertEquals('sixty-one'  , _write(61)) self:assertEquals('sixty-two'  , _write(62)) self:assertEquals('sixty-three', _write(63)) self:assertEquals('sixty-four' , _write(64)) self:assertEquals('sixty-five' , _write(65)) self:assertEquals('sixty-six'  , _write(66)) self:assertEquals('sixty-seven', _write(67)) self:assertEquals('sixty-eight', _write(68)) self:assertEquals('sixty-nine' , _write(69)) self:assertEquals('seventy'    , _write(70)) self:assertEquals('seventy-one', _write(71)) self:assertEquals('seventy-two', _write(72)) self:assertEquals('seventy-three', _write(73)) self:assertEquals('seventy-four', _write(74)) self:assertEquals('seventy-five', _write(75)) self:assertEquals('seventy-six', _write(76)) self:assertEquals('seventy-seven', _write(77)) self:assertEquals('seventy-eight', _write(78)) self:assertEquals('seventy-nine', _write(79)) self:assertEquals('eighty'     , _write(80)) self:assertEquals('eighty-one' , _write(81)) self:assertEquals('eighty-two' , _write(82)) self:assertEquals('eighty-three', _write(83)) self:assertEquals('eighty-four', _write(84)) self:assertEquals('eighty-five', _write(85)) self:assertEquals('eighty-six' , _write(86)) self:assertEquals('eighty-seven', _write(87)) self:assertEquals('eighty-eight', _write(88)) self:assertEquals('eighty-nine', _write(89)) self:assertEquals('ninety'     , _write(90)) self:assertEquals('ninety-one' , _write(91)) self:assertEquals('ninety-two' , _write(92)) self:assertEquals('ninety-three', _write(93)) self:assertEquals('ninety-four', _write(94)) self:assertEquals('ninety-five', _write(95)) self:assertEquals('ninety-six' , _write(96)) self:assertEquals('ninety-seven', _write(97)) self:assertEquals('ninety-eight', _write(98)) self:assertEquals('ninety-nine', _write(99)) self:assertEquals('one hundred', _write(100)) end

function suite:testGoodInvokeInput self:assertEquals('four', write{'4'}) self:assertEquals('thirteen', write{'13'}) self:assertEquals('seventy-seven', write{'77'}) end

function suite:testBadInputInvoke local msg = '&#x3c;strong class="error"&#x3e;Error: input must be an integer between 0 and ' .. tostring(max) .. '&#x3c;/strong&#x3e;' self:assertEquals(msg, write{'foo'}) self:assertEquals(msg, write{'-1'}) self:assertEquals(msg, write{'101'}) self:assertEquals(msg, write{'3.5'}) end

function suite:testBadInputLua self:assertFalse(pcall(_write, 'foo')) self:assertFalse(pcall(_write, -1)) self:assertFalse(pcall(_write, 101)) self:assertFalse(pcall(_write, 3.5)) self:assertFalse(pcall(_write, 0/0)) self:assertFalse(pcall(_write, math.huge)) end

return suite