local myModule = require 'Modul:Wikidata/Sorters/alpha'
local builder = require 'Modul:Wikidata/build'
local ScribuntoUnit = require 'Modul:ScribuntoUnit'
local suite = ScribuntoUnit:new()
function suite:testMayCompare()
local provider = {
{
datatype = 'monolingualtext',
expected = true,
value = 'xxx'
},
{
datatype = 'string',
expected = true,
value = 'xxx'
},
{
datatype = 'quantity',
expected = false,
value = 1
},
{
datatype = 'wikibase-item',
expected = true,
value = 1
},
}
for _, data in ipairs(provider) do
local statement = builder.buildStatement{
datatype = data.datatype,
value = data.value
}
local snak = builder.buildSnak{
datatype = data.datatype,
value = data.value
}
self:assertEquals(data.expected, myModule.mayCompareStatement(statement))
self:assertEquals(data.expected, myModule.mayCompareSnak(snak))
end
end
function suite:testIsComplete()
local provider = {
{
args = { snaktype = 'novalue' },
expected = false
},
{
args = { snaktype = 'somevalue' },
expected = false
},
{
args = { datatype = 'string', value = 'xxx' },
expected = true
},
{
args = { datatype = 'monolingualtext', value = 'xxx' },
expected = true
},
{
args = { datatype = 'wikibase-item', value = 213 }, -- Česko
expected = true
},
{
args = { datatype = 'wikibase-item', value = 6 }, -- neexistující položka
expected = false
},
}
for _, data in ipairs(provider) do
local statement = builder.buildStatement(data.args)
local snak = builder.buildSnak(data.args)
self:assertEquals(data.expected, myModule.isCompleteStatement(statement))
self:assertEquals(data.expected, myModule.isCompleteSnak(snak))
end
end
function suite:testCompare()
local provider = {
{
datatype = 'string',
values = {
{ 'bar', 'xxx', -1 },
{ 'xxx', 'xxx', 0 },
{ 'xxx', 'bar', 1 },
}
},
{
datatype = 'monolingualtext',
values = {
{ 'bar', 'xxx', -1 },
{ 'xxx', 'xxx', 0 },
{ 'xxx', 'bar', 1 },
}
},
{
datatype = 'wikibase-item',
values = {
{ 213, 214, -1 }, -- Česko, Slovensko
{ 213, 213, 0 },
{ 214, 213, 1 },
}
},
}
for _, data in ipairs(provider) do
for _, line in ipairs(data.values) do
local first = builder.buildStatement{ datatype = data.datatype, value = line[1] }
local second = builder.buildStatement{ datatype = data.datatype, value = line[2] }
self:assertEquals(line[3], myModule.compareStatements(first, second))
end
for _, line in ipairs(data.values) do
local first = builder.buildSnak{ datatype = data.datatype, value = line[1] }
local second = builder.buildSnak{ datatype = data.datatype, value = line[2] }
self:assertEquals(line[3], myModule.compareSnaks(first, second))
end
end
end
return suite