Module:ConvertNumeric/testcases
| This is the test cases page for the module Module:ConvertNumeric. Results of the test cases. |
-- 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
{'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
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
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.