Módulo:ConvertNumeric/sandbox/testcases

Este módulo no tiene página de documentación[crear]
-- Pruebas unitarias para [[Módulo:ConvertNumeric/sandbox]]. Los resultados actualizados de las pruebas se muestran en la página de discusión
local p = require('Módulo:UnitTests')

local frame = mw.getCurrentFrame()
local function get_error_text(wikitext)
	local message = frame:preprocess(wikitext):match('<strong class="error"><[^>]+>(.-)<[^>]+></strong>')
	message = message:match('en la línea %d+: (.+)%.$') or message
	return message
end

function p:test_numeral_to_spanish()
	self:preprocess_equals_many('{{#invoke:ConvertNumeric/sandbox | numeral_to_spanish |', '}}', {
		{'0', 'cero'},
		{'1', 'uno'},
		{' 1 ', 'uno'}, -- test whitespace around number
		{'1 | case=u', 'Uno'},
		{'1 | case=U', 'Uno'},
		{'-1', 'menos uno'},
		{'-1 | negative=prueba', 'prueba uno'},
		{'70', 'setenta'},
		{'42', 'cuarenta y dos'},
		{'123', 'ciento veintitrés'},
		{'1050', 'mil cincuenta'},
		{'0.25', 'cero con veinticinco centésimas'},
		{'.25', 'cero con veinticinco centésimas'},
		{'0 | ord=on', 'cero'},
		{'33 | ord=on', 'trigésimo tercero'},
		{'40 | ord=on', 'cuadragésimo'},
		{'5000000000 | ord=on', 'cinco mil millonésimo'},
		{'100 | ord=on', 'centésimo'},
		{'30 | ord=on', 'trigésimo'},
		{'40 | ord=on', 'cuadragésimo'},
		{'90 | ord=on', 'nonagésimo'},
		{'200 | ord=on', 'ducentésimo'},
		{'400 | ord=on', 'cuadringentésimo'},
		{'900 | ord=on', 'noningentésimo'},
		{'1000 | ord=on', 'milésimo'},
		{'51843213156 | ord=on', 'cincuenta y un mil ochocientos cuarenta y tres millones doscientos trece milésimo centésimo quincuagésimo sexto'},
		{'1000000000000000000000000000001', 'un quintillón uno'},
		{'1.23E3', 'mil doscientos treinta'},
		{'123E-4', 'cero con ciento veintitrés diezmilésimas'},
		{'1001001001001000 | lk=on', 'mil un [[Orden_de_magnitud_(números)#1012|billones]] mil un [[Orden_de_magnitud_(números)#106|millones]] mil'},
		{'1001001001001000 | lk=billones', 'mil un [[Orden_de_magnitud_(números)#1012|billones]] mil un millones mil'},
		{'1001001001001000', 'mil un billones mil un millones mil'},
		{'1000', 'mil'},
		{'1001', 'mil uno'},
		{'1000000', 'un millón'},
		{'10000000000', 'diez mil millones'}, 
		{'5E30', 'cinco quintillones'},
		{'-123456789.25', 'menos ciento veintitrés millones cuatrocientos cincuenta y seis mil setecientos ochenta y nueve con veinticinco centésimas'},
		{'0 | zero=foo', 'foo'},
		{'0 | ord=on | zero=none', 'none'},
	})
end

function p:test_numeral_to_spanish_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/sandbox | numeral_to_spanish |' .. case .. '}}'
		self:equals(nowiki(wikitext), get_error_text(wikitext), 'Número decimal erróneo')
	end
end

function p:test_numeral_to_spanish_round()
	self:preprocess_equals_many('{{#invoke:ConvertNumeric/sandbox | numeral_to_spanish |', '}}', {
		{'1 | round=on', 'uno'},
		{'37 | round=on', 'treinta y siete'},
		{'190 | round=on', 'doscientos'},
		{'110 | round=up', 'doscientos'},
		{'190 | round=down', 'cien'},
		{'87654321 | round=on', 'noventa millones'},
		{'12345678 | round=on', 'doce millones'},
		{'-190 | round=on', 'menos doscientos'},
		{'-190 | round=up', 'menos cien'},
		{'-110 | round=down', 'menos doscientos'},
		{'0.25 | round=on', 'cero'},
		{'0.5 | round=on', 'uno'},
		{'-0.25 | round=on', 'cero'},
		{'-0.5 | round=on', 'menos uno'},
		{'0.01 | round=up', 'uno'},
		{'0.99 | round=down', 'cero'},
		{'-0.01 | round=down', 'menos uno'},
		{'-0.99 | round=up', 'cero'},
	})
end

function p:test_decToHex()
	self:preprocess_equals(
		'{{#invoke:ConvertNumeric/sandbox|decToHex|10 20 40 1024 78912345|minlength=4}}',
		'000A 0014 0028 0400 4B41B59'
	)
end

return p