Modul:Wb/testtilfeller

Frå Wikipedia – det frie oppslagsverket

Dokumentasjon for modulen kan opprettast på Modul:Wb/testtilfeller/dok


-- Unit tests for [[Module:Wb]]. Click talk page to run tests.
local p = require( 'Module:UnitTests' )
local wb = require( 'Module:Wb' )

function p:test_operations()
	self:equals( 'Equality', wb.operations['=']( 'foo', 'foo' ), true )
	self:equals( 'Equality', wb.operations['=']( 'foo', 'bar' ), false )
	self:equals( 'Inequality', wb.operations['!=']( 'foo', 'foo' ), false )
	self:equals( 'Inequality', wb.operations['!=']( 'foo', 'bar' ), true )
	self:equals( 'Similar start', wb.operations['^=']( 'foobar', 'foo' ), true )
	self:equals( 'Similar start', wb.operations['^=']( 'foobar', 'bar' ), false )
	self:equals( 'Similar start with spes char', wb.operations['^=']( '.?+bar', '.?+' ), true )
	self:equals( 'Similar start with spes char', wb.operations['^=']( 'foobar', '...' ), false )
	self:equals( 'Similar start negated', wb.operations['^!']( 'foobar', 'foo' ), false )
	self:equals( 'Similar start negated', wb.operations['^!']( 'foobar', 'bar' ), true )
	self:equals( 'Similar end', wb.operations['$=']( 'foobar', 'foo' ), false )
	self:equals( 'Similar end', wb.operations['$=']( 'foobar', 'bar' ), true )
	self:equals( 'Similar end negated', wb.operations['$!']( 'foobar', 'foo' ), true )
	self:equals( 'Similar end negated', wb.operations['$!']( 'foobar', 'bar' ), false )
	self:equals( 'Greater than or equal', wb.operations['>=']( 'foo', 'bar' ), true )
	self:equals( 'Greater than or equal', wb.operations['>=']( 'foo', 'foo' ), true )
	self:equals( 'Greater than or equal', wb.operations['>=']( 'bar', 'foo' ), false )
	self:equals( 'Greater than or equal', wb.operations['>=']( '1', '10' ), false )
	self:equals( 'Greater than or equal', wb.operations['>=']( '10', '10' ), true )
	self:equals( 'Greater than or equal', wb.operations['>=']( '10', '1' ), true )
	self:equals( 'Greater than', wb.operations['>']( 'foo', 'bar' ), true )
	self:equals( 'Greater than', wb.operations['>']( 'foo', 'foo' ), false )
	self:equals( 'Greater than', wb.operations['>']( 'bar', 'foo' ), false )
	self:equals( 'Greater than', wb.operations['>']( '1', '10' ), false )
	self:equals( 'Greater than', wb.operations['>']( '10', '10' ), false )
	self:equals( 'Greater than', wb.operations['>']( '10', '1' ), true )
	self:equals( 'Lesser than', wb.operations['<']( 'foo', 'bar' ), false )
	self:equals( 'Lesser than', wb.operations['<']( 'foo', 'foo' ), false )
	self:equals( 'Lesser than', wb.operations['<']( 'bar', 'foo' ), true )
	self:equals( 'Lesser than', wb.operations['<']( '1', '10' ), true )
	self:equals( 'Lesser than', wb.operations['<']( '10', '10' ), false )
	self:equals( 'Lesser than', wb.operations['<']( '10', '1' ), false )
	self:equals( 'Lesser than or equal', wb.operations['<=']( 'foo', 'bar' ), false )
	self:equals( 'Lesser than or equal', wb.operations['<=']( 'foo', 'foo' ), true )
	self:equals( 'Lesser than or equal', wb.operations['<=']( 'bar', 'foo' ), true )
	self:equals( 'Lesser than or equal', wb.operations['<=']( '1', '10' ), true )
	self:equals( 'Lesser than or equal', wb.operations['<=']( '10', '10' ), true )
	self:equals( 'Lesser than or equal', wb.operations['<=']( '10', '1' ), false )
end

function p:test_Entity_from_Wikidata()
	local entity = mw.wikibase.getEntity( 'Q48414' )
	self:equals( 'Testing entity ..', wb.Entity( entity ).signature(), 'Entity' )
	self:equals_deep( 'Testing entity ..', type(wb.Entity( entity ).toTable()), 'table' )
	self:equals( 'Testing entity ..', wb.Entity( entity ).type(), 'item' )
	self:equals( 'Testing entity ..', wb.Entity( entity ).id(), 'Q48414' )
	self:equals( 'Testing entity ..', type(tonumber(wb.Entity( entity ).schemaVersion())), 'number' )
	--self:equals( 'Testing entity ..', type(wb.Entity( entity ).label()), 'table' )
	--self:equals_deep( 'Testing entity ..', wb.Entity( entity ).label(), wb.LangString( { language = "nn", value = "Sør-Aurdal" } ) )
	self:equals( 'Non-existing label', wb.Entity( entity ).label('humptydumpty'), nil )
	self:equals( 'English labels code', wb.Entity( entity ).label('en').language(), 'en' )
	self:equals( 'English labels value', wb.Entity( entity ).label('en').value(), 'Sør-Aurdal' )
	self:equals( 'Non-existing description', wb.Entity( entity ).description('humptydumpty'), nil )
	self:equals( 'English descriptions code', wb.Entity( entity ).description('en').language(), 'en' )
	self:equals( 'English descriptions value', wb.Entity( entity ).description('en').value(), 'municipality in Oppland, Norway' )
	self:equals( 'Non-existing alias', wb.Entity( entity ).alias('humptydumpty'), nil )
	--self:equals( 'English aliases code', wb.Entity( entity ).alias('en').language(), 'en' )
	self:equals( 'English aliases value', type(wb.Entity( entity ).alias('en')), 'table' )
end

function p:test_load()
    self:preprocess_equals( '{{#invoke:Wb | run | Q48414 | signature }}', 'Entity' )
    self:preprocess_equals( '{{#invoke:Wb | run | Q48414 | type }}', 'item' )
    self:preprocess_equals( '{{#invoke:Wb | run | Q48414 | id }}', 'Q48414' )
    self:preprocess_equals( '{{#invoke:Wb | run | Q48414 | label }}', 'Sør-Aurdal' )
    self:preprocess_equals( '{{#invoke:Wb | run | Q48414 | description }}', 'kommune i Oppland fylke, i landskapet og dalføret Valdres, i Norge' )
    self:preprocess_equals( '{{#invoke:Wb | run | Q48414 | Dette er en %{foo} test}}', 'Sør-Aurdal' )
end

return p