local myModule = require 'Modul:Wikidata/Formatters/approx'
local ScribuntoUnit = require 'Modul:ScribuntoUnit'
local suite = ScribuntoUnit:new()
function suite:testFormatNumber()
local provider = {
[123] = '123',
[1000] = '1 000',
[1234] = 'přibližně 1 200',
[9876] = 'přibližně 9 900',
[10000] = 'přibližně 10 tisíc',
[12345] = 'přibližně 12 tisíc',
[98765] = 'přibližně 99 tisíc',
[123456] = 'přibližně 123 tisíc',
[987654] = 'přibližně 988 tisíc',
[999999] = 'přibližně 1 milion',
[1000000] = 'přibližně 1 milion',
[1000001] = 'přibližně 1 milion',
[1234567] = 'přibližně 1,23 milionu',
[2000000] = 'přibližně 2 miliony',
[2000002] = 'přibližně 2 miliony',
[3611222] = 'přibližně 3,61 milionu',
[5000005] = 'přibližně 5 milionů',
[56570000] = 'přibližně 56,6 milionu',
[123456789] = '123 456 789',
}
for num, expected in pairs(provider) do
self:assertEquals(expected, myModule.formatNumber(num, {}))
end
end
function suite:testFormatNumber_inflected_thousands()
local provider = {
['1'] = 'přibližně 123 tisíc',
['2'] = 'přibližně 123 tisíc',
['3'] = 'přibližně 123 tisícům',
['4'] = 'přibližně 123 tisíc',
['6'] = 'přibližně 123 tisících',
['7'] = 'přibližně 123 tisíci',
[false] = 'přibližně 123 tisíc',
}
for case, expected in pairs(provider) do
self:assertEquals(expected, myModule.formatNumber(123456, { case = case or nil }))
end
end
function suite:testFormatNumber_inflected_millions()
local provider = {
[1e6] = {
['1'] = 'přibližně 1 milion',
['2'] = 'přibližně 1 milionu',
['3'] = 'přibližně 1 milionu',
['4'] = 'přibližně 1 milion',
['6'] = 'přibližně 1 milionu',
['7'] = 'přibližně 1 milionem',
[false] = 'přibližně 1 milion',
},
[2e6] = {
['1'] = 'přibližně 2 miliony',
['2'] = 'přibližně 2 milionů',
['3'] = 'přibližně 2 milionům',
['4'] = 'přibližně 2 miliony',
['6'] = 'přibližně 2 milionech',
['7'] = 'přibližně 2 miliony',
[false] = 'přibližně 2 miliony',
},
[5e6] = {
['1'] = 'přibližně 5 milionů',
['2'] = 'přibližně 5 milionů',
['3'] = 'přibližně 5 milionům',
['4'] = 'přibližně 5 milionů',
['6'] = 'přibližně 5 milionech',
['7'] = 'přibližně 5 miliony',
[false] = 'přibližně 5 milionů',
},
}
for count, struct in pairs(provider) do
for case, expected in pairs(struct) do
self:assertEquals(expected, myModule.formatNumber(count, { case = case or nil }))
end
end
end
return suite