-- Unit tests per [[Modulo:Wikidata]]. Cliccare sulla pagina di discussione per eseguire i test.
local p = require("Module:UnitTests")
function p:test_wikidata_getProperty()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q503361|", "}}", {
-- property
{ "P94", "Malmö fulla vapen.svg" },
-- property non esistente => ""
{ "P1", "" },
-- value
{ "P94|test", "test" },
-- statement multipli
{ "P47", "[[Burlöv]], [[Staffanstorp (comune)|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]]" },
{ "P47|n=2", "[[Staffanstorp (comune)|Staffanstorp]]" },
{ "P47|n=3", "[[Svedala (comune)|Svedala]]" },
-- rank
{ "P131|rank=preferred", "[[Contea della Scania]]" },
-- rank best, ritorna il preferred
{ "P131|rank=best", "[[Contea della 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=2", "" },
-- 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=P582", "[[Contea della 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]]/[[Staffanstorp (comune)|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]], [[Staffanstorp (comune)|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]]/[[Staffanstorp (comune)|Staffanstorp]]/[[Svedala (comune)|Svedala]]/[[Vellinge (comune)|Vellinge]]/Copenaghen/[[Tårnby]]/[[Dragør]]/[[Solrød]]/[[Greve (Danimarca)|Greve]]+[[Kävlinge (comune)|Kävlinge]]" },
-- 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]]), ([[Staffanstorp (comune)|Staffanstorp]]), ([[Svedala (comune)|Svedala]]), ([[Vellinge (comune)|Vellinge]]), (Copenaghen), ([[Tårnby]]), ([[Dragør]]), ([[Solrød]]), ([[Greve (Danimarca)|Greve]]) e ([[Kävlinge (comune)|Kävlinge]])" },
-- list
{ "P94|list=1", "<ul><li>Malmö fulla vapen.svg</li></ul>" },
{ "P47|list=1", "<ul><li>[[Burlöv]]</li><li>[[Staffanstorp (comune)|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", "<ol><li>Malmö fulla vapen.svg</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_wikidata_language()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q30|", "}}", {
{ "P1813|includelang=en", "USA" },
{ "P1813|includelang=en,pt", "USA e EUA" },
{ "P1813|excludelang=en,sr,ro,ru,ka", "EUA e USA" }
})
end
function p:test_wikidata_time()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q38|", "}}", {
{ "P571", "2 giugno 1946" },
{ "P571|time=year", "1946" },
{ "P571|time=month", "giugno" },
{ "P571|time=day", "2" },
{ "P571|time=precision", "11" },
{ "P571|time=calendarmodel", "http://www.wikidata.org/entity/Q1985727" },
{ "P571|formatting=raw", "+1946-06-02T00:00:00Z" }
})
end
function p:test_wikidata_qualifiervalue()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q38|", "}}", {
-- qualifier + qualifiervalue (item)
{ "P47|qualifier=P805|qualifiervalue=Q1991288", "[[Francia]]" }
})
end
function p:test_wikidata_showqualifiers()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q38|", "}}", {
{ "P38|showqualifiers=P580|rank=normal", "[[Lira italiana|lira italiana]] (2 giugno 1946)" },
-- qualifier multipli
{ "P38|showqualifiers=P580,P582|rank=normal", "[[Lira italiana|lira italiana]] (2 giugno 1946, 28 febbraio 2002)" },
-- qualifier non esistenti
{ "P38|showqualifiers=P580x,P582x|rank=normal", "[[Lira italiana|lira italiana]]" }
})
end
function p:test_wikidata_getQualifier()
self:preprocess_equals_many("{{WikidataQ/Sandbox|from=Q503361|", "}}", {
-- qualifier non esistente => ""
{ "P131|P1", "" },
-- value
{ "P131|P582|test", "test" },
-- 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_wikidata_indexOf()
self:preprocess_equals_many("{{WikidataIdx/Sandbox|from=Q503361|", "}}", {
{ "P47|Q186662", "1" },
{ "P47|Q504609", "2" },
{ "P47|Q515706", "3" },
-- valore non esistente
{ "P47|test", "-1" },
-- proprietà non esistente
{ "P1|Q186662", "-1" },
})
end
function p:test_wikidata_N()
self:preprocess_equals_many("{{WikidataN/Sandbox|from=Q503361|", "}}", {
{ "P1", "0" },
{ "P94", "1" },
{ "P131", "1" },
{ "P47", "10" },
-- selezione per rank e qualifier
{ "P131|rank=normal", "1" },
{ "P190|qualifier=P580|qualifiervalue=1990", "1" }
})
end
function p:test_wikidata_getLabel()
self:preprocess_equals_many("{{WikidataLabel/Sandbox|", "}}", {
-- property
{ "P17", "paese" },
-- item
{ "Q503361", "Malmö" }
})
end
function p:test_wikidata_getLink()
self:preprocess_equals_many("{{WikidataLink/Sandbox|", "}}", {
-- sitelink e label => [[sitelink|label]]
{ "Q503361", "[[Malmö (comune)|Malmö]]" },
-- solo sitelink => [[sitelink]]
-- { "", "" },
-- solo label => label
{ "Q504125", "Copenaghen" },
-- senza label e sitelink => label en
{ "Q20031746", "Ketchapp" }
})
end
function p:test_wikidata_getDatatype()
self:preprocess_equals_many("{{WikidataTipo/Sandbox|", "}}", {
{ "P10", "file multimediale su Commons" },
{ "P625", "coordinate geografiche" },
{ "P1448", "testo monolingua" },
{ "P1082", "quantità" },
{ "P229", "stringa" },
{ "P569", "data e ora" },
{ "P856", "URL" },
{ "P214", "identificatore esterno" },
{ "P17", "elemento" },
{ "P1646", "proprietà" },
{ "P2534", "espressione matematica" }
})
end
function p:test_wikidata_instanceOf()
self:preprocess_equals_many("{{WikidataIstanza/Sandbox|from=Q503361|", "}}", {
{ "Q127448", "1" },
{ "Q747074", "" }
})
end
function p:test_wikidata_extlink()
self:preprocess_equals_many("{{Wikidata/Sandbox|from=Q8038|extlink=1|", "}}", {
{ "P856", "[https://www.gimp.org www.gimp.org]" },
{ "P856|http://www.mediawiki.org", "[http://www.mediawiki.org www.mediawiki.org]" },
{ "P856|test", "test" },
{ "P856|[http://www.mediawiki.org test]", "[http://www.mediawiki.org test]" }
})
end
function p:test_wikidata_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_wikidata_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_wikidata_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
return p