Spring til indhold

Modul:Brug Wikidata/testcases

Fra Wikipedia, den frie encyklopædi
Version fra 15. nov. 2018, 20:19 af Jhertel (diskussion | bidrag) Jhertel (diskussion | bidrag) (Præciseret/korrigeret beskrivelse og variabelnavne. Den nuværende kode er ikke en direkte (og dermed selvstændig) enhedstest af modulet Modul:Brug Wikidata, men en test af et antal skabeloner, som benytter modulet. Og variabelnavnene afspejler nu, at variablene ikke indeholder fulde skabelonnavne, men en slags skabelonnavnspræfikser. Forsøger mig også med at bruge testskabeloner, som er knyttet til netop dette testcases-modul, uden at bruge et privat navnerum.)
Dette er siden til testcases for modulet Modul:Brug Wikidata. Vis resultatet af testen.
-- Tests af skabelonerne Wikidata-emne, Wikidata-tal, Wikidata-tid, 
-- Wikidata-streng, Wikidata-tekst og Wikidata-koord, som alle benytter 
-- Lua-modulet [[Modul:Brug Wikidata]]. 
-- Gå til diskussionssiden for at testresultaterne.

-- Husk at ændre dette præfiks til det sted, hvor testskabelonerne ligger,
-- før du kører testene.
--local testskabelonPrefix = 'Bruger:Dipsacus fullonum/Wikidata-sandkasse/Skabelon:Wikidata-'
local testskabelonPrefix = 'Modul:Brug Wikidata/testcases/Skabelon:Wikidata-'
local produktionsskabelonPrefix = 'Wikidata-'

local p = require('Modul:UnitTests')
 
function p:test_emne()
	self:preprocess_equals_preprocess_many('{{' .. testskabelonPrefix, '}}', '{{' .. produktionsskabelonPrefix, '}}', {
		{'emne | P6 | q=Q649'},
		{'emne | P6 | Brug denne tekst i stedet for Wikidata | q=Q649'}, -- 2 unavngivne parametre
		{'emne | P6 | feltnavn=borgmester | q=Q649'}, -- feltnavn, ingen wikidata -> tom
		{'emne | P6 | wikidata=ja | feltnavn=borgmester | q=Q649'}, -- feltnavn, wikidata = ja -> hent
		{'emne | P6 | wikidata=land,borgmester,tidszone | feltnavn=borgmester | q=Q649'}, -- feltnavn i wd-liste -> hent
		{'emne | P6 | wikidata=ja | ingen_wikidata=borgmester,land | feltnavn=borgmester | q=Q649'}, -- felt ikke i liste -> tom
		{'emne | P6 | q=Q499479'},
		{'emne | P6 | link=nej | q=Q499479'}, -- ingen link
		{'emne | P85 | q=Q35'}, -- flere værdier
		{'emne | P85 | adskil=<BR/> | q=Q35'}, -- en pr. linje
		{'emne | P85 | liste=ja | q=Q35'}, -- punktliste
		{'emne | P106 | ikon=ja | q=Q5673'}, -- ikon
		{'emne | P106 | maks=3 | medstort=ja | q=Q5673'}, -- maks. 3 værdier, første værdi med stort
		{'emne | P106 | liste=ja | medstort=alle | q=Q5673'}, -- liste, alle værdier med stort
		{'emne | P144 | kursiv=ja | q=Q243439'}, -- kursiv
		{'emne | P39 | kun=Q11696 | kvalifikator1=P582 | kvalifikator2=P1366 | ' ..
			'kvalifikatorformat1=Præsident til $2 | kvalifikatorformat2=$1 afløst af $2 | q=Q9588'}, -- kvalifikatorer, kun en værdi
		{'emne | P39 | kun=Q11699 | kvalifikator1=P582 | kvalifikator2=P1366 | ' ..
			'kvalifikatorformat1=Vicepræsident til $2 | kvalifikatorformat2=$1 afløst af $2 | q=Q9588' }, -- do
		{'emne | P421 | msk=ja | q=Q959'}, -- russisk tidszone med tilføjelse af moskvatid
		{'emne | P19 | land=$1 i $2 | q=Q5673'}, -- tilføjelse af land
		{'emne | P609 | sted=ja | adskil= &#32;og&#32; | q=Q2640747'}, -- 2 stednavne, Holland/Belgien - Vejs endepunkter
		{'emne | P20 | sted=ja | q=Q203433'}, -- stednavn, USA - dødssted
		{'emne | P17 | sted=ja | q=Q503379'}, -- stednavn, Danmark - land for en by - landet skal ikke gentages 
		{'emne | P17 | sted=ja | q=Q90'}, -- stednavn, Frankrig - land for en by - landet skal ikke gentages 
		{'emne | P131 | sted=ja | q=Q1097'}, -- stednavn, Tyskland
		{'emne | P36 | sted=ja | q=Q183'}, -- stednavn, Tyskland, delstat
		{'emne | P1411 | q=Q7085'},
		{'emne | P1411 | tid=ja | q=Q7085'}, -- tilføjelse af tidspunkter ()
		{'emne | P551 | q=Q7085'},
		{'emne | P551 | tid=ja | q=Q7085'}, -- tilføjelse af tidsperioder
		{'emne | P6 | tid=ja | parti=$1 ($2) | q=Q649'}, -- tilføjelse af tid og parti
		{'emne | P6 | tid=ja | kunår=ja | parti=$1 ($2) | q=Q649'}, -- tilføjelse af år og parti
		{'emne | P85 | kvalifikator1=P51 | kvalifikatorformat1=$1 [[File:$2]] | q=Q183'}, -- 1 kvalifikator
		{'emne | P35 | kvalifikator1=P580 | kvalifikatorformat1=$1, tiltrådt $2 | kvalifikator2=P459 | ' ..
			'kvalifikatorformat2=$1, valgt ved $2 | q=Q183'}, -- 2. kvalifikatorer
		{'emne | 1 = P676 | q=Q41524380 ' .. 
    		'| kvalifikator1=P585 | kvalifikatorformat1 = $2 | kvalifikatorbrug1=med'}, -- k-brug=med
		{'emne | P26 | q=Q905'}, -- novalue -> tom
		{'emne | P26 | ingen=Var aldrig gift | q=Q905'}, --> tekst for novalue
		{'emne | P21 | q=Q278475'}, -- somevalue -> tom
		{'emne | P21 | ukendt=vides ikke | q=Q278475'}, --> tekst for somevalue
		{'emne | P551 | maks=1 | q=Q7243'}, -- en af mange mere_end_maks
		{'emne | P551 | maks=1 | q=Q7243 | mere_end_maks= og andre'}, -- mere_end_maks
		{'emne | P551 | maks=1 | q=Q7243 | mere_end_maks='}, -- mere_end_maks tom
		{'emne | P40 | q=Q2304055 '}, -- navn på engelsk
		{'emne | P40 | sprognote=nej | q=Q2304055 '}, -- navn ikke på dansk, ingen note
		{'emne | P40 | sprognote=nej | sprogkat=nej | q=Q2304055 '}, -- navn ikke på dansk, ingen note, ingen kategori
		{'emne | P40 | q=Q2304055 | sprogkat=nej '}, -- navn ikke på dansk, ingen kategori
		{'emne | P40 | q=Q2304055 | sprognotegroup=note '}, -- navn ikke på dansk, sprognotegroup
	})
end

-- Disse er for sig selv for ikke at gøre text-kolonnen for smal i tabellen for de øvrige emne-resultater
function p:test_emne_bred() 
	self:preprocess_equals_preprocess_many('{{' .. testskabelonPrefix, '}}', '{{' .. produktionsskabelonPrefix, '}}', {
    	{'emne | P166 | q=Q7085 | kvalifikator1=P2121 | kvalifikatorbrug1=med'}, -- k-brug=med
    	{'emne | P166 | q=Q7085 | kvalifikator1=P2121 | kvalifikatorbrug1=uden '}, -- k-brug=uden
    	{'emne | P166 | q=Q7085 | kvalifikator1=P2121 | kvalifikatorbrug1=alle'}, -- k-brug=alle
    	{'emne | P166 | q=Q7085 | kvalifikator1=P2121 | kvalifikatorbrug1= '}, -- k-brug=
    	{'emne | P166 | q=Q7085 | kvalifikator1=P2121 '}, -- ingen k-brug
	})
end

function p:test_tal()
	self:preprocess_equals_preprocess_many('{{' .. testskabelonPrefix, '}}', '{{' .. produktionsskabelonPrefix, '}}', {
		{'tal | P2046 | q=Q183'}, -- 
		{'tal | P2046 | decimaler=5 | q=Q183'}, -- decimaler
		{'tal | P2046 | decimaler=5 | visusikkerhed=nej | q=Q183'}, -- ingen usikkehed 
		{'tal | P2046 | enhed=m2 | q=Q183'}, -- enhed 
		{'tal | P2046 | enhed=m2 | visenhed=nej | q=Q183'}, -- visenhed 
		{'tal | P2139 | q=Q818846'}, -- valuta 
		{'tal | P2139 | decimaler=2 | q=Q818846'}, -- decimale 
		{'tal | P2139 | decimaler=2 | visusikkerhed=nej | q=Q818846'}, -- ingen usikkerhed 
		{'tal | P1082 | tid=ja | q=Q649'}, -- med tid
		{'tal | P1082 | tid=ja | kunår=ja | q=Q649'}, -- med år
		{'tal | P1082 | q=Q649 | arealogtæthed=$1 indbyggere på $2 km<sup>2</sup>, dvs. $3 pr. km<sup>2</sup> |' ..
			' arealogtætheduden=$1 indbyggere' }, -- areal og tæthed
		{'tal | P1082 | kvalifikator1=P585 | kvalifikatorformat1=$1 indbyggere pr. $2 | q=Q183'}, -- kvalifier tid
		{'tal | P3086 | kvalifikator1=P794 | ingen=ingen | q=Q183'}, -- kvalifier som ikke vises, novalue 
		{'tal | P3086 | kvalifikator1=P794 | ingen=ingen | maks=2 | q=Q183'}, -- maks, kvalifier som ikke vises, novalue 
		{'tal | P2067 | q=Q7887991 | kvalifikator1=P642 '},
		{'tal| P2067 | q=Q7887991 | kvalifikator1=P642 | kvalifikatorbrug1=MTOW | kvalifikatorformat1=$1 '}, -- k-brug=label
		{'tal| P2067 | q=Q7887991 | kvalifikator1=P642 | kvalifikatorbrug1=Q938476 | kvalifikatorformat1=$1 '}, --k-brug=QID
		{'tal| P1352 | q=Q57557| kvalifikator1=P641 | kvalifikatorbrug1=singletennis | kvalifikatorformat1=$1 | tid=ja '}, --label, tid
		 -- Referencer
		{'tal | P1082 | q=Q5168 | ref = ja | viskm = ja  | kunurl = ja'},
		{'tal | P1082 | q=Q5168 | ref = ja | viskm = nej | kunurl = ja | '},
		{'tal | P1082 | q=Q898 | ref = nej '},
		{'tal | P1082 | q=Q898 | ref = ja | kunurl = nej | viskm = nej '},
		{'tal | P1082 | q=Q2684 | ref = ja | kunurl = nej'},
		{'tal | P1082 | q=Q2684 | ref = ja '},
		-- Mangler testcases for tal med: adskil=, liste=, kvalifikatorbrug=
	})
end

function p:test_tid()
	self:preprocess_equals_preprocess_many('{{' .. testskabelonPrefix, '}}', '{{' .. produktionsskabelonPrefix, '}}', {
		{'tid | P571 | q=Q181163 '}, -- dato
		{'tid | P571 | Brug denne tekst i stedet for Wikidata | q=Q181163 '}, -- tekst fra unavngiven arg.
		{'tid | P571 | feltnavn=åbningsdato | q=Q181163 '}, -- brug ikke
		{'tid | P571 | wikidata=ja | feltnavn=åbningsdato | q=Q181163 '}, -- brug
		{'tid | P571 | wikidata=logo,åbningsdato,sprog | feltnavn=åbningsdato | q=Q181163 '}, -- brug
		{'tid | P571 | wikidata=ja | ingen_wikidata=åbningsdato,land | feltnavn=åbningsdato | q=Q181163 '}, -- brug ikke
		{'tid | P585 | q=Q154510 '}, -- to årtier
		{'tid | P585 | adskil=<BR/> | q=Q154510 '}, -- to årtier, adskil
		{'tid | P585 | liste=ja | q=Q154510 '}, -- to årtier, liste
		{'tid | P569 | q=Q7085 '}, -- dato
		{'tid | P569 | kunår=ja | q=Q7085 '}, -- samme, kunår
		{'tid | P570 | alder=P569 | q=Q160187 '}, -- dødsdag med alder
		{'tid | P570 | q=Q1411 | alder=P569 '}, -- fødsels- og dødsdag med alder, alderformat
	})
end

function p:test_streng()
	self:preprocess_equals_preprocess_many('{{' .. testskabelonPrefix, '}}', '{{' .. produktionsskabelonPrefix, '}}', {
		{'streng | P281 | q=Q649 '}, -- streng
		{'streng | P281 | Brug denne tekst i stedet for Wikidata | q=Q649 '}, -- 2. unavngivne arg.
		{'streng | P281 | feltnavn=postnummer | q=Q649 '}, -- brug ikke
		{'streng | P281 | wikidata=ja | feltnavn=postnummer | q=Q649 '}, -- brug
		{'streng | P281 | wikidata=tidszone,postnummer,land | feltnavn=postnummer | q=Q649 '}, -- brug
		{'streng | P281 | wikidata=ja | ingen_wikidata=postnummer, tidszone | feltnavn=postnummer | q=Q649 '}, -- brug ikke
		{'streng | P1059 | q=Q1616154 '}, -- (CVR)
		{'streng | P1059 | format=[https://datacvr.virk.dk/data/visenhed?enhedstype=virksomhed&id=$1 $1] | q=Q1616154 '}, -- format 
		{'streng | P18 | kvalifikator1=P2096 | kvalifikatorformat1=[[Fil:$1|thumb|$2]] | kvalifikatorformatuden1=[[Fil:$1|thumb]] ' ..
			'| q=Q7085 '}, -- billede med billedtekst
	})
end

function p:test_tekst()
	self:preprocess_equals_preprocess_many('{{' .. testskabelonPrefix, '}}', '{{' .. produktionsskabelonPrefix, '}}', {
		{'tekst | P1684 | sprog=alle | q=Q82194 '},
		{'tekst | P1684 | Brug denne tekst i stedet for Wikidata | sprog=alle | q=Q82194 '}, -- 2. unavngivne
		{'tekst | P1684 | feltnavn=tekst | sprog=alle | q=Q82194 '}, -- brug ikke
		{'tekst | P1684 | wikidata=ja | feltnavn=tekst | sprog=alle | q=Q82194 '}, -- brug
		{'tekst | P1684 | wikidata=farve,tekst,designer | feltnavn=tekst | sprog=alle | q=Q82194 '}, -- brug
		{'tekst | P1684 | wikidata=ja | ingen_wikidata=afbilder, tekst | feltnavn=tekst | sprog=alle | q=Q82194 '}, -- brug ikke
		{'tekst | P1448 | q=Q239 '}, -- tom (ikke på dansk)
		{'tekst | P1448 | sprog=nl | q=Q239 '}, -- et sprog
		{'tekst | P1448 | sprog=alle | skrivsprog=ja | q=Q239 '}, -- alle sprog, skrivsprog
		{'tekst | P1549 | q=Q35 '},
		{'tekst | P1549 | adskil=<br /> | q=Q35 '}, -- adskil, kun en værdi
		{'tekst | P1549 | liste=ja | q=Q35 '}, -- liste, kun en værdi
		{'tekst | P1549 | sprog=de | kvalifikator1=P518 | kvalifikatorformat1=$1 (gælder for $2) | q=Q183 '}, -- kval.
	})
end

function p:test_matematik()
	self:preprocess_equals_preprocess_many('{{' .. testskabelonPrefix, '}}', '{{' .. produktionsskabelonPrefix, '}}', {
		{'matematik | P2534 | q  =  Q35875 '},
	})
end

function p:test_koord()
	self:preprocess_equals_preprocess_many('{{' .. testskabelonPrefix, '}}', '{{' .. produktionsskabelonPrefix, '}}', {
		{'koord | P625 | q = Q21179 '}, -- Sønderborg
		{'koord | P625 | q = Q21179 | koordlink = nej'}, -- Sønderborg
		{'koord | P625 | q = Q21179 | format=dms'}, -- Sønderborg
		{'koord | P625 | q = Q21179 | format=dms | koordlink = nej'}, -- Sønderborg
		{'koord | P625 | q = Q21179 | format=dec'}, -- Sønderborg
		{'koord | P625 | q = Q21179 | format=dec | koordlink = nej'}, -- Sønderborg
		{'koord | P625 | q = Q21179 | dim=10km | type=city'}, -- Sønderborg
		{'koord | P625 | q = Q21179 | scale=10000 | name=Sønderborg'}, -- Sønderborg
		{'koord | P625 | q = Q408 | name=Australien | region = AU'},
		{'koord | P625 | q = Q408 | name=Australien | region = AU | koordlink=nej'},
		{'koord | P625 | q = Q408 | name=Australien | region = AU | format=dms'},
		{'koord | P625 | q = Q408 | name=Australien | region = AU | format=dms | koordlink=nej'},
		{'koord | P625 | q = Q128108 | name=Månekrateret Aristoteles'},
		{'koord | P625 | q = Q128108 | name=Månekrateret Aristoteles | koordlink=nej'},
		{'koord | P625 | q = Q128108 | name=Månekrateret Aristoteles | format=dms'},
		{'koord | P625 | q = Q128108 | name=Månekrateret Aristoteles | format=dms | koordlink=nej'},
	})
end

function p:test_kvalikatortyper()
	self:preprocess_equals_preprocess_many('{{' .. testskabelonPrefix, '}}', '{{' .. produktionsskabelonPrefix, '}}', {
		{'emne | P1855 | q = P14 | kvalifikator1 = P14 '}, -- vejskilt, type Commonsmedia fil
		{'emne | P1855 | q = P1549 | kvalifikator1 = P1549 '}, -- demonym, type monolingual tekst
		{'emne | P1855 | q = P1549 | kvalifikator1 = P1549 | sprog=alle'}, -- demonym, type monolingual tekst
		{'emne | P1855 | q = P1549 | kvalifikator1 = P1549 | sprog=alle | skrivsprog=ja'}, -- demonym, type monolingual tekst
		{'emne | P1855 | q = P1549 | kvalifikator1 = P1549 | skrivsprog=ja'}, -- demonym, type monolingual tekst
		{'emne | P1855 | q = P1086 | kvalifikator1 = P1086 '}, -- atomnummer, type mængde (tal)
		{'emne | P1855 | q = P225 | kvalifikator1 = P225 '}, -- videnskabeligt navn (), type streng
		{'emne | P1855 | q = P1317 | kvalifikator1 = P1317 '}, -- floruit (), type tidspunkt 
		{'emne | P1855 | q = P968 | kvalifikator1 = P968 '}, --  e-mail, type URL 
		{'emne | P1855 | q = P536 | kvalifikator1 = P536 '}, -- ATP spiller-ID, type external identifier
		{'emne | P1855 | q = P37 | kvalifikator1 = P37 '}, -- officielt sprog (P37), type emne 
		{'emne | P1855 | q = P4020 | kvalifikator1 = P4020 '}, -- dimension, type matematisk udtryk
		{'emne | P1855 | q = P1259 | kvalifikator1 = P1259 '}, -- øjepunktskoordinater, type kuglekoordinater
		-- Typer der mangler: Geographic shape, Tabular data, Egenskab, Lexeme, Form
	})
end

return p