Spring til indhold

Modul:Formattal/testcases

Fra Wikipedia, den frie encyklopædi
Version fra 26. nov. 2017, 04:51 af Jhertel (diskussion | bidrag) Jhertel (diskussion | bidrag) (Udvidet med flere tests, herunder af hjælpefunktioner.)
Dette er siden til testcases for modulet Modul:Formattal. Vis resultatet af testen.
-- Enhedstests for [[Modul:Formattal]]. Klik på diskussionsside for at køre tests.
local modulnavn = 'Formattal'  -- HUSK: Ændres alt efter sandkasse eller produktion.

local p = require('Module:UnitTests')
local Formattal = require('Module:' .. modulnavn)


function p:test_fejlangivelseskode(fejltekst, angivFejlMedRoedStjerneOgFejlbeskrivelse)
	self:equals("Fejltekst ikke tom, skal vise stjerne", Formattal.fejlangivelseskode("her er fejlteksten", true), '<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: her er fejlteksten">*</span></sup>')
	self:equals("Fejltekst tom, skal vise stjerne", Formattal.fejlangivelseskode("", true), '<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: ">*</span></sup>')
	self:equals("Fejltekst ikke tom, skal ikke vise stjerne", Formattal.fejlangivelseskode("her er fejlteksten", false), '')
end

function p:test_opsplitIFortegnOgRest()
	self:equals_deep("", {Formattal.opsplitIFortegnOgRest("")}, {"", ""})
	self:equals_deep("1", {Formattal.opsplitIFortegnOgRest("1")}, {"", "1"})
	self:equals_deep("-1", {Formattal.opsplitIFortegnOgRest("-1")}, {"-", "1"})
	self:equals_deep("-12.34", {Formattal.opsplitIFortegnOgRest("-12.34")}, {"-", "12.34"})
	self:equals_deep("+12,304.34", {Formattal.opsplitIFortegnOgRest("+12,304.34")}, {"+", "12,304.34"})
	self:equals_deep("12,304.34", {Formattal.opsplitIFortegnOgRest("12,304.34")}, {"", "12,304.34"})
end

function p:test_removeAll()
	self:equals("Remove all , from 123,332,332", Formattal.removeAll("123,332,332", ","), "123332332")
	self:equals("Remove all %. from 123,332,332", Formattal.removeAll("123,332,332", "%."), "123,332,332")
	self:equals("Remove all %. from 123.332.332", Formattal.removeAll("123.332.332", "%."), "123332332")
	self:equals("Remove all l from hello", Formattal.removeAll("hello", "l"), "heo")
end

function p:test_modsatAdskillertegn()
	self:equals(",", Formattal.modsatAdskillertegn(","), ".")
	self:equals(".", Formattal.modsatAdskillertegn("."), ",")
end
 
function p:test_opdelInputITalOgRest()
	self:equals_deep("-123.332.332", {Formattal.opdelInputITalOgRest("-123.332.332")}, {"-123.332.332", ""})
	self:equals_deep("-123.332.332!", {Formattal.opdelInputITalOgRest("-123.332.332!")}, {"-123.332.332", "!"})
	self:equals_deep("!", {Formattal.opdelInputITalOgRest("!")}, {"", "!"})
	self:equals_deep("+123,43.544<ref>hello</ref>", {Formattal.opdelInputITalOgRest("+123,43.544<ref>hello</ref>")}, {"+123,43.544", "<ref>hello</ref>"})
end
 
function p:test_formattal()
	local medtagTestsSomViVedFejler = true
	
	self:preprocess_equals_many("{{#invoke:" .. modulnavn .. "|formattal|", "}}", {
	
		-- 0 decimaler, punktum som tusindadskiller
		{"1", "1"},
		{"12", "12"},
		{"123", "123"},
		{"1.234", "1.234"},
		{"12.345", "12.345"},
		{"123.456", "123.456"},
	
		-- 1 decimal, decimaladskiller komma, punktum som tusindadskiller
		{"1,0", "1,0"},
		{"12,0", "12,0"},
		{"123,0", "123,0"},
		{"1.234,0", "1.234,0"},
		{"12.345,0", "12.345,0"},
		{"123.456,0", "123.456,0"},
	
		-- 1 decimal, decimaladskiller punktum, komma som tusindadskiller
		{"1.0", "1,0"},
		{"12.0", "12,0"},
		{"123.0", "123,0"},
		{"1,234.0", "1.234,0"},
		{"12,345.0", "12.345,0"},
		{"123,456.0", "123.456,0"},
	
		-- 2 decimaler, decimaladskiller punktum, tusindadskiller punktum
		{"1.00", "1,00"},
		{"12.00", "12,00"},
		{"123.00", "123,00"},
		{"1.234,00", "1.234,00"},
		{"12.345,00", "12.345,00"},
		{"123.456,00", "123.456,00"},
	
		-- 2 decimaler, decimaladskiller punktum, tusindadskiller komma
		{"1.00", "1,00"},
		{"12.00", "12,00"},
		{"123.00", "123,00"},
		{"1,234.00", "1.234,00"},
		{"12,345.00", "12.345,00"},
		{"123,456.00", "123.456,00"},

		-- Negative tal er blevet gyldige pr. 2017-11-21.
		{"-123", "-123"},
	
		-- Plusfortegn er blevet gyldigt pr. 2017-11-26.
		{"+123.00", "+123,00"},
	
		-- 2017-11-26: Vi kan klare hvad som helst efter tallet nu.
		{"+123.43[ref]hello[/ref] lalalala", "+123,43[ref]hello[/ref] lalalala"},
	
		-- 2017-11-26: Vi kan godt klare referencer nu.
		-- Bemærk at vi ikke kan teste rigtige referencer, fordi testrammeværket
		-- ikke synes at kunne kan klare det.
		--{"+123.43<ref name='hello' />", "+123,43<ref name='hello' />"},
	
	})

	-- Tal som skal give fejl.
	
	if Formattal.angivFejlMedRoedStjerneOgFejlbeskrivelse then
		self:preprocess_equals_many("{{#invoke:" .. modulnavn .. "|formattal|", "}}", {
			-- 2 decimaler, decimaladskiller punktum, tusindadskiller punktum
			{"1.234.00", '1.234.00<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Heltalsdelen \'1.234\' indeholder ugyldige tusindadskillere; hele tallet er \'1.234.00\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
			{"12.345.00", '12.345.00<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Heltalsdelen \'12.345\' indeholder ugyldige tusindadskillere; hele tallet er \'12.345.00\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
			{"123.456.00", '123.456.00<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Heltalsdelen \'123.456\' indeholder ugyldige tusindadskillere; hele tallet er \'123.456.00\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
	
			-- 2 decimaler, decimaladskiller punktum, tusindadskiller komma
			{"1,234,00", '1,234,00<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Heltalsdelen \'1,234\' indeholder ugyldige tusindadskillere; hele tallet er \'1,234,00\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
			{"12,345,00", '12,345,00<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Heltalsdelen \'12,345\' indeholder ugyldige tusindadskillere; hele tallet er \'12,345,00\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
			{"123,456,00", '123,456,00<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Heltalsdelen \'123,456\' indeholder ugyldige tusindadskillere; hele tallet er \'123,456,00\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
		
			-- Nonsens er ugyldigt alene.
			{"nonsens", '<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Tallet er tomt.">*</span></sup>nonsens[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
	
			-- Tomt input er ugyldigt
			{"", '<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Tallet er tomt.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'}
	
		})

	else
		self:preprocess_equals_many("{{#invoke:" .. modulnavn .. "|formattal|", "}}", {
			-- 2 decimaler, decimaladskiller punktum, tusindadskiller punktum
			{"1.234.00", '1.234.00[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
			{"12.345.00", '12.345.00[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
			{"123.456.00", '123.456.00[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
	
			-- 2 decimaler, decimaladskiller punktum, tusindadskiller komma
			{"1,234,00", '1,234,00[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
			{"12,345,00", '12,345,00[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
			{"123,456,00", '123,456,00[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
		
			-- Nonsens er ugyldigt alene.
			{"nonsens", 'nonsens[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
	
			-- Tomt input er ugyldigt
			{"", '[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'}
	
		})
		
	end
	

	if medtagTestsSomViVedFejler then
		-- 2017-10-25: Disse fejler p.t.

		self:preprocess_equals_many("{{#invoke:" .. modulnavn .. "|formattal|", "}}", {
		
			-- 3 eller flere decimaler, hvor tallet ikke kan fortolkes som et heltal.
			{".123", ".123[[Kategori:Sider med tal hvis format ikke kendes af formattal]]"},
			{".1234", ".1234[[Kategori:Sider med tal hvis format ikke kendes af formattal]]"},
			{"0.1234", "0.1234[[Kategori:Sider med tal hvis format ikke kendes af formattal]]"},
			{",123", ",123[[Kategori:Sider med tal hvis format ikke kendes af formattal]]"},
			{"0,1234", "0,1234[[Kategori:Sider med tal hvis format ikke kendes af formattal]]"},
		
		})
		
	end
end


return p