Modul:Wikidata/Formatters/approx/testcases

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