Fara í innihald

Module:ConvertNumeric/testcases

Úr Wikipediu, frjálsa alfræðiritinu

Hægt er að búa til leiðbeiningar fyrir þessa skriftu á Module:ConvertNumeric/testcases/doc

-- 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('í línu %d+: (.+)%.$') or message
	return message
end

function p:test_numeral_to_english()
	self:preprocess_equals_many('{{#invoke:ConvertNumeric | numeral_to_english |', '}}', {
		{'0', 'núll'},
		{'1', 'einn'},
		{' 1 ', 'einn'}, -- test whitespace around number
		{'1 | case=u', 'Einn'},
		{'1 | case=U', 'Einn'},
		{'-1', 'mínus einn'},
		{'-1 | negative=minus', 'minus einn'},
		{'70', 'sjötíu'},
		{'42', 'fjörutíu og tveir'},
		{'123', 'eitt hundrað tuttugu og þrír'},
		{'123 | sp=us', 'one hundred twenty-three'},      -- X
		{'123 | adj=on', 'one-hundred-and-twenty-three'}, -- X
		{'1050', 'eitt þúsund og fimmtíu'},
		{'1050 | sp=us', 'one thousand fifty'}, -- X
		{'0.25', 'núll komma tveir fimm'},
		{'.25', 'núll komma tveir fimm'},
		{'0 | ord=on', 'núllti'},
		{'33 | ord=on', 'þrítugasti og þriðji'},
		{'40 | ord=on', 'fertugasti'},
		{'5000000000 | ord=on', 'fimm milljarðasti'},
		{'0 | pl=on', 'núll'},
		{'76 | pl=on', 'sjötíu sexur'},
		{'1000000000000000000000000000001', 'ein kvintilljón og einn'},
		{'1.23E3', 'eitt þúsund tvö hundruð og þrjátíu'},
		{'123E-4', 'núll komma núll einn tveir þrír'},
		{'1001001001001000 | lk=on', 'einn [[billjarður]] ein [[billjón]] einn [[milljarður]] ein milljón eitt þúsund'},
		{'1001001001001000 | lk=billion,quadrillion', 'einn [[billjarður]] ein [[billjón]] einn milljarður ein milljón eitt þúsund'},
		{'5E30', 'fimm kvintilljón'},
		{'-123456789.25', 'mínus eitt hundrað tuttugu og þrjár milljónir fjögur hundruð fimmtíu og sex þúsund sjö hundruð áttatíu og níu komma tveir fimm'},
		{'0 | zero=foo', 'foo'},
		{'0 | ord=on | zero=none', 'none'},
		{'1 | numerator=2 | denominator=3', 'einn og tveir þriðju'},
		{'| numerator=2 | denominator=3', 'tveir þriðju'},
		{'1 | denominator=2', 'einn og hálfur'},
		{'1 | numerator=3 | denominator=2', 'einn og þrír aðrir'},
		{'1 | numerator=1 | denominator=4', 'einn og fjórðungur'},
		{'1 | numerator=1 | denominator=4 | sp=us', 'one and a fourth'}, --XX
		{'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), 'Ógild tugatala')
	end
end

function p:test_numeral_to_english_round()
	self:preprocess_equals_many('{{#invoke:ConvertNumeric | numeral_to_english |', '}}', {
		{'1 | round=on', 'einn'},
		{'37 | round=on', 'þrjátíu og sjö'},
		{'190 | round=on', 'tvö hundruð'},
		{'110 | round=up', 'tvö hundruð'},
		{'190 | round=down', 'eitt hundrað'},
		{'87654321 | round=on', 'níutíu milljónir'},
		{'12345678 | round=on', 'tólf milljónir'},
		{'-190 | round=on', 'mínus tvö hundruð'},
		{'-190 | round=up', 'mínus eitt hundrað'},
		{'-110 | round=down', 'mínus tvö hundruð'},
		{'0.25 | round=on', 'núll'},
		{'0.5 | round=on', 'einn'},
		{'-0.25 | round=on', 'núll'},
		{'-0.5 | round=on', 'mínus einn'},
		{'0.01 | round=up', 'einn'},
		{'0.99 | round=down', 'núll'},
		{'-0.01 | round=down', 'mínus einn'},
		{'-0.99 | round=up', 'núll'},
	})
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