Module:Formatnum/testcases
Appearance
![]() | This is the test cases page for the module Module:Formatnum. Results of the test cases. |
-- Unit tests for [[Module:Formatnum]]. Click talk page to run tests.
local p = require('Module:UnitTests')
function p:test_1_English_basic()
self:preprocess_equals('{{Formatnum|0|en}}', '0')
self:preprocess_equals('{{Formatnum|-123|en}}', '-123')
end
function p:test_2_unnecessary_signs()
self:preprocess_equals('{{Formatnum|-0|en}}', '0')
self:preprocess_equals('{{Formatnum|+123|en}}', '123')
end
function p:test_3_non_numbers_preserved()
self:preprocess_equals('{{Formatnum|12:34:45|en}}', '12:34:45')
self:preprocess_equals('{{Formatnum|12 h 34|fr}}', '12 h 34')
self:preprocess_equals('{{Formatnum|12:34:45|th}}', '12:34:45')
self:preprocess_equals('{{Formatnum|12:34:45.00|en}}', '12:34:45.00')
self:preprocess_equals('{{Formatnum|12°34′45.00″|en}}', '12°34′45.00″')
self:preprocess_equals('{{Formatnum|some words...|en}}', 'some words...')
end
function p:test_4_English_precision_rounding()
self:preprocess_equals_preprocess_many(
'{{Formatnum|', '}}',
'{{Formatnum/old|', '}}',
{
{'100|en|prec=1'},
{'100.0|en|prec=1'},
{'100.01|en|prec=2'},
{'100.01|en|prec=3'},
{'100.010|en|prec=2'},
})
end
function p:test_5_English_bad_parameters()
self:preprocess_equals_preprocess_many(
'{{Formatnum|', '}}',
'{{Formatnum/old|', '}}',
{
{'.10,00|en'},
{'.10,00|en|sep='},
{'100,0.|en'},
{'100,0.|en|sep='},
{'100.01|en|prec=-2'},
{'200.1|en|prec=3.5'},
})
self:preprocess_equals('{{Formatnum|200.1|en|prec=3,5}}', '200.1')
self:preprocess_equals('{{Formatnum|200.1|en|prec=a}}', '200.1')
end
function p:test_6_decimal_separator()
self:preprocess_equals('{{Formatnum|.12345|en}}', '0.12345')
self:preprocess_equals('{{Formatnum|.12345|fr}}', '0,12345')
self:preprocess_equals('{{Formatnum|123.45|en}}', '123.45')
self:preprocess_equals('{{Formatnum|123.45|fr}}', '123,45')
self:preprocess_equals('{{Formatnum|123.|en}}', '123')
self:preprocess_equals('{{Formatnum|123.|fr}}', '123')
self:preprocess_equals('{{Formatnum|123.00|en}}', '123')
self:preprocess_equals('{{Formatnum|123.00|fr}}', '123')
self:preprocess_equals('{{Formatnum|1001|de}}', '1.001')
self:preprocess_equals('{{Formatnum|1001|pl}}', '1001')
self:preprocess_equals('{{Formatnum|1001|en}}', '1,001')
end
function p:test_7_no_grouping_separators()
self:preprocess_equals('{{Formatnum|100000|en|sep=1}}', '100000')
self:preprocess_equals('{{Formatnum|100000|fr|sep=1}}', '100000')
end
function p:test_8_HTML_entity_or_native_UTF8()
self:preprocess_equals('{{Formatnum|12345|en}}', '12,345')
self:preprocess_equals('{{Formatnum/old|12345|en}}', '12,345')
self:preprocess_equals('{{Formatnum|12345|fr}}', '12\194\160345') -- "\194\160" in Lua litterals is NBSP (U+00A0) encoded in UTF-8 (0xC2,0xA0)
self:preprocess_equals('{{Formatnum/old|12345|fr}}', '12 345') -- this difference should be corrected: the old template version generated HTML entities
self:preprocess_equals_preprocess_many(
'{{Formatnum|12345|', '}}',
'{{Formatnum/old|12345|', '}}',
{
{'en'}, -- this is OK
{'fr'}, -- this fails when comparing them
{'br'}, -- this fails when comparing them
{'co'}, -- this fails when comparing them
{'oc'}, -- this fails when comparing them
{'ty'}, -- this fails when comparing them
}
)
end
function p:test_9_grouping_separators()
self:preprocess_equals_preprocess_many(
'{{Formatnum|1234567890|', '}}',
'{{Formatnum/old|1234567890|', '}}',
{ -- this test will 'fr' will fail as long as test 8 fails
{'en'},
{'ka'},
{'mn'},
{'ar'},
{'fa'},
{'ks'},
{'hi'},
{'bn'},
{'ta'},
{'te'},
{'kn'},
{'or'},
{'gu'},
{'pa'},
{'bo'},
{'th'},
{'km'},
{'lo'},
})
end
function p:test_Error_more_than_20_languages()
self:preprocess_equals('{{Formatnum|100000|ab|sep=1}}', '100000')
self:preprocess_equals('{{Formatnum|100000|ace|sep=1}}', '100000')
end
function p:test_Unsupported_languages_using_user_default_language_instead_may_fail()
-- these may fail depending on supported language of the user if it uses non-ASCII digits
self:preprocess_equals('{{Formatnum|100000||sep=1}}', '100000') -- unspecified Wikimedia default
self:preprocess_equals('{{Formatnum|100000|aa|sep=1}}', '100000') -- Afar
self:preprocess_equals('{{Formatnum|100000|qq|sep=1}}', '100000') -- Private-use
self:preprocess_equals('{{Formatnum|100000|qqa|sep=1}}', '100000') -- Private-use
self:preprocess_equals('{{Formatnum|100000|mul|sep=1}}', '100000') -- Multilingual
self:preprocess_equals('{{Formatnum|100000|und|sep=1}}', '100000') -- Undetermined
self:preprocess_equals('{{Formatnum|100000|root|sep=1}}', '100000') -- CLDR default
self:preprocess_equals('{{Formatnum|100000|user|sep=1}}', '100000')
self:preprocess_equals('{{Formatnum|100000|invalid|sep=1}}', '100000')
end
return p