-- Unit tests per [[Modulo:Wikidata]]. Cliccare sulla pagina di discussione per eseguire i test.
local p = require("Module:UnitTests")
function p:test_getProperty()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q503361|", "}}", {
-- property
{ "P94", "Malmö fulla vapen.svg" },
-- property non esistente => ""
{ "P1", "" },
-- value
{ "P94|test", "test" },
-- wd=no
{ "P94|test|wd=no", "test" },
{ "P94|wd=no", "" },
-- statement multipli
{ "P47", "[[Burlöv|comune di Burlöv]], [[Staffanstorp (comune)|comune di Staffanstorp]], [[Svedala (comune)|Svedala]], [[Vellinge (comune)|Vellinge]], Copenaghen, [[Tårnby]], [[Dragør]], [[Solrød]], [[Greve (Danimarca)|Greve]] e [[Kävlinge (comune)|Kävlinge]]" },
-- n
{ "P47|n=1", "[[Burlöv|comune di Burlöv]]" },
{ "P47|n=2", "[[Staffanstorp (comune)|comune di Staffanstorp]]" },
{ "P47|n=3", "[[Svedala (comune)|Svedala]]" },
-- rank
{ "P131|rank=preferred", "[[contea della Scania]] e [[Scania (provincia)|Scania]]" },
-- rank best, ritorna il preferred
{ "P131|rank=best", "[[contea della Scania]] e [[Scania (provincia)|Scania]]" },
-- rank best, in mancanza di preferred ritorna normal
{ "P94|rank=best", "Malmö fulla vapen.svg" },
-- rank + n
{ "P131|rank=preferred|n=1", "[[contea della Scania]]" },
{ "P131|rank=preferred|n=3", "" },
-- rank non esistente + n => stringa vuota
{ "P47|rank=preferred|n=1", "" },
-- qualifier
{ "P131|qualifier=P580", "[[contea della Scania]]" },
-- qualifier + qualifiervalue
{ "P131|qualifier=P580|qualifiervalue=1º gennaio 2007", "[[contea della Scania]]" },
-- qualifier + qualifiertype
{ "P131|qualifier=P580|qualifiertype=latest", "[[contea della Scania]]" },
-- noqualifier
{ "P131|noqualifier=P580", "[[Scania (provincia)|Scania]]" },
{ "P190|noqualifier=P580", "[[Kaliningrad]]" },
-- qualifieroptnovalue
{ "P131|qualifieroptnovalue=P582|qualifiervalue=31 dicembre 2006|rank=normal", "" },
-- datavalue.type = wikibase-entityid (con label e sitelink mancanti in italiano => label en)
{ "P361", "Malmö metropolitan area" },
-- datavalue.type = wikibase-entityid (con label ma sitelink mancante in italiano => stringa)
{ "P47|n=5", "Copenaghen" },
-- datavalue.type = wikibase-entityid (con sitelink ma label mancante in italiano => [[sitelink]])
-- todo
-- datavalue.type = wikibase-entityid (con label e sitelink in italiano => [[sitelink|label]])
{ "P31", "[[Comuni della Svezia|comune svedese]]" },
-- datavalue.type = string
{ "P1566", "2692965" },
-- datavalue.type = globecoordinate
{ "P625", "55.583333333333, 13.033333333333" },
-- datavalue.type = monolingualtext
{ "P1813", "Malmö" },
-- separator
{ "P47|separator=/", "[[Burlöv|comune di Burlöv]]/[[Staffanstorp (comune)|comune di Staffanstorp]]/[[Svedala (comune)|Svedala]]/[[Vellinge (comune)|Vellinge]]/Copenaghen/[[Tårnby]]/[[Dragør]]/[[Solrød]]/[[Greve (Danimarca)|Greve]] e [[Kävlinge (comune)|Kävlinge]]" },
-- conjunction
{ "P47|conjunction=+", "[[Burlöv|comune di Burlöv]], [[Staffanstorp (comune)|comune di Staffanstorp]], [[Svedala (comune)|Svedala]], [[Vellinge (comune)|Vellinge]], Copenaghen, [[Tårnby]], [[Dragør]], [[Solrød]], [[Greve (Danimarca)|Greve]]+[[Kävlinge (comune)|Kävlinge]]" },
-- separator e conjunction
{ "P47|separator=/|conjunction=+", "[[Burlöv|comune di Burlöv]]/[[Staffanstorp (comune)|comune di Staffanstorp]]/[[Svedala (comune)|Svedala]]/[[Vellinge (comune)|Vellinge]]/Copenaghen/[[Tårnby]]/[[Dragør]]/[[Solrød]]/[[Greve (Danimarca)|Greve]]+[[Kävlinge (comune)|Kävlinge]]" },
-- list
{ "P94|list=1", "Malmö fulla vapen.svg" },
{ "P47|list=1", "<ul><li>[[Burlöv|comune di Burlöv]]</li><li>[[Staffanstorp (comune)|comune di Staffanstorp]]</li><li>[[Svedala (comune)|Svedala]]</li><li>[[Vellinge (comune)|Vellinge]]</li><li>Copenaghen</li><li>[[Tårnby]]</li><li>[[Dragør]]</li><li>[[Solrød]]</li><li>[[Greve (Danimarca)|Greve]]</li><li>[[Kävlinge (comune)|Kävlinge]]</li></ul>" },
{ "P94|list=1|rank=deprecated", "" },
-- orderedlist
{ "P94|orderedlist=1", "Malmö fulla vapen.svg" },
{ "P47|orderedlist=1", "<ol><li>[[Burlöv|comune di Burlöv]]</li><li>[[Staffanstorp (comune)|comune di Staffanstorp]]</li><li>[[Svedala (comune)|Svedala]]</li><li>[[Vellinge (comune)|Vellinge]]</li><li>Copenaghen</li><li>[[Tårnby]]</li><li>[[Dragør]]</li><li>[[Solrød]]</li><li>[[Greve (Danimarca)|Greve]]</li><li>[[Kävlinge (comune)|Kävlinge]]</li></ol>" },
{ "P94|orderedlist=1|rank=deprecated", "" },
-- coord=latitude
{ "P625|coord=latitude", "55.583333333333" },
-- coord=longitude
{ "P625|coord=longitude", "13.033333333333" },
-- coord=globe
{ "P625|coord=globe", "http://www.wikidata.org/entity/Q2" },
-- formatting=raw con type wikibase-entityid
{ "P36|formatting=raw", "Q2211" },
-- showprop
{ "P17|showprop=P298", "SWE" }
})
end
function p:test_pattern()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q503361|", "}}", {
-- pattern
{ "P94|pattern=$1: il nome del file è $1", "Malmö fulla vapen.svg: il nome del file è Malmö fulla vapen.svg" },
-- pattern + value
{ "P94|Test.png|pattern=$1: il nome del file è $1", "Test.png: il nome del file è Test.png" },
-- pattern con utilizzo di %
{ "P94|simbolo %20|pattern=test: $1", "test: simbolo %20" },
-- pattern con più statement
{ "P47|pattern=($1)", "([[Burlöv|comune di Burlöv]]), ([[Staffanstorp (comune)|comune di Staffanstorp]]), ([[Svedala (comune)|Svedala]]), ([[Vellinge (comune)|Vellinge]]), (Copenaghen), ([[Tårnby]]), ([[Dragør]]), ([[Solrød]]), ([[Greve (Danimarca)|Greve]]) e ([[Kävlinge (comune)|Kävlinge]])" },
-- se pattern non restituisce nulla per un determinato elemento, esso è rimosso dai risultati
{ "P47|pattern=\\{\\{#switch:$1{{!}}[[Burlöv{{!}}comune di Burlöv]]={{!}}#default=($1)\\}\\} ", "([[Staffanstorp (comune)|comune di Staffanstorp]]), ([[Svedala (comune)|Svedala]]), ([[Vellinge (comune)|Vellinge]]), (Copenaghen), ([[Tårnby]]), ([[Dragør]]), ([[Solrød]]), ([[Greve (Danimarca)|Greve]]) e ([[Kävlinge (comune)|Kävlinge]])" },
})
end
function p:test_language()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q30|", "}}", {
{ "P1813|includelang=en", "USA, America e United States" },
{ "P1813|includelang=en,pt", "USA, EUA, America e United States" },
{ "P1451|excludelang=ca|rank=normal", "E Pluribus Unum" }
})
end
function p:test_time()
self:preprocess_equals_many("{{Wikidata/Sandbox|", "}}", {
{ "from=Q38|P571", "2 giugno 1946" },
{ "from=Q38|P571|time=year", "1946" },
{ "from=Q38|P571|time=month", "giugno 1946" },
{ "from=Q38|P571|time=day", "2 giugno 1946" },
{ "from=Q38|P571|time=precision", "11" },
{ "from=Q38|P571|time=calendarmodel", "http://www.wikidata.org/entity/Q1985727" },
{ "from=Q38|P571|formatting=raw", "+1946-06-02T00:00:00Z" },
{ "from=Q1407|P569", "16 novembre 42 a.C." },
{ "from=Q1407|P569|time=year", "42 a.C." },
{ "from=Q1407|P569|time=month", "novembre 42 a.C." },
{ "from=Q1407|P569|time=day", "16 novembre 42 a.C." },
{ "from=Q1407|P569|formatting=raw", "-0042-11-16T00:00:00Z" },
{ "from=Q1407|P570", "16 marzo 37" },
{ "from=Q1407|P570|time=year", "37" },
{ "from=Q1407|P570|time=month", "marzo 37" },
{ "from=Q1407|P570|time=day", "16 marzo 37" },
{ "from=Q1407|P570|formatting=raw", "+0037-03-16T00:00:00Z" }
})
end
function p:test_qualifiervalue()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q38|", "}}", {
-- qualifier + qualifiervalue (item)
{ "P47|qualifier=P805|qualifiervalue=Q1991288", "[[Francia]]" }
})
end
function p:test_showqualifiers()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q38|", "}}", {
{ "P38|showqualifiers=P580|rank=normal", "[[lira italiana]] (2 giugno 1946)" },
-- qualifier multipli
{ "P38|showqualifiers=P580,P582|rank=normal", "[[lira italiana]] (2 giugno 1946, 28 febbraio 2002)" },
-- qualifier non esistenti
{ "P38|showqualifiers=P580x,P582x|rank=normal", "[[lira italiana]]" }
})
end
function p:test_getQualifier()
self:preprocess_equals_many("{{WikidataQ/Sandbox|from=Q503361|", "}}", {
-- qualifier non esistente => ""
{ "P131|P1", "" },
-- value
{ "P131|P582|test", "test" },
-- wd=no
{ "P131|P582|test|wd=no", "test" },
{ "P131|P582|wd=no", "" },
-- datavalue.type=time
{ "P131|P580", "1º gennaio 2007" },
{ "P131|P582|rank=normal", "31 dicembre 2006" },
-- datavalue.type=time e formatting=raw
{ "P131|P580|formatting=raw", "+2007-01-01T00:00:00Z" },
-- datavalue.type=time e time=precision
{ "P131|P580|time=precision", "11" },
-- datavalue.type=time e time=calendarmodel
{ "P131|P580|time=calendarmodel", "http://www.wikidata.org/entity/Q1985727" },
-- pattern
{ "P131|P582|rank=normal|pattern=($1)", "(31 dicembre 2006)" }
})
end
function p:test_qualifier_nq()
self:preprocess_equals_many("{{WikidataQ/Sandbox|from=Q68060|", "}}", {
{ "P856|P407", "[[Lingua italiana|italiano]] e [[Lingua inglese|inglese]]" },
{ "P856|P407|nq=1", "[[Lingua italiana|italiano]]" },
{ "P856|P407|nq=2", "[[Lingua inglese|inglese]]" },
{ "P856|P407|nq=3", "" }
})
end
function p:test_indexOf()
self:preprocess_equals_many("{{WikidataIdx/Sandbox|from=Q503361|", "}}", {
{ "P47|Q186662", "1" },
{ "P47|Q504609", "2" },
{ "P47|Q515706", "3" },
-- valore non esistente
{ "P47|test", "" },
-- proprietà non esistente
{ "P1|Q186662", "" },
})
end
function p:test_N()
self:preprocess_equals_many("{{WikidataN/Sandbox|from=Q503361|", "}}", {
{ "P1", "0" },
{ "P94", "1" },
{ "P131", "2" },
{ "P47", "10" },
-- selezione per rank e qualifier
{ "P131|rank=normal", "1" },
{ "P190|qualifier=P580|qualifiervalue=1990", "1" }
})
end
function p:test_getLabel()
self:preprocess_equals_many("{{WikidataLabel/Sandbox|", "}}", {
-- property
{ "P17", "Paese" },
{ "P17|en", "country" },
-- item
{ "Q503361", "Malmö" },
{ "Q503361|en", "Malmö Municipality" }
})
end
function p:test_getLink()
self:preprocess_equals_many("{{WikidataLink/Sandbox|", "}}", {
-- sitelink e label => [[sitelink|label]]
{ "Q503361", "[[Malmö (comune)|Malmö]]" },
-- sitelink = label => [[label]]
{ "Q1067", "[[Dante Alighieri]]" },
-- sitelink = label (iniziale minuscola) => [[label]]
{ "Q5369", "[[baseball]]" },
-- solo sitelink => [[sitelink]]
-- { "", "" },
-- solo label => label
{ "Q504125", "Copenaghen" },
-- senza label e sitelink => label en
{ "Q1573432", "HeroCraft" }
})
end
function p:test_getDatatype()
self:preprocess_equals_many("{{WikidataTipo/Sandbox|", "}}", {
{ "P10", "file multimediale su Commons" },
{ "P214", "identificativo esterno" },
{ "P3896", "forma geografica" },
{ "P625", "coordinate geografiche" },
{ "P2534", "espressione matematica" },
{ "P1448", "testo monolingua" },
{ "P1082", "quantità" },
{ "P229", "stringa" },
{ "P4179", "tabular data" },
{ "P569", "data e ora" },
{ "P856", "URL" },
{ "P17", "elemento" },
{ "P1659", "proprietà" }
})
end
function p:test_getId()
self:preprocess_equals_many("{{WikidataId/Sandbox|", "}}", {
{ "Italia", "Q38" },
-- test redirect non collegato a un elemento Wikidata
{ "Repubblica Italiana", "Q38" },
-- test redirect collegato a un elemento
{ "Millimetro", "Q174789" }
})
end
function p:test_instanceOf()
self:preprocess_equals_many("{{WikidataIstanza/Sandbox|from=Q503361|", "}}", {
{ "Q127448", "1" },
{ "Q747074", "" }
})
end
function p:test_extlink()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q8038|extlink=1|", "}}", {
{ "P856", "<div style=\"word-break: break-all;\">[https://www.gimp.org www.gimp.org]</div>" },
{ "P856|http://www.mediawiki.org", "<div style=\"word-break: break-all;\">[http://www.mediawiki.org www.mediawiki.org]</div>" },
{ "P856|test", "test" },
{ "P856|[http://www.mediawiki.org test]", "[http://www.mediawiki.org test]" }
})
end
function p:test_convert()
self:preprocess_equals_many("{{Wikidata/Sandbox|", "}}", {
-- lunghezza
{ "from=Q12418|P2049|unit=millimetro", "530" },
{ "from=Q12418|P2049|unit=centimetro", "53" },
{ "from=Q12418|P2049|unit=piede", "1.738845144357" },
{ "from=Q12418|P2049|unit=iarda", "0.57961504811899" },
{ "from=Q12418|P2049|unit=metro", "0.53" },
{ "from=Q12418|P2049|unit=chilometro", "0.00053" },
{ "from=Q12418|P2049|unit=miglio", "0.00032932673188579" },
{ "from=Q12418|P2049|unit=miglio nautico", "0.00028617710583153" },
-- area
{ "from=Q643|P2053|unit=metro quadrato", "74000000000" },
{ "from=Q643|P2053|unit=chilometro quadrato", "74000" },
{ "from=Q643|P2053|unit=miglio quadro", "28571.559732141" },
-- solo showunit (simbolo unità ottenuto da Wikidata)
{ "from=Q12418|P2049|showunit=1", "53 cm" },
-- solo showunit e gradi d'arco (non utilizza lo spazio)
{ "from=Q2|P2248|showunit=1", "114.20783°" },
-- unit + showunit (simbolo unità ottenuto dal modulo Conversione)
{ "from=Q12418|P2049|unit=centimetro|showunit=1", "53 cm" },
-- showunitlink
{ "from=Q12418|P2049|showunit=1|showunitlink=1", "53 [[Centimetro|cm]]" },
{ "from=Q12418|P2049|unit=centimetro|showunit=1|showunitlink=1", "53 [[metro|cm]]" },
-- formatduration
{ "from=Q111|P2147|formatduration=1", "1 giorno, 37 minuti e 22 secondi" },
})
end
function p:test_formatnum()
self:preprocess_equals_many("{{Wikidata/Sandbox|formatnum=1|", "}}", {
-- dal modulo stesso
{ "from=Q643|P2053", "74\194\160000" },
{ "from=Q5830|P2050", "79,8" },
-- dal modulo stesso con simbolo unità di misura
{ "from=Q5830|P2050|showunit=1", "79,8 m" },
-- tramite il modulo:Conversione
{ "from=Q5830|P2050|unit=cm", "7\194\160980" },
{ "from=Q5830|P2050|unit=km", "0,0798" },
})
end
function p:test_rounding()
self:preprocess_equals_many("{{Wikidata/Sandbox|formatnum=1|", "}}", {
-- dal modulo stesso
{ "from=Q3710|P2370|rounding=0", "0" },
{ "from=Q3710|P2370|rounding=1", "0,3" },
{ "from=Q3710|P2370|rounding=2", "0,3" },
{ "from=Q3710|P2370|rounding=3", "0,305" },
{ "from=Q3710|P2370|rounding=4", "0,3048" },
-- dal modulo stesso con simbolo unità di misura
{ "from=Q3710|P2370|rounding=0|showunit=1", "0 m" },
{ "from=Q3710|P2370|rounding=1|showunit=1", "0,3 m" },
{ "from=Q3710|P2370|rounding=2|showunit=1", "0,3 m" },
{ "from=Q3710|P2370|rounding=3|showunit=1", "0,305 m" },
{ "from=Q3710|P2370|rounding=4|showunit=1", "0,3048 m" },
-- tramite il modulo:Conversione
{ "from=Q3710|P2370|rounding=0|unit=cm", "30" },
{ "from=Q3710|P2370|rounding=1|unit=cm", "30,5" },
{ "from=Q3710|P2370|rounding=2|unit=cm", "30,48" }
})
end
function p:test_getProperty_nil()
local mWikidata = require('Modulo:Wikidata/sandbox')
-- _getProperty restituisce nil:
-- se non è collegata a un elemento Wikidata
self:preprocess_equals(tostring(mWikidata._getProperty({ 'P94' })), 'nil')
-- se i risultati sono 0 perché l'elemento non esiste
self:preprocess_equals(tostring(mWikidata._getProperty({ 'P94', from = 'Q6' })), 'nil')
-- se i risultati sono 0 perché la proprietà non esiste in quell'elemento
self:preprocess_equals(tostring(mWikidata._getProperty({ 'P1447', from = 'Q503361' })), 'nil')
-- se i risultati sono 0 perché non ci sono valori della proprietà che soddisfano i criteri
self:preprocess_equals(tostring(mWikidata._getProperty({ 'P18', from = 'Q503361', n = 2 })), 'nil')
end
function p:test_getClaims_nil_or_empty()
local mWikidata = require('Modulo:Wikidata/sandbox')
-- _getClaims restituisce nil se non è collegata un elemento Wikidata
self:preprocess_equals(tostring(mWikidata._getClaims('P94')), 'nil')
-- _getClaims restituisce una sequence Lua vuota se:
-- l'elemento Wikidata specificato non esiste
self:preprocess_equals(tostring(#mWikidata._getClaims('P94', { from = 'Q6' })), '0')
-- l'elemento Wikidata non ha la proprietà specificata
self:preprocess_equals(tostring(#mWikidata._getClaims('P1447', { from = 'Q503361' })), '0')
-- non ci sono valori della proprietà specificata che soddisfano i criteri
self:preprocess_equals(tostring(#mWikidata._getClaims('P18', { from = 'Q503361', n = 2 })), '0')
end
function p:test_snaktype()
self:preprocess_equals_many("{{Wikidata/Sandbox|", "}}", {
-- test snaktype novalue
{ "from=Q7207|P40", "''nessun valore''" },
-- test snaktype somevalue
{ "from=Q24039104|P569", "''valore sconosciuto''" },
-- test parametro snaktype
{ "from=Q7207|P40|snaktype=novalue", "''nessun valore''" },
{ "from=Q7207|P40|snaktype=value", "" },
{ "from=Q7207|P31|snaktype=value", "umano" },
{ "from=Q24039104|P569|snaktype=somevalue", "''valore sconosciuto''" },
{ "from=Q24039104|P569|snaktype=value", "" },
{ "from=Q24039104|P31|snaktype=value", "umano" }
})
end
return p