Modul:Sandbox/Jhertel/Formattal/testcases
Udseende
--[[
Modul:Formattal/testcases
Enhedstests for Modul:Formattal. Klik på diskussionsside for at køre tests.
]]
local modulnavn = 'Sandbox/Jhertel/Formattal' -- HUSK: Ændres alt efter sandkasse eller produktion.
local p = require('Module:UnitTests')
local Formattal = require('Module:' .. modulnavn)
function p:test_isSequenceOfAtLeastOneDigit()
self:equals("", Formattal.isSequenceOfAtLeastOneDigit(""), false)
self:equals("1", Formattal.isSequenceOfAtLeastOneDigit("1"), true)
self:equals("a", Formattal.isSequenceOfAtLeastOneDigit("a"), false)
self:equals("12", Formattal.isSequenceOfAtLeastOneDigit("12"), true)
self:equals("123456777", Formattal.isSequenceOfAtLeastOneDigit("123456777"), true)
self:equals("123456777a", Formattal.isSequenceOfAtLeastOneDigit("123456777a"), false)
end
function p:test_fejlangivelseskode(fejltekst, angivFejlSynligt)
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.opdelITalOgRest("-123.332.332")}, {"-123.332.332", ""})
self:equals_deep("-123.332.332!", {Formattal.opdelITalOgRest("-123.332.332!")}, {"-123.332.332", "!"})
self:equals_deep("!", {Formattal.opdelITalOgRest("!")}, {"", "!"})
self:equals_deep("+123,43.544<ref>hello</ref>", {Formattal.opdelITalOgRest("+123,43.544<ref>hello</ref>")}, {"+123,43.544", "<ref>hello</ref>"})
end
function p:test_formattal()
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: Mellemrum efter fortegn er blevet gyldigt, men fjernes,
-- da det er ukorrekt skrivemåde, pr. 2017-11-26.
{"+ 123.00", "+123,00"},
{"- 123.00", "-123,00"},
{"- 123.00", "-123,00"},
{"+ 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 tilsyneladende ikke kan *teste* rigtige referencer,
-- fordi Module:UnitTests ikke synes at kunne klare det. Måske fordi
-- referencerne bliver omdannet til noget andet, inden Module:UnitTests
-- får fingrene i outputtet. Vi kunne dog selvfølgelig, hvis vi vidste,
-- hvad Module:UnitTests får fingre i, blot afspejle dette i testen,
-- men jeg (Jhertel) ved ikke hvad det er.
--{"+123.43<ref name='hello' />", "+123,43<ref name='hello' />"},
-- 2017-11-26: Tomt input er gyldigt input, viser det sig, og det skal
-- blot give et tomt output.
-- https://da.wikipedia.org/wiki/Brugerdiskussion:Jhertel#Modul_formattal_og_tomt_input
{"", ""},
-- 2017-11-26: Nonsens er nu gyldigt, da det svarer til et ikke-angivet
-- tal efterfulgt af noget vilkårligt andet, og ikke-angivne tal er jo
-- gyldige.
{"nonsens", "nonsens"},
})
-- Tal som skal give fejl.
if Formattal.angivFejlSynligt then
-- Tests som skal give rød stjerne med nærmere fejlbeskrivelse, fordi
-- dette er slået til i Formattal-modulet.
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: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'1.234\'.">*</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: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'12.345\'.">*</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: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'123.456\'.">*</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: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'1,234\'.">*</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: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'12,345\'.">*</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: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'123,456\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
})
else
-- Tests som ikke skal give rød stjerne med nærmere fejlbeskrivelse, fordi
-- dette er slået fra i Formattal-modulet.
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]]'},
})
end
if Formattal.angivFejlSynligt then
-- Tests som skal give rød stjerne med nærmere fejlbeskrivelse, fordi
-- dette er slået til i Formattal-modulet.
self:preprocess_equals_many("{{#invoke:" .. modulnavn .. "|formattal|", "}}", {
-- 3 eller flere decimaler, hvor tallet ikke kan fortolkes som et heltal.
{".123", '.123<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'.123\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
{".1234", '.1234<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'.1234\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
{"0.1234", '0.1234<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'0.1234\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
{",123", ',123<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \',123\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
{"0,1234", '0,1234<sup><span style="color:red" title="Skabelonen Formattal kan ikke konvertere dette tal: Ugyldigt placerede eller ugyldige tusindadskillere i heltalsdelen \'0,1234\'.">*</span></sup>[[Kategori:Sider med tal hvis format ikke kendes af formattal]]'},
})
else
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