Module:ConvertNumeric/testcases
Appearance
From Wikipedia, the free encyclopedia
-- Unit tests for [[Module:ConvertNumeric]]. 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+: (.+)%.$')ormessage returnmessage end functionp:test_numeral_to_english() self:preprocess_equals_many('{{#invoke:ConvertNumeric | 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'}, }) end functionp:test_numeral_to_english_error() localcases={'','a','.','e','E','E1','.E1','+','-','123a','a123','0.1a','-a123'} localnowiki=mw.text.nowiki for_,caseinipairs(cases)do localwikitext='{{#invoke:ConvertNumeric | numeral_to_english |'..case..'}}' self:equals(nowiki(wikitext),get_error_text(wikitext),'Invalid decimal numeral') end end functionp:test_numeral_to_english_round() self:preprocess_equals_many('{{#invoke:ConvertNumeric | 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'}, }) end functionp:test_decToHex() self:preprocess_equals( '{{#invoke:ConvertNumeric|decToHex|10 20 40 1024 78912345|minlength=4}}', '000A 0014 0028 0400 4B41B59' ) end returnp