Jump to content

Module:ConvertNumeric/sandbox/testcases

From Wikipedia, the free encyclopedia
-- Unit tests for [[Module:ConvertNumeric/sandbox]]. Click talk page to run tests.localp=require('Module:UnitTests')localframe=mw.getCurrentFrame()localfunctionget_error_text(wikitext)localmessage=frame:preprocess(wikitext):match('<strong class="error"><[^>]+>(.-)<[^>]+></strong>')message=message:match('at line %d+: (.+)%.$')ormessagereturnmessageendfunctionp:test_numeral_to_english()self:preprocess_equals_many('{{#invoke:ConvertNumeric/sandbox | numeral_to_english |','}}',{{'0','zero'},{'1','one'},{' 1 ','one'},-- test whitespace around number{'3 + 5','eight'},-- test expression support{'1 | case=u','One'},{'1 | case=U','One'},{'-1','negative one'},{'-1 | negative=minus','minus one'},{'70','seventy'},{'42','forty-two'},{'123','one hundred and twenty-three'},{'123 | sp=us','one hundred twenty-three'},{'123 | adj=on','one-hundred-and-twenty-three'},{'1050','one thousand and fifty'},{'1050 | sp=us','one thousand fifty'},{'0.25','zero point two five'},{'.25','zero point two five'},{'0 | ord=on','zeroth'},{'33 | ord=on','thirty-third'},{'40 | ord=on','fortieth'},{'5000000000 | ord=on','five billionth'},{'0 | pl=on','zeros'},{'76 | pl=on','seventy-sixes'},{'1000000000000000000000000000001','one nonillion and one'},{'1.23E3','one thousand two hundred and thirty'},{'123E-4','zero point zero one two three'},{'1001001001001000 | lk=on','one [[Orders_of_magnitude_(numbers)#1015|quadrillion]] one [[Orders_of_magnitude_(numbers)#1012|trillion]] one [[Orders_of_magnitude_(numbers)#109|billion]] one million one thousand'},{'1001001001001000 | lk=billion,quadrillion','one [[Orders_of_magnitude_(numbers)#1015|quadrillion]] one trillion one [[Orders_of_magnitude_(numbers)#109|billion]] one million one thousand'},{'5E30','five nonillion'},{'-123456789.25','negative one hundred twenty-three million four hundred fifty-six thousand seven hundred and eighty-nine point two five'},{'0 | zero=foo','foo'},{'0 | ord=on | zero=none','none'},{'1 | numerator=2 | denominator=3','one and two-thirds'},{'| numerator=2 | denominator=3','two-thirds'},{'1 | denominator=2','one and a half'},{'1 | numerator=3 | denominator=2','one and three-halves'},{'1 | numerator=1 | denominator=4','one and a quarter'},{'1 | numerator=1 | denominator=4 | sp=us','one and a fourth'},{'1 | numerator=1 | denominator=4 | one=one','one and one-quarter'},{'1 | numerator=1 | denominator=4 | sp=us | one=one','one and one-fourth'},{'9 | numerator=3 | denominator=4','nine and three-quarters'},{'9 | numerator=3 | denominator=4 | sp=us','nine and three-fourths'},{'23 | numerator=12 | denominator=16','twenty-three and twelve-sixteenths'},})endfunctionp:test_numeral_to_english_error()localcases={'','a','.','e','E','E1','.E1','+','-','123a','a123','0.1a','-a123'}localnowiki=mw.text.nowikifor_,caseinipairs(cases)dolocalwikitext='{{#invoke:ConvertNumeric/sandbox | numeral_to_english |'..case..'}}'self:equals(nowiki(wikitext),get_error_text(wikitext),'Invalid decimal numeral')endendfunctionp:test_numeral_to_english_round()self:preprocess_equals_many('{{#invoke:ConvertNumeric/sandbox | numeral_to_english |','}}',{{'1 | round=on','one'},{'37 | round=on','thirty-seven'},{'190 | round=on','two hundred'},{'110 | round=up','two hundred'},{'190 | round=down','one hundred'},{'87654321 | round=on','ninety million'},{'12345678 | round=on','twelve million'},{'-190 | round=on','negative two hundred'},{'-190 | round=up','negative one hundred'},{'-110 | round=down','negative two hundred'},{'0.25 | round=on','zero'},{'0.5 | round=on','one'},{'-0.25 | round=on','zero'},{'-0.5 | round=on','negative one'},{'0.01 | round=up','one'},{'0.99 | round=down','zero'},{'-0.01 | round=down','negative one'},{'-0.99 | round=up','zero'},})endfunctionp:test_decToHex()self:preprocess_equals('{{#invoke:ConvertNumeric/sandbox|decToHex|10 20 40 1024 78912345|minlength=4}}','000A 0014 0028 0400 4B41B59')endreturnp
close