Module:ConvertNumeric/testcases

13 of 74 tests failed. (refresh)

TextExpectedActualDiffers at
test_decToHex:
Passed{{#invoke:ConvertNumeric|decToHex|10 20 40 1024 78912345|minlength=4}}000A 0014 0028 0400 4B41B59000A 0014 0028 0400 4B41B59
TextExpectedActualDiffers at
test_numeral_to_english:
Passed{{#invoke:ConvertNumeric | numeral_to_english |0}}zerozero
Passed{{#invoke:ConvertNumeric | numeral_to_english |1}}oneone
Passed{{#invoke:ConvertNumeric | numeral_to_english | 1 }}oneone
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | case=u}}OneOne
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | case=U}}OneOne
Passed{{#invoke:ConvertNumeric | numeral_to_english |-1}}negative onenegative one
Passed{{#invoke:ConvertNumeric | numeral_to_english |-1 | negative=minus}}minus oneminus one
Passed{{#invoke:ConvertNumeric | numeral_to_english |70}}seventyseventy
Passed{{#invoke:ConvertNumeric | numeral_to_english |42}}forty-twoforty-two
Passed{{#invoke:ConvertNumeric | numeral_to_english |123}}one hundred and twenty-threeone hundred and twenty-three
Passed{{#invoke:ConvertNumeric | numeral_to_english |123 | sp=us}}one hundred twenty-threeone hundred twenty-three
Passed{{#invoke:ConvertNumeric | numeral_to_english |123 | adj=on}}one-hundred-and-twenty-threeone-hundred-and-twenty-three
Passed{{#invoke:ConvertNumeric | numeral_to_english |1050}}one thousand and fiftyone thousand and fifty
Passed{{#invoke:ConvertNumeric | numeral_to_english |1050 | sp=us}}one thousand fiftyone thousand fifty
Passed{{#invoke:ConvertNumeric | numeral_to_english |0.25}}zero point two fivezero point two five
Passed{{#invoke:ConvertNumeric | numeral_to_english |.25}}zero point two fivezero point two five
Passed{{#invoke:ConvertNumeric | numeral_to_english |0 | ord=on}}zerothzeroth
Passed{{#invoke:ConvertNumeric | numeral_to_english |33 | ord=on}}thirty-thirdthirty-third
Passed{{#invoke:ConvertNumeric | numeral_to_english |40 | ord=on}}fortiethfortieth
Passed{{#invoke:ConvertNumeric | numeral_to_english |5000000000 | ord=on}}five billionthfive billionth
Passed{{#invoke:ConvertNumeric | numeral_to_english |0 | pl=on}}zeroszeros
Passed{{#invoke:ConvertNumeric | numeral_to_english |76 | pl=on}}seventy-sixesseventy-sixes
Passed{{#invoke:ConvertNumeric | numeral_to_english |1000000000000000000000000000001}}one nonillion and oneone nonillion and one
Passed{{#invoke:ConvertNumeric | numeral_to_english |1.23E3}}one thousand two hundred and thirtyone thousand two hundred and thirty
Passed{{#invoke:ConvertNumeric | numeral_to_english |123E-4}}zero point zero one two threezero point zero one two three
Passed{{#invoke:ConvertNumeric | numeral_to_english |1001001001001000 | lk=on}}one quadrillion one trillion one billion one million one thousandone quadrillion one trillion one billion one million one thousand
Passed{{#invoke:ConvertNumeric | numeral_to_english |1001001001001000 | lk=billion,quadrillion}}one quadrillion one trillion one billion one million one thousandone quadrillion one trillion one billion one million one thousand
Passed{{#invoke:ConvertNumeric | numeral_to_english |5E30}}five nonillionfive nonillion
Passed{{#invoke:ConvertNumeric | numeral_to_english |-123456789.25}}negative one hundred twenty-three million four hundred fifty-six thousand seven hundred and eighty-nine point two fivenegative one hundred twenty-three million four hundred fifty-six thousand seven hundred and eighty-nine point two five
Passed{{#invoke:ConvertNumeric | numeral_to_english |0 | zero=foo}}foofoo
Passed{{#invoke:ConvertNumeric | numeral_to_english |0 | ord=on | zero=none}}nonenone
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | numerator=2 | denominator=3}}one and two-thirdsone and two-thirds
Passed{{#invoke:ConvertNumeric | numeral_to_english || numerator=2 | denominator=3}}two-thirdstwo-thirds
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | denominator=2}}one and a halfone and a half
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | numerator=3 | denominator=2}}one and three-halvesone and three-halves
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | numerator=1 | denominator=4}}one and a quarterone and a quarter
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | numerator=1 | denominator=4 | sp=us}}one and a fourthone and a fourth
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | numerator=1 | denominator=4 | one=one}}one and one-quarterone and one-quarter
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | numerator=1 | denominator=4 | sp=us | one=one}}one and one-fourthone and one-fourth
Passed{{#invoke:ConvertNumeric | numeral_to_english |9 | numerator=3 | denominator=4}}nine and three-quartersnine and three-quarters
Passed{{#invoke:ConvertNumeric | numeral_to_english |9 | numerator=3 | denominator=4 | sp=us}}nine and three-fourthsnine and three-fourths
Passed{{#invoke:ConvertNumeric | numeral_to_english |23 | numerator=12 | denominator=16}}twenty-three and twelve-sixteenthstwenty-three and twelve-sixteenths
TextExpectedActualDiffers at
test_numeral_to_english_error:
Failed{{#invoke:ConvertNumeric | numeral_to_english |}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |a}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |.}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |e}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |E}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |E1}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |.E1}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |+}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |-}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |123a}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |a123}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |0.1a}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
Failed{{#invoke:ConvertNumeric | numeral_to_english |-a123}}Invalid decimal numeralLua error in Module:ConvertNumeric at line 503: Invalid decimal numeral1
TextExpectedActualDiffers at
test_numeral_to_english_round:
Passed{{#invoke:ConvertNumeric | numeral_to_english |1 | round=on}}oneone
Passed{{#invoke:ConvertNumeric | numeral_to_english |37 | round=on}}thirty-seventhirty-seven
Passed{{#invoke:ConvertNumeric | numeral_to_english |190 | round=on}}two hundredtwo hundred
Passed{{#invoke:ConvertNumeric | numeral_to_english |110 | round=up}}two hundredtwo hundred
Passed{{#invoke:ConvertNumeric | numeral_to_english |190 | round=down}}one hundredone hundred
Passed{{#invoke:ConvertNumeric | numeral_to_english |87654321 | round=on}}ninety millionninety million
Passed{{#invoke:ConvertNumeric | numeral_to_english |12345678 | round=on}}twelve milliontwelve million
Passed{{#invoke:ConvertNumeric | numeral_to_english |-190 | round=on}}negative two hundrednegative two hundred
Passed{{#invoke:ConvertNumeric | numeral_to_english |-190 | round=up}}negative one hundrednegative one hundred
Passed{{#invoke:ConvertNumeric | numeral_to_english |-110 | round=down}}negative two hundrednegative two hundred
Passed{{#invoke:ConvertNumeric | numeral_to_english |0.25 | round=on}}zerozero
Passed{{#invoke:ConvertNumeric | numeral_to_english |0.5 | round=on}}oneone
Passed{{#invoke:ConvertNumeric | numeral_to_english |-0.25 | round=on}}zerozero
Passed{{#invoke:ConvertNumeric | numeral_to_english |-0.5 | round=on}}negative onenegative one
Passed{{#invoke:ConvertNumeric | numeral_to_english |0.01 | round=up}}oneone
Passed{{#invoke:ConvertNumeric | numeral_to_english |0.99 | round=down}}zerozero
Passed{{#invoke:ConvertNumeric | numeral_to_english |-0.01 | round=down}}negative onenegative one
Passed{{#invoke:ConvertNumeric | numeral_to_english |-0.99 | round=up}}zerozero

-- Unit tests for [[Module:ConvertNumeric]]. Click talk page to run tests.
local p = require('Module:UnitTests')

local frame = mw.getCurrentFrame()
local function get_error_text(wikitext)
	local message = frame:preprocess(wikitext):match('<strong class="error"><[^>]+>(.-)<[^>]+></strong>')
	message = message:match('at line %d+: (.+)%.$') or message
	return message
end

function p:test_numeral_to_english()
	self:preprocess_equals_many('{{#invoke:ConvertNumeric | numeral_to_english |', '}}', {
		{'0', 'zero'},
		{'1', 'one'},
		{' 1 ', 'one'}, -- test whitespace around number
		{'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

function p:test_numeral_to_english_error()
	local cases = {'', 'a', '.', 'e', 'E', 'E1', '.E1', '+', '-', '123a', 'a123', '0.1a', '-a123' }
	local nowiki = mw.text.nowiki
	for _, case in ipairs(cases) do
		local wikitext = '{{#invoke:ConvertNumeric | numeral_to_english |' .. case .. '}}'
		self:equals(nowiki(wikitext), get_error_text(wikitext), 'Invalid decimal numeral')
	end
end

function p: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

function p:test_decToHex()
	self:preprocess_equals(
		'{{#invoke:ConvertNumeric|decToHex|10 20 40 1024 78912345|minlength=4}}',
		'000A 0014 0028 0400 4B41B59'
	)
end

return p