Modul:Brug Wikidata/testcases

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.

-- NB: Der er flere testcases på:
--		Modul:Brug Wikidata/testcases/tid (for tidsværdier)

-- 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 produktionsskabelonPrefix = 'Wikidata-'

local tal_testskabelon = 'Wikidata-tal/sandkasse'
local tal_produktionsskabelon = 'Wikidata-tal'

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
		{'emne | P1283 | q=Q882 | kunlink=nej'}, -- Charlie Chaplins filmografi
		{'emne | P1283 | q=Q882 | kunlink=ja'}, -- Charlie Chaplins filmografi
	})
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('{{' .. tal_testskabelon, '}}', '{{' .. tal_produktionsskabelon, '}}', {
		{'|  P2046 | q=Q183'}, -- 
		{'| P2046 | decimaler=5 | q=Q183'}, -- decimaler
		{'| P2046 | decimaler=5 | visusikkerhed=nej | q=Q183'}, -- ingen usikkehed 
		{'| P2046 | enhed=m2 | q=Q183'}, -- enhed 
		{'| P2046 | enhed=m2 | visenhed=nej | q=Q183'}, -- visenhed 
		{'| P2139 | q=Q818846'}, -- valuta 
		{'| P2139 | decimaler=2 | q=Q818846'}, -- decimale 
		{'| P2139 | decimaler=2 | visusikkerhed=nej | q=Q818846'}, -- ingen usikkerhed 
		{'| P1082 | tid=ja | q=Q649'}, -- med tid
		{'| P1082 | tid=ja | kunår=ja | q=Q649'}, -- med år
		{'| 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
		{'| P1082 | kvalifikator1=P585 | kvalifikatorformat1=$1 indbyggere pr. $2 | q=Q183'}, -- kvalifier tid
		{'| P3086 | kvalifikator1=P794 | ingen=ingen | q=Q183'}, -- kvalifier som ikke vises, novalue 
		{'| P3086 | kvalifikator1=P794 | ingen=ingen | maks=2 | q=Q183'}, -- maks, kvalifier som ikke vises, novalue 
		{'| P2067 | q=Q7887991 | kvalifikator1=P642 '},
		{'| P2067 | q=Q7887991 | kvalifikator1=P642 | kvalifikatorbrug1=MTOW | kvalifikatorformat1=$1 '}, -- k-brug=label
		{'| P2067 | q=Q7887991 | kvalifikator1=P642 | kvalifikatorbrug1=Q938476 | kvalifikatorformat1=$1 '}, --k-brug=QID
		{'| P1352 | q=Q57557| kvalifikator1=P641 | kvalifikatorbrug1=singletennis | kvalifikatorformat1=$1 | tid=ja '}, --label, tid
		 -- Referencer
		{'| P1082 | q=Q5168 | ref = ja '},
		{'| P1082 | q=Q5168 | ref = nej '},
		{'| P1082 | q=Q898 | ref = ja '},
		{'| P1082 | q=Q898 | ref = nej '},
		{'| P1082 | q=Q2684 | ref = ja '},
		{'| P1082 | q=Q2684 | ref = nej '},
		-- Enhedskonvertering
		{'| P2101 | q=Q283 '}, -- Vands smeltepunkt, enhed er C på Wikidata
		{'| P2101 | q=Q283 | enhed=C '},
		{'| P2101 | q=Q283 | enhed=K '},
		{'| P2102 | q=Q283 '},  -- Vands kogepunkt, enhed er C på Wikidata
		{'| P2102 | q=Q283 | enhed=C '},
		{'| P2102 | q=Q283 | enhed=K '},
		{'| P2101 | q=Q204714 | decimaler=orig '}, -- Zinkklorids smeltepunkt, enhed er F på Wikidata
		{'| P2101 | q=Q204714 | enhed=C | decimaler=orig | visusikkerhed=nej '},
		{'| P2101 | q=Q204714 | enhed=K | decimaler=orig  '},
		{'| P2102 | q=Q204714 '},  -- Zinkklorids kogepunkt, enhed er F på Wikidata
		{'| P2102 | q=Q204714 | enhed=C | decimaler=orig '},
		{'| P2102 | q=Q204714 | enhed=K | decimaler=orig | visusikkerhed=nej '},
		{'| P2102 | q=Q204714 '},  -- Zinkklorids massefylde, enhed er gram per kubikcentimeter
		{'| P2102 | q=Q204714 | decimaler=2 '},
		{'| P2054 | q=Q204714 | decimaler=orig '},
		{'| P2054 | q=Q204714 | decimaler=orig | visusikkerhed=nej '},
		{'| P2054 | q=Q204714 | decimaler=2 | visusikkerhed=nej '},
		{'| P2054 | q=Q560 | decimaler=orig '}, -- Heliums smeltepunkt, enhed er K, C og F på Wikidata
		{'| P2101 | q=Q560 | enhed=C | decimaler=orig '},
		{'| P2101 | q=Q560 | enhed=K | decimaler=orig '},
		-- 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