Modul:Wikidata/Sorters/alpha/testcases

Z Wikipedie, otevřené encyklopedie
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