Koha Test Wiki MW Canasta on Koha Portainer

Test major Koha Wiki changes or bug fixes here without fear of breaking the production wiki.

For the current Koha Wiki, visit https://wiki.koha-community.org .

Module:Userbox/testcases

From Koha Test Wiki MW Canasta on Koha Portainer
Jump to navigation Jump to search

Documentation for this module may be created at Module:Userbox/testcases/doc

-- This testcase seams to be broken, please see [[Template:Userbox/testcases]], [[Template:Userbox-r/testcases]] and [[Template:Userbox-2/testcases]] for now.
--------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Unit tests for [[Module:Userbox/sandbox]]. Click talk page to run tests.
local ubx = require('Module:Userbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

local userbox = ubx['userbox']
local userbox2 = ubx['userbox-2']
local userboxr = ubx['userbox-r']
local render = ubx._userbox
local categories = ubx.categories

--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------

local function inTag(s, tag)
	-- Makes a pattern that tests whether s is inside a given html tag.
	return '<' .. tag .. ' [^>]-' .. s
end

local function inAttr(s, attr)
	-- Makes a pattern that tests whether s is inside a given html attribute.
	return attr .. '="[^"]-' .. s
end

local function inTagAttr(s, tag, attr)
	-- Makes a pattern that tests whether s is inside a given html tag
	-- and a given html attribute.
	return inTag(inAttr(s, attr), tag)
end

local function renderId(data)
	data.showId = true
	return render(data)
end

local function renderId2(data)
	data.showId2 = true
	return render(data)
end

--------------------------------------------------------------------------------
-- Render tests
--------------------------------------------------------------------------------

function suite:testRenderFloat()
    self:assertStringContains(inTagAttr('float:right', 'div', 'style'), render{float = 'right'})
end

function suite:testRenderBorder()
    self:assertStringContains(inTagAttr('border:5px', 'div', 'style'), render{borderWidth = '5px'})
    self:assertStringContains('solid red', render{borderColor='red'})
end

function suite:testRenderMargin()
    self:assertStringContains(inTagAttr('margin:1px', 'div', 'style'), render{})
end

function suite:testRenderWidth()
    self:assertStringContains(inTagAttr('width:120px', 'div', 'style'), render{width = '120px'})
end

function suite:testRenderUserboxClass()
    self:assertStringContains(inTagAttr('wikipediauserbox', 'div', 'class'), render{})
end

function suite:testRenderBodyClass()
    self:assertStringContains(inTagAttr('foobar', 'div', 'class'), render{bodyClass = 'foobar'})
end

function suite:testRenderBorderCollapse()
    self:assertStringContains(inTagAttr('border-collapse:collapse', 'table', 'style'), render{})
end

function suite:testRenderBorderCollapse()
    self:assertStringContains(inTagAttr('width:120px', 'table', 'style'), render{width = '120px'})
end

function suite:testRenderTableWidth()
    self:assertStringContains(inTagAttr('width:120px', 'table', 'style'), render{width = '120px'})
end

function suite:testRenderMarginBottom()
    self:assertStringContains(inTagAttr('margin%-bottom:0', 'table', 'style'), render{})
end

function suite:testRenderBackgroundColor()
    self:assertStringContains(inTagAttr('background:red', 'table', 'style'), render{backgroundColor = 'red'})
end

--------------------------------------------------------------------------------
-- Render id tests
--------------------------------------------------------------------------------

function suite:testRenderIdBorder()
    self:assertStringContains(inTagAttr('border:0', 'th', 'style'), renderId{})
end

function suite:testRenderIdWidth()
    self:assertStringContains(inTagAttr('width:50px', 'th', 'style'), renderId{idWidth = '50px'})
end

function suite:testRenderIdHeight()
    self:assertStringContains(inTagAttr('height:50px', 'th', 'style'), renderId{idHeight = '50px'})
end

function suite:testRenderIdBackgroundColor()
    self:assertStringContains(inTagAttr('background:red', 'th', 'style'), renderId{idBackgroundColor = 'red'})
end

function suite:testRenderIdTextAlign()
    self:assertStringContains(inTagAttr('text%-align:center', 'th', 'style'), renderId{idTextAlign = 'center'})
end

function suite:testRenderIdFontSize()
    self:assertStringContains(inTagAttr('font%-size:16pt', 'th', 'style'), renderId{idFontSize = '16pt'})
end

function suite:testRenderIdColor()
    self:assertStringContains(inTagAttr('color:blue', 'th', 'style'), renderId{idColor = 'blue'})
end

function suite:testRenderIdPadding()
    self:assertStringContains(inTagAttr('padding:3px', 'th', 'style'), renderId{idPadding = '3px'})
end

function suite:testRenderIdLineHeight()
    self:assertStringContains(inTagAttr('line%-height:1.5em', 'th', 'style'), renderId{idLineHeight = '1.5em'})
end

function suite:testRenderIdVerticalAlign()
    self:assertStringContains(inTagAttr('vertical%-align:middle', 'th', 'style'), renderId{})
end

function suite:testRenderIdOtherParams()
    self:assertStringContains(inTagAttr('font%-family:serif', 'th', 'style'), renderId{idOtherParams = 'font-family:serif'})
end

function suite:testRenderIdClass()
    self:assertStringContains(inTagAttr('foobar', 'th', 'class'), renderId{idClass = 'foobar'})
end

function suite:testRenderId()
    self:assertStringContains('<th[^>]->Id text.</th>', renderId{id = 'Id text.'})
end

--------------------------------------------------------------------------------
-- Render info tests
--------------------------------------------------------------------------------

function suite:testRenderInfoBorder()
    self:assertStringContains(inTagAttr('border:0', 'td', 'style'), render{})
end

function suite:testRenderInfoTextAlign()
    self:assertStringContains(inTagAttr('text%-align:center', 'td', 'style'), render{infoTextAlign = 'center'})
end

function suite:testRenderInfoFontSize()
    self:assertStringContains(inTagAttr('font%-size:16pt', 'td', 'style'), render{infoFontSize = '16pt'})
end

function suite:testRenderInfoPadding()
    self:assertStringContains(inTagAttr('padding:3px', 'td', 'style'), render{infoPadding = '3px'})
end

function suite:testRenderInfoHeight()
    self:assertStringContains(inTagAttr('height:50px', 'td', 'style'), render{infoHeight = '50px'})
end

function suite:testRenderInfoLineHeight()
    self:assertStringContains(inTagAttr('line%-height:1.5em', 'td', 'style'), render{infoLineHeight = '1.5em'})
end

function suite:testRenderInfoColor()
    self:assertStringContains(inTagAttr('color:blue', 'td', 'style'), render{infoColor = 'blue'})
end

function suite:testRenderInfoVerticalAlign()
    self:assertStringContains(inTagAttr('vertical%-align:middle', 'td', 'style'), render{})
end

function suite:testRenderInfoOtherParams()
    self:assertStringContains(inTagAttr('font%-family:serif', 'td', 'style'), render{infoOtherParams = 'font-family:serif'})
end

function suite:testRenderInfoClass()
    self:assertStringContains(inTagAttr('foobar', 'td', 'class'), render{infoClass = 'foobar'})
end

function suite:testRenderInfo()
    self:assertStringContains('<td[^>]->Info text.</td>', render{info = 'Info text.'})
end

--------------------------------------------------------------------------------
-- Render id2 tests
--------------------------------------------------------------------------------

function suite:testRenderId2Border()
    self:assertStringContains(inTagAttr('border:0', 'th', 'style'), renderId2{})
end

function suite:testRenderId2Width()
    self:assertStringContains(inTagAttr('width:50px', 'th', 'style'), renderId2{id2Width = '50px'})
end

function suite:testRenderId2Height()
    self:assertStringContains(inTagAttr('height:50px', 'th', 'style'), renderId2{id2Height = '50px'})
end

function suite:testRenderId2BackgroundColor()
    self:assertStringContains(inTagAttr('background:red', 'th', 'style'), renderId2{id2BackgroundColor = 'red'})
end

function suite:testRenderId2TextAlign()
    self:assertStringContains(inTagAttr('text%-align:center', 'th', 'style'), renderId2{id2TextAlign = 'center'})
end

function suite:testRenderId2FontSize()
    self:assertStringContains(inTagAttr('font%-size:16pt', 'th', 'style'), renderId2{id2FontSize = '16pt'})
end

function suite:testRenderId2Color()
    self:assertStringContains(inTagAttr('color:blue', 'th', 'style'), renderId2{id2Color = 'blue'})
end

function suite:testRenderId2Padding()
    self:assertStringContains(inTagAttr('padding:3px', 'th', 'style'), renderId2{id2Padding = '3px'})
end

function suite:testRenderId2LineHeight()
    self:assertStringContains(inTagAttr('line%-height:1.5em', 'th', 'style'), renderId2{id2LineHeight = '1.5em'})
end

function suite:testRenderId2VerticalAlign()
    self:assertStringContains(inTagAttr('vertical%-align:middle', 'th', 'style'), renderId2{})
end

function suite:testRenderId2OtherParams()
    self:assertStringContains(inTagAttr('font%-family:serif', 'th', 'style'), renderId2{id2OtherParams = 'font-family:serif'})
end

function suite:testRenderId2()
    self:assertStringContains('<th[^>]->Id2 text.</th>', renderId2{id2 = 'Id2 text.'})
end

--------------------------------------------------------------------------------
-- Userbox div and table tag tests
--------------------------------------------------------------------------------

function suite:testUserboxFloat()
    self:assertEquals('left', userbox{}.float)
    self:assertEquals('right', userbox{float = 'right'}.float)
end

function suite:testUserboxBorderWidth()
    self:assertEquals('1px', userbox{}.borderWidth)
    self:assertEquals('2px', userbox{['border-width'] = '2'}.borderWidth)
    self:assertEquals('3px', userbox{['border-s'] = '3'}.borderWidth)
end

function suite:testUserboxBorderWidthOrder()
    self:assertEquals('2px', userbox{['border-width'] = '2', ['border-s'] = '3'}.borderWidth)
end

function suite:testUserboxBorderColor()
    self:assertEquals('#999', userbox{}.borderColor)
    self:assertEquals('red', userbox{['border-color'] = 'red'}.borderColor)
    self:assertEquals('yellow', userbox{[1] = 'yellow'}.borderColor)
    self:assertEquals('blue', userbox{['border-c'] = 'blue'}.borderColor)
    self:assertEquals('green', userbox{['id-c'] = 'green'}.borderColor)
end

function suite:testUserboxBorderColorOrder()
    self:assertEquals('red', userbox{['border-color'] = 'red', [1] = 'yellow', ['border-c'] = 'blue', ['id-c'] = 'green'}.borderColor)
    self:assertEquals('yellow', userbox{[1] = 'yellow', ['border-c'] = 'blue', ['id-c'] = 'green'}.borderColor)
    self:assertEquals('blue', userbox{['border-c'] = 'blue', ['id-c'] = 'green'}.borderColor)
end

function suite:testUserboxWidth()
    self:assertEquals('238px', userbox{}.width)
    self:assertEquals('236px', userbox{['border-s'] = '2'}.width)
end

function suite:testUserboxBodyClass()
    self:assertEquals(nil, userbox{}.bodyClass)
    self:assertEquals('foobar', userbox{bodyclass = 'foobar'}.bodyClass)
end

function suite:testUserboxBackgroundColor()
    self:assertEquals('#eee', userbox{}.backgroundColor)
    self:assertEquals('red', userbox{['info-background'] = 'red'}.backgroundColor)
    self:assertEquals('yellow', userbox{[2] = 'yellow'}.backgroundColor)
    self:assertEquals('blue', userbox{['info-c'] = 'blue'}.backgroundColor)
end

function suite:testUserboxBackgroundColorOrder()
    self:assertEquals('red', userbox{['info-background'] = 'red', [2] = 'yellow', ['info-c'] = 'blue'}.backgroundColor)
    self:assertEquals('yellow', userbox{[2] = 'yellow', ['info-c'] = 'blue'}.backgroundColor)
end

--------------------------------------------------------------------------------
-- Userbox id tests
--------------------------------------------------------------------------------

function suite:testUserboxId()
    self:assertEquals(nil, userbox{}.id)
    self:assertEquals('Id text.', userbox{logo = 'Id text.'}.id)
    self:assertEquals('More id text.', userbox{[3] = 'More id text.'}.id)
    self:assertEquals('Even more id text.', userbox{id = 'Even more id text.'}.id)
end

function suite:testUserboxIdOrder()
    self:assertEquals('Id text.', userbox{logo = 'Id text.', [3] = 'More id text.', id = 'Even more id text.'}.id)
    self:assertEquals('More id text.', userbox{[3] = 'More id text.', id = 'Even more id text.'}.id)
end

function suite:testUserboxShowId()
    self:assertEquals(true, userbox{id = 'Id text.'}.showId)
    self:assertEquals(false, userbox{}.showId)
end

function suite:testUserboxIdWidth()
    self:assertEquals('45px', userbox{}.idWidth)
    self:assertEquals('50px', userbox{['logo-width'] = '50'}.idWidth)
    self:assertEquals('55px', userbox{['id-w'] = '55'}.idWidth)
end

function suite:testUserboxIdWidthOrder()
    self:assertEquals('50px', userbox{['logo-width'] = '50', ['id-w'] = '55'}.idWidth)
end

function suite:testUserboxIdHeight()
    self:assertEquals('45px', userbox{}.idHeight)
    self:assertEquals('50px', userbox{['logo-height'] = '50'}.idHeight)
    self:assertEquals('55px', userbox{['id-h'] = '55'}.idHeight)
end

function suite:testUserboxIdHeightOrder()
   self:assertEquals('50px', userbox{['logo-height'] = '50', ['id-h'] = '55'}.idHeight)
end

function suite:testUserboxIdBackgroundColor()
    self:assertEquals('#ddd', userbox{}.idBackgroundColor)
    self:assertEquals('red', userbox{['logo-background'] = 'red'}.idBackgroundColor)
    self:assertEquals('yellow', userbox{[1] = 'yellow'}.idBackgroundColor)
    self:assertEquals('blue', userbox{['id-c'] = 'blue'}.idBackgroundColor)
end

function suite:testUserboxIdBackgroundColorOrder()
    self:assertEquals('red', userbox{['logo-background'] = 'red', [1] = 'yellow', ['id-c'] = 'blue'}.idBackgroundColor)
    self:assertEquals('yellow', userbox{[1] = 'yellow', ['id-c'] = 'blue'}.idBackgroundColor)
end

function suite:testUserboxIdTextAlign()
    self:assertEquals('center', userbox{}.idTextAlign)
    self:assertEquals('right', userbox{['id-a'] = 'right'}.idTextAlign)
end

function suite:testUserboxIdFontSize()
    self:assertEquals('14pt', userbox{}.idFontSize)
    self:assertEquals('16pt', userbox{['logo-size'] = '16'}.idFontSize)
    self:assertEquals('18pt', userbox{[5] = '18'}.idFontSize)
    self:assertEquals('20pt', userbox{['id-s'] = '20'}.idFontSize)
end

function suite:testUserboxIdFontSizeOrder()
    self:assertEquals('16pt', userbox{['logo-size'] = '16', [5] = '18', ['id-s'] = '20'}.idFontSize)
    self:assertEquals('18pt', userbox{[5] = '18', ['id-s'] = '20'}.idFontSize)
end

function suite:testUserboxIdColor()
    self:assertEquals('black', userbox{}.idColor)
    self:assertEquals('red', userbox{['logo-color'] = 'red'}.idColor)
    self:assertEquals('blue', userbox{['id-fc'] = 'blue'}.idColor)
end

function suite:testUserboxIdColorOrder()
    self:assertEquals('red', userbox{['logo-color'] = 'red', ['id-fc'] = 'blue'}.idColor)
end

function suite:testUserboxIdPadding()
    self:assertEquals('0 1px 0 0', userbox{}.idPadding)
    self:assertEquals('1px 1px 1px 1px', userbox{['logo-padding'] = '1px 1px 1px 1px'}.idPadding)
    self:assertEquals('2px 2px 2px 2px', userbox{['id-p'] = '2px 2px 2px 2px'}.idPadding)
end

function suite:testUserboxIdPaddingOrder()
    self:assertEquals('1px 1px 1px 1px', userbox{['logo-padding'] = '1px 1px 1px 1px', ['id-p'] = '2px 2px 2px 2px'}.idPadding)
end

function suite:testUserboxIdLineHeight()
    self:assertEquals('1.25em', userbox{}.idLineHeight)
    self:assertEquals('1.5em', userbox{['logo-line-height'] = '1.5em'}.idLineHeight)
    self:assertEquals('1.75em', userbox{['id-lh'] = '1.75em'}.idLineHeight)
end

function suite:testUserboxIdLineHeightOrder()
    self:assertEquals('1.5em', userbox{['logo-line-height'] = '1.5em', ['id-lh'] = '1.75em'}.idLineHeight)
end

function suite:testUserboxIdOtherParams()
    self:assertEquals(nil, userbox{}.idOtherParams)
    self:assertEquals('font-family:serif', userbox{['logo-other-param'] = 'font-family:serif'}.idOtherParams)
    self:assertEquals('font-family:times', userbox{['id-op'] = 'font-family:times'}.idOtherParams)
end

function suite:testUserboxIdOtherParamsOrder()
    self:assertEquals('font-family:serif', userbox{['logo-other-param'] = 'font-family:serif', ['id-op'] = 'font-family:times'}.idOtherParams)
end

function suite:testUserboxIdClass()
    self:assertEquals(nil, userbox{}.idClass)
    self:assertEquals('foobar', userbox{['id-class'] = 'foobar'}.idClass)
end

--------------------------------------------------------------------------------
-- Userbox info tests
--------------------------------------------------------------------------------

function suite:testUserboxInfo()
    self:assertEquals("<code>{{{info}}}</code>", userbox{}.info)
    self:assertEquals('Info text.', userbox{info = 'Info text.'}.info)
    self:assertEquals('More info text.', userbox{[4] = 'More info text.'}.info)
end

function suite:testUserboxInfoOrder()
    self:assertEquals('Info text.', userbox{info = 'Info text.', [4] = 'More info text.'}.info)
end

function suite:testUserboxInfoTextAlign()
    self:assertEquals('left', userbox{}.infoTextAlign)
    self:assertEquals('right', userbox{['info-a'] = 'right'}.infoTextAlign)
end

function suite:testUserboxInfoFontSize()
    self:assertEquals('8pt', userbox{}.infoFontSize)
    self:assertEquals('10pt', userbox{['info-size'] = '10'}.infoFontSize)
    self:assertEquals('12pt', userbox{['info-s'] = '12'}.infoFontSize)
end

function suite:testUserboxInfoFontSizeOrder()
    self:assertEquals('10pt', userbox{['info-size'] = '10', ['info-s'] = '12'}.infoFontSize)
end

function suite:testUserboxInfoHeight()
    self:assertEquals('45px', userbox{}.infoHeight)
    self:assertEquals('50px', userbox{['logo-height'] = '50'}.infoHeight)
    self:assertEquals('55px', userbox{['id-h'] = '55'}.infoHeight)
end

function suite:testUserboxInfoHeightOrder()
   self:assertEquals('50px', userbox{['logo-height'] = '50', ['id-h'] = '55'}.infoHeight)
end

function suite:testUserboxInfoPadding()
    self:assertEquals('0 4px 0 4px', userbox{}.infoPadding)
    self:assertEquals('1px 1px 1px 1px', userbox{['info-padding'] = '1px 1px 1px 1px'}.infoPadding)
    self:assertEquals('2px 2px 2px 2px', userbox{['info-p'] = '2px 2px 2px 2px'}.infoPadding)
end

function suite:testUserboxInfoPaddingOrder()
    self:assertEquals('1px 1px 1px 1px', userbox{['info-padding'] = '1px 1px 1px 1px', ['info-p'] = '2px 2px 2px 2px'}.infoPadding)
end

function suite:testUserboxInfoLineHeight()
    self:assertEquals('1.25em', userbox{}.infoLineHeight)
    self:assertEquals('1.5em', userbox{['info-line-height'] = '1.5em'}.infoLineHeight)
    self:assertEquals('1.75em', userbox{['info-lh'] = '1.75em'}.infoLineHeight)
end

function suite:testUserboxInfoLineHeightOrder()
    self:assertEquals('1.5em', userbox{['info-line-height'] = '1.5em', ['info-lh'] = '1.75em'}.infoLineHeight)
end

function suite:testUserboxInfoColor()
    self:assertEquals('black', userbox{}.infoColor)
    self:assertEquals('red', userbox{['info-color'] = 'red'}.infoColor)
    self:assertEquals('blue', userbox{['info-fc'] = 'blue'}.infoColor)
end

function suite:testUserboxInfoColorOrder()
    self:assertEquals('red', userbox{['info-color'] = 'red', ['info-fc'] = 'blue'}.infoColor)
end

function suite:testUserboxInfoOtherParams()
    self:assertEquals(nil, userbox{}.infoOtherParams)
    self:assertEquals('font-family:serif', userbox{['info-other-param'] = 'font-family:serif'}.infoOtherParams)
    self:assertEquals('font-family:times', userbox{['info-op'] = 'font-family:times'}.infoOtherParams)
end

function suite:testUserboxInfoOtherParamsOrder()
    self:assertEquals('font-family:serif', userbox{['info-other-param'] = 'font-family:serif', ['info-op'] = 'font-family:times'}.infoOtherParams)
end

function suite:testUserboxInfoClass()
    self:assertEquals(nil, userbox{}.infoClass)
    self:assertEquals('foobar', userbox{['info-class'] = 'foobar'}.infoClass)
end

--------------------------------------------------------------------------------
-- Userbox2 div and table tag tests
--------------------------------------------------------------------------------

function suite:testUserbox2Float()
    self:assertEquals('left', userbox2{}.float)
    self:assertEquals('right', userbox2{float = 'right'}.float)
end

function suite:testUserbox2BorderWidth()
    self:assertEquals('1px', userbox2{}.borderWidth)
    self:assertEquals('2px', userbox2{[9] = '2'}.borderWidth)
    self:assertEquals('3px', userbox2{['border-s'] = '3'}.borderWidth)
end

function suite:testUserbox2BorderWidthOrder()
    self:assertEquals('2px', userbox2{[9] = '2', ['border-s'] = '3'}.borderWidth)
end

function suite:testUserbox2BorderColor()
    self:assertEquals('#999999', userbox2{}.borderColor)
    self:assertEquals('red', userbox2{[1] = 'red'}.borderColor)
    self:assertEquals('blue', userbox2{['border-c'] = 'blue'}.borderColor)
    self:assertEquals('green', userbox2{['id1-c'] = 'green'}.borderColor)
end

function suite:testUserbox2BorderColorOrder()
    self:assertEquals('red', userbox2{[1] = 'red', ['border-c'] = 'blue', ['id1-c'] = 'green'}.borderColor)
    self:assertEquals('blue', userbox2{['border-c'] = 'blue', ['id1-c'] = 'green'}.borderColor)
end

function suite:testUserbox2Width()
    self:assertEquals('238px', userbox2{}.width)
end

function suite:testUserbox2BodyClass()
    self:assertEquals(nil, userbox2{}.bodyClass)
    self:assertEquals('foobar', userbox2{bodyclass = 'foobar'}.bodyClass)
end

function suite:testUserbox2BackgroundColor()
    self:assertEquals('#eeeeee', userbox2{}.backgroundColor)
    self:assertEquals('yellow', userbox2{[2] = 'yellow'}.backgroundColor)
    self:assertEquals('blue', userbox2{['info-c'] = 'blue'}.backgroundColor)
end

function suite:testUserbox2BackgroundColorOrder()
    self:assertEquals('yellow', userbox2{[2] = 'yellow', ['info-c'] = 'blue'}.backgroundColor)
end

--------------------------------------------------------------------------------
-- Userbox2 id tests
--------------------------------------------------------------------------------

function suite:testUserbox2Id()
    self:assertEquals('id1', userbox2{}.id)
    self:assertEquals('Id text.', userbox2{logo = 'Id text.'}.id)
    self:assertEquals('More id text.', userbox2{[3] = 'More id text.'}.id)
    self:assertEquals('Even more id text.', userbox2{id1 = 'Even more id text.'}.id)
end

function suite:testUserbox2IdOrder()
    self:assertEquals('Id text.', userbox2{logo = 'Id text.', [3] = 'More id text.', id1 = 'Even more id text.'}.id)
    self:assertEquals('More id text.', userbox2{[3] = 'More id text.', id1 = 'Even more id text.'}.id)
end

function suite:testUserbox2ShowId()
    self:assertEquals(true, userbox2{}.showId)
end

function suite:testUserbox2IdWidth()
    self:assertEquals('45px', userbox2{}.idWidth)
    self:assertEquals('50px', userbox2{['id1-w'] = '50'}.idWidth)
end

function suite:testUserbox2IdHeight()
    self:assertEquals('45px', userbox2{}.idHeight)
    self:assertEquals('50px', userbox2{['id-h'] = '50'}.idHeight)
end

function suite:testUserbox2IdBackgroundColor()
    self:assertEquals('#dddddd', userbox2{}.idBackgroundColor)
    self:assertEquals('yellow', userbox2{[1] = 'yellow'}.idBackgroundColor)
    self:assertEquals('blue', userbox2{['id1-c'] = 'blue'}.idBackgroundColor)
end

function suite:testUserbox2IdBackgroundColorOrder()
    self:assertEquals('yellow', userbox2{[1] = 'yellow', ['id1-c'] = 'blue'}.idBackgroundColor)
end

function suite:testUserbox2IdTextAlign()
    self:assertEquals('center', userbox2{}.idTextAlign)
end

function suite:testUserbox2IdFontSize()
    self:assertEquals('14pt', userbox2{}.idFontSize)
    self:assertEquals('16pt', userbox2{['id1-s'] = '16'}.idFontSize)
end

function suite:testUserbox2IdLineHeight()
    self:assertEquals('1.25em', userbox2{}.idLineHeight)
    self:assertEquals('1.5em', userbox2{['id1-lh'] = '1.5em'}.idLineHeight)
end

function suite:testUserbox2IdColor()
    self:assertEquals('black', userbox2{}.idColor)
    self:assertEquals('blue', userbox2{['id1-fc'] = 'blue'}.idColor)
end

function suite:testUserbox2IdPadding()
    self:assertEquals('0 1px 0 0', userbox2{}.idPadding)
    self:assertEquals('1px 1px 1px 1px', userbox2{['id1-p'] = '1px 1px 1px 1px'}.idPadding)
end

function suite:testUserbox2IdOtherParams()
    self:assertEquals(nil, userbox2{}.idOtherParams)
    self:assertEquals('font-family:times', userbox2{['id1-op'] = 'font-family:times'}.idOtherParams)
end

--------------------------------------------------------------------------------
-- Userbox2 info tests
--------------------------------------------------------------------------------

function suite:testUserbox2Info()
    self:assertEquals("<code>{{{info}}}</code>", userbox2{}.info)
    self:assertEquals('Info text.', userbox2{[4] = 'Info text.'}.info)
    self:assertEquals('More info text.', userbox2{info = 'More info text.'}.info)
end

function suite:testUserbox2InfoOrder()
    self:assertEquals('Info text.', userbox2{[4] = 'Info text.', info = 'More info text.'}.info)
end

function suite:testUserbox2InfoTextAlign()
    self:assertEquals('left', userbox2{}.infoTextAlign)
    self:assertEquals('right', userbox2{['info-a'] = 'right'}.infoTextAlign)
end

function suite:testUserbox2InfoFontSize()
    self:assertEquals('8pt', userbox2{}.infoFontSize)
    self:assertEquals('10pt', userbox2{['info-s'] = '10'}.infoFontSize)
end

function suite:testUserbox2InfoColor()
    self:assertEquals('black', userbox2{}.infoColor)
    self:assertEquals('red', userbox2{[8] = 'red'}.infoColor)
    self:assertEquals('blue', userbox2{['info-fc'] = 'blue'}.infoColor)
end

function suite:testUserbox2InfoColorOrder()
    self:assertEquals('red', userbox2{[8] = 'red', ['info-fc'] = 'blue'}.infoColor)
end

function suite:testUserbox2InfoPadding()
    self:assertEquals('0 4px 0 4px', userbox2{}.infoPadding)
    self:assertEquals('1px 1px 1px 1px', userbox2{['info-p'] = '1px 1px 1px 1px'}.infoPadding)
end

function suite:testUserbox2InfoLineHeight()
    self:assertEquals('1.25em', userbox2{}.infoLineHeight)
    self:assertEquals('1.5em', userbox2{['info-lh'] = '1.5em'}.infoLineHeight)
end

function suite:testUserbox2InfoOtherParams()
    self:assertEquals(nil, userbox2{}.infoOtherParams)
    self:assertEquals('font-family:times', userbox2{['info-op'] = 'font-family:times'}.infoOtherParams)
end

--------------------------------------------------------------------------------
-- Userbox2 id2 tests
--------------------------------------------------------------------------------

function suite:testUserbox2Id2()
    self:assertEquals('id2', userbox2{}.id2)
    self:assertEquals('Id2 text.', userbox2{logo = 'Id2 text.'}.id2)
    self:assertEquals('More id2 text.', userbox2{[5] = 'More id2 text.'}.id2)
    self:assertEquals('Even more id2 text.', userbox2{id2 = 'Even more id2 text.'}.id2)
end

function suite:testUserbox2Id2Order()
    self:assertEquals('Id2 text.', userbox2{logo = 'Id2 text.', [5] = 'More id2 text.', id2 = 'Even more id2 text.'}.id2)
    self:assertEquals('More id2 text.', userbox2{[5] = 'More id2 text.', id2 = 'Even more id2 text.'}.id2)
end

function suite:testUserbox2ShowId2()
    self:assertEquals(true, userbox2{}.showId2)
end

function suite:testUserbox2Id2Width()
    self:assertEquals('45px', userbox2{}.id2Width)
    self:assertEquals('50px', userbox2{['id2-w'] = '50'}.id2Width)
end

function suite:testUserbox2Id2Height()
    self:assertEquals('45px', userbox2{}.id2Height)
    self:assertEquals('50px', userbox2{['id-h'] = '50'}.id2Height)
end

function suite:testUserbox2Id2BackgroundColor()
    self:assertEquals('#dddddd', userbox2{}.id2BackgroundColor)
    self:assertEquals('yellow', userbox2{[7] = 'yellow'}.id2BackgroundColor)
    self:assertEquals('blue', userbox2{['id2-c'] = 'blue'}.id2BackgroundColor)
    self:assertEquals('red', userbox2{[1] = 'red'}.id2BackgroundColor)
end

function suite:testUserbox2Id2BackgroundColorOrder()
    self:assertEquals('yellow', userbox2{[7] = 'yellow', ['id2-c'] = 'blue', [1] = 'red'}.id2BackgroundColor)
    self:assertEquals('blue', userbox2{['id2-c'] = 'blue', [1] = 'red'}.id2BackgroundColor)
end

function suite:testUserbox2Id2TextAlign()
    self:assertEquals('center', userbox2{}.id2TextAlign)
end

function suite:testUserbox2Id2FontSize()
    self:assertEquals('14pt', userbox2{}.id2FontSize)
    self:assertEquals('16pt', userbox2{['id2-s'] = '16'}.id2FontSize)
end

function suite:testUserbox2Id2LineHeight()
    self:assertEquals('1.25em', userbox2{}.id2LineHeight)
    self:assertEquals('1.5em', userbox2{['id2-lh'] = '1.5em'}.id2LineHeight)
end

function suite:testUserbox2Id2Color()
    self:assertEquals('black', userbox2{}.id2Color)
    self:assertEquals('blue', userbox2{['id2-fc'] = 'blue'}.id2Color)
end

function suite:testUserbox2Id2Padding()
    self:assertEquals('0 0 0 1px', userbox2{}.id2Padding)
    self:assertEquals('1px 1px 1px 1px', userbox2{['id2-p'] = '1px 1px 1px 1px'}.id2Padding)
end

function suite:testUserbox2Id2OtherParams()
    self:assertEquals(nil, userbox2{}.id2OtherParams)
    self:assertEquals('font-family:times', userbox2{['id2-op'] = 'font-family:times'}.id2OtherParams)
end

--------------------------------------------------------------------------------
-- Userboxr div and table tag tests
--------------------------------------------------------------------------------

function suite:testUserboxrFloat()
    self:assertEquals('left', userboxr{}.float)
    self:assertEquals('right', userboxr{float = 'right'}.float)
end

function suite:testUserboxrBorderWidth()
    self:assertEquals('1px', userboxr{}.borderWidth)
    self:assertEquals('2px', userboxr{['border-width'] = '2'}.borderWidth)
    self:assertEquals('3px', userboxr{['border-s'] = '3'}.borderWidth)
end

function suite:testUserboxrBorderWidthOrder()
    self:assertEquals('2px', userboxr{['border-width'] = '2', ['border-s'] = '3'}.borderWidth)
end

function suite:testUserboxrBorderColor()
    self:assertEquals('#999', userboxr{}.borderColor)
    self:assertEquals('red', userboxr{['border-color'] = 'red'}.borderColor)
    self:assertEquals('yellow', userboxr{[1] = 'yellow'}.borderColor)
    self:assertEquals('blue', userboxr{['border-c'] = 'blue'}.borderColor)
    self:assertEquals('green', userboxr{['id-c'] = 'green'}.borderColor)
end

function suite:testUserboxrBorderColorOrder()
    self:assertEquals('red', userboxr{['border-color'] = 'red', [1] = 'yellow', ['border-c'] = 'blue', ['id-c'] = 'green'}.borderColor)
    self:assertEquals('yellow', userboxr{[1] = 'yellow', ['border-c'] = 'blue', ['id-c'] = 'green'}.borderColor)
    self:assertEquals('blue', userboxr{['border-c'] = 'blue', ['id-c'] = 'green'}.borderColor)
end

function suite:testUserboxrWidth()
    self:assertEquals('238px', userboxr{}.width)
end

function suite:testUserboxrBodyClass()
    self:assertEquals(nil, userboxr{}.bodyClass)
    self:assertEquals('foobar', userboxr{bodyclass = 'foobar'}.bodyClass)
end

function suite:testUserboxrBackgroundColor()
    self:assertEquals('#eee', userboxr{}.backgroundColor)
    self:assertEquals('red', userboxr{['info-background'] = 'red'}.backgroundColor)
    self:assertEquals('yellow', userboxr{[2] = 'yellow'}.backgroundColor)
    self:assertEquals('blue', userboxr{['info-c'] = 'blue'}.backgroundColor)
end

function suite:testUserboxrBackgroundColorOrder()
    self:assertEquals('red', userboxr{['info-background'] = 'red', [2] = 'yellow', ['info-c'] = 'blue'}.backgroundColor)
    self:assertEquals('yellow', userboxr{[2] = 'yellow', ['info-c'] = 'blue'}.backgroundColor)
end

--------------------------------------------------------------------------------
-- Userboxr info tests
--------------------------------------------------------------------------------

function suite:testUserboxrInfo()
    self:assertEquals("<code>{{{info}}}</code>", userboxr{}.info)
    self:assertEquals('Info text.', userboxr{info = 'Info text.'}.info)
    self:assertEquals('More info text.', userboxr{[4] = 'More info text.'}.info)
end

function suite:testUserboxrInfoOrder()
    self:assertEquals('Info text.', userboxr{info = 'Info text.', [4] = 'More info text.'}.info)
end

function suite:testUserboxrInfoTextAlign()
    self:assertEquals('left', userboxr{}.infoTextAlign)
    self:assertEquals('right', userboxr{['info-align'] = 'right'}.infoTextAlign)
    self:assertEquals('center', userboxr{['info-a'] = 'center'}.infoTextAlign)
end

function suite:testUserboxrInfoTextAlignOrder()
    self:assertEquals('right', userboxr{['info-align'] = 'right', ['info-a'] = 'center'}.infoTextAlign)
end

function suite:testUserboxrInfoFontSize()
    self:assertEquals('8pt', userboxr{}.infoFontSize)
    self:assertEquals('10pt', userboxr{['info-size'] = '10'}.infoFontSize)
    self:assertEquals('12pt', userboxr{['info-s'] = '12'}.infoFontSize)
end

function suite:testUserboxrInfoFontSizeOrder()
    self:assertEquals('10pt', userboxr{['info-size'] = '10', ['info-s'] = '12'}.infoFontSize)
end

function suite:testUserboxrInfoPadding()
    self:assertEquals('0 4px 0 4px', userboxr{}.infoPadding)
    self:assertEquals('1px 1px 1px 1px', userboxr{['info-padding'] = '1px 1px 1px 1px'}.infoPadding)
    self:assertEquals('2px 2px 2px 2px', userboxr{['info-p'] = '2px 2px 2px 2px'}.infoPadding)
end

function suite:testUserboxrInfoPaddingOrder()
    self:assertEquals('1px 1px 1px 1px', userboxr{['info-padding'] = '1px 1px 1px 1px', ['info-p'] = '2px 2px 2px 2px'}.infoPadding)
end

function suite:testUserboxrInfoLineHeight()
    self:assertEquals('1.25em', userboxr{}.infoLineHeight)
    self:assertEquals('1.5em', userboxr{['info-line-height'] = '1.5em'}.infoLineHeight)
    self:assertEquals('1.75em', userboxr{['info-lh'] = '1.75em'}.infoLineHeight)
end

function suite:testUserboxrInfoLineHeightOrder()
    self:assertEquals('1.5em', userboxr{['info-line-height'] = '1.5em', ['info-lh'] = '1.75em'}.infoLineHeight)
end

function suite:testUserboxrInfoColor()
    self:assertEquals('black', userboxr{}.infoColor)
    self:assertEquals('red', userboxr{['info-color'] = 'red'}.infoColor)
    self:assertEquals('blue', userboxr{['info-fc'] = 'blue'}.infoColor)
end

function suite:testUserboxrInfoColorOrder()
    self:assertEquals('red', userboxr{['info-color'] = 'red', ['info-fc'] = 'blue'}.infoColor)
end

function suite:testUserboxrInfoOtherParams()
    self:assertEquals(nil, userboxr{}.infoOtherParams)
    self:assertEquals('font-family:serif', userboxr{['info-other-param'] = 'font-family:serif'}.infoOtherParams)
    self:assertEquals('font-family:times', userboxr{['info-op'] = 'font-family:times'}.infoOtherParams)
end

function suite:testUserboxrInfoOtherParamsOrder()
    self:assertEquals('font-family:serif', userboxr{['info-other-param'] = 'font-family:serif', ['info-op'] = 'font-family:times'}.infoOtherParams)
end

--------------------------------------------------------------------------------
-- Userboxr id2 tests
--------------------------------------------------------------------------------

function suite:testUserboxrId2()
    self:assertEquals('id', userboxr{}.id2)
    self:assertEquals('Id text.', userboxr{logo = 'Id text.'}.id2)
    self:assertEquals('More id text.', userboxr{[3] = 'More id text.'}.id2)
    self:assertEquals('Even more id text.', userboxr{id = 'Even more id text.'}.id2)
end

function suite:testUserboxrId2Order()
    self:assertEquals('Id text.', userboxr{logo = 'Id text.', [3] = 'More id text.', id = 'Even more id text.'}.id2)
    self:assertEquals('More id text.', userboxr{[3] = 'More id text.', id = 'Even more id text.'}.id2)
end

function suite:testUserboxrShowId()
    self:assertEquals(true, userboxr{}.showId2)
end

function suite:testUserboxrId2Width()
    self:assertEquals('45px', userboxr{}.id2Width)
    self:assertEquals('50px', userboxr{['logo-width'] = '50'}.id2Width)
    self:assertEquals('55px', userboxr{['id-w'] = '55'}.id2Width)
end

function suite:testUserboxrId2WidthOrder()
    self:assertEquals('50px', userboxr{['logo-width'] = '50', ['id-w'] = '55'}.id2Width)
end

function suite:testUserboxrId2Height()
    self:assertEquals('45px', userboxr{}.id2Height)
    self:assertEquals('50px', userboxr{['logo-height'] = '50'}.id2Height)
    self:assertEquals('55px', userboxr{['id-h'] = '55'}.id2Height)
end

function suite:testUserboxrId2HeightOrder()
   self:assertEquals('50px', userboxr{['logo-height'] = '50', ['id-h'] = '55'}.id2Height)
end

function suite:testUserboxrId2BackgroundColor()
    self:assertEquals('#ddd', userboxr{}.id2BackgroundColor)
    self:assertEquals('red', userboxr{['logo-background'] = 'red'}.id2BackgroundColor)
    self:assertEquals('yellow', userboxr{[1] = 'yellow'}.id2BackgroundColor)
    self:assertEquals('blue', userboxr{['id-c'] = 'blue'}.id2BackgroundColor)
end

function suite:testUserboxrId2BackgroundColorOrder()
    self:assertEquals('red', userboxr{['logo-background'] = 'red', [1] = 'yellow', ['id-c'] = 'blue'}.id2BackgroundColor)
    self:assertEquals('yellow', userboxr{[1] = 'yellow', ['id-c'] = 'blue'}.id2BackgroundColor)
end

function suite:testUserboxrId2TextAlign()
    self:assertEquals('center', userboxr{}.id2TextAlign)
    self:assertEquals('right', userboxr{['id-a'] = 'right'}.id2TextAlign)
end

function suite:testUserboxrId2FontSize()
    self:assertEquals('14pt', userboxr{}.id2FontSize)
    self:assertEquals('16pt', userboxr{['logo-size'] = '16'}.id2FontSize)
    self:assertEquals('18pt', userboxr{[5] = '18'}.id2FontSize)
    self:assertEquals('20pt', userboxr{['id-s'] = '20'}.id2FontSize)
end

function suite:testUserboxrId2FontSizeOrder()
    self:assertEquals('16pt', userboxr{['logo-size'] = '16', [5] = '18', ['id-s'] = '20'}.id2FontSize)
    self:assertEquals('18pt', userboxr{[5] = '18', ['id-s'] = '20'}.id2FontSize)
end

function suite:testUserboxrId2Color()
    self:assertEquals('black', userboxr{}.id2Color)
    self:assertEquals('red', userboxr{['logo-color'] = 'red'}.id2Color)
    self:assertEquals('blue', userboxr{['id-fc'] = 'blue'}.id2Color)
end

function suite:testUserboxrId2ColorOrder()
    self:assertEquals('red', userboxr{['logo-color'] = 'red', ['id-fc'] = 'blue'}.id2Color)
end

function suite:testUserboxrId2Padding()
    self:assertEquals('0 0 0 1px', userboxr{}.id2Padding)
    self:assertEquals('1px 1px 1px 1px', userboxr{['logo-padding'] = '1px 1px 1px 1px'}.id2Padding)
    self:assertEquals('2px 2px 2px 2px', userboxr{['id-p'] = '2px 2px 2px 2px'}.id2Padding)
end

function suite:testUserboxrId2PaddingOrder()
    self:assertEquals('1px 1px 1px 1px', userboxr{['logo-padding'] = '1px 1px 1px 1px', ['id-p'] = '2px 2px 2px 2px'}.id2Padding)
end

function suite:testUserboxrId2LineHeight()
    self:assertEquals('1.25em', userboxr{}.id2LineHeight)
    self:assertEquals('1.5em', userboxr{['logo-line-height'] = '1.5em'}.id2LineHeight)
    self:assertEquals('1.75em', userboxr{['id-lh'] = '1.75em'}.id2LineHeight)
end

function suite:testUserboxrId2LineHeightOrder()
    self:assertEquals('1.5em', userboxr{['logo-line-height'] = '1.5em', ['id-lh'] = '1.75em'}.id2LineHeight)
end

function suite:testUserboxrId2OtherParams()
    self:assertEquals(nil, userboxr{}.id2OtherParams)
    self:assertEquals('font-family:serif', userboxr{['logo-other-param'] = 'font-family:serif'}.id2OtherParams)
    self:assertEquals('font-family:times', userboxr{['id-op'] = 'font-family:times'}.id2OtherParams)
end

function suite:testUserboxrId2OtherParamsOrder()
    self:assertEquals('font-family:serif', userboxr{['logo-other-param'] = 'font-family:serif', ['id-op'] = 'font-family:times'}.id2OtherParams)
end

--------------------------------------------------------------------------------
-- Categories tests
--------------------------------------------------------------------------------

local function runCategories(args, data, page)
	args = args or {}
	args.id = args.id or 'id'
	args.info = args.info or 'info'
	data = data or userbox(args)
	return categories(args, data, page)
end

local function mainspaceCats(args, data)
	return runCategories(args, data, 'Foo')
end

local function templateCats(args, data)
	return runCategories(args, data, 'Template:Edit protected')
end

local function userCats(args, data)
	return runCategories(args, data, 'User:Example')
end

local function templateSubpageCats(args, data)
	return runCategories(args, data, 'Template:Edit protected/sandbox')
end

local function userSubpageCats(args, data)
	return runCategories(args, data, 'User:Example/Lipsum')
end

local userBasepage = 'Example'
local templateBasepage = 'Edit protected'

function suite:testUserCategories()
	self:assertEquals('[[Category:Foobar]]', userCats{usercategory = 'Foobar'})
	self:assertEquals('[[Category:Foobar2]]', userCats{usercategory2 = 'Foobar2'})
	self:assertEquals('[[Category:Foobar3]]', userCats{usercategory3 = 'Foobar3'})
end

function suite:testTemplateCategories()
	self:assertEquals('[[Category:Foobar| ' .. templateBasepage .. ']]', templateCats{usercategory = 'Foobar'})
	self:assertEquals('[[Category:Foobar2| ' .. templateBasepage .. ']]', templateCats{usercategory2 = 'Foobar2'})
	self:assertEquals('[[Category:Foobar3| ' .. templateBasepage .. ']]', templateCats{usercategory3 = 'Foobar3'})
end

function suite:testMultipleUserCategories()
	self:assertEquals(
		'[[Category:Foobar]][[Category:Foobar2]][[Category:Foobar3]]',
		userCats{usercategory = 'Foobar', usercategory2 = 'Foobar2', usercategory3 = 'Foobar3'}
	)
end

function suite:testMultipleTemplateCategories()
	self:assertEquals(
		'[[Category:Foobar| ' .. templateBasepage .. ']]'
			.. '[[Category:Foobar2| ' .. templateBasepage .. ']]'
			.. '[[Category:Foobar3| ' .. templateBasepage .. ']]',
		templateCats{usercategory = 'Foobar', usercategory2 = 'Foobar2', usercategory3 = 'Foobar3'}
	)
end

function suite:testNocat()
	self:assertEquals('', userCats{nocat = 'true', usercategory = 'Foobar'})
	self:assertEquals('', templateCats{nocat = 'true', usercategory = 'Foobar'})
end

function suite:testNoCategories()
	self:assertEquals('', userCats{})
	self:assertEquals('', templateCats{})
end

function suite:testUserCategorySubpages()
	self:assertEquals('[[Category:Foobar]]', userSubpageCats{usercategory = 'Foobar'})
	self:assertEquals('[[Category:Foobar]]', userCats{usercategory = 'Foobar'})
end

function suite:testTemplateCategorySubpages()
	self:assertEquals('[[Category:Foobar| ' .. templateBasepage .. ']]', templateSubpageCats{usercategory = 'Foobar'})
	self:assertEquals('[[Category:Foobar| ' .. templateBasepage .. ']]', templateCats{usercategory = 'Foobar'})
end

function suite:testUserCategoryNoSubpages()
	self:assertEquals('', userSubpageCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
	self:assertEquals('[[Category:Foobar]]', userCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
end

function suite:testTemplateCategoryNoSubpages()
	self:assertEquals('', templateSubpageCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
	self:assertEquals('[[Category:Foobar| ' .. templateBasepage .. ']]', templateCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
end

function suite:testInfoContrastTemplate()
	self:assertEquals(
		'[[Category:Potentially illegible userboxes]]',
		templateCats{info = 'info', ['info-color'] = '#000000', ['info-background'] = '#000001'}
	)
	self:assertEquals(
		'',
		templateCats{info = 'info', ['info-color'] = '#000000', ['info-background'] = '#FFFFFF'}
	)
end

function suite:testInfoContrastUser()
	self:assertEquals(
		'',
		userCats{info = 'info', ['info-color'] = '#000000', ['info-background'] = '#000001'}
	)
	self:assertEquals(
		'',
		userCats{info = 'info', ['info-color'] = '#000000', ['info-background'] = '#FFFFFF'}
	)
end

function suite:testInfoContrastUserSubpage()
	self:assertEquals(
		'[[Category:Potentially illegible userboxes]]',
		userSubpageCats{info = 'info', ['info-color'] = '#000000', ['info-background'] = '#000001'}
	)
	self:assertEquals(
		'',
		userSubpageCats{info = 'info', ['info-color'] = '#000000', ['info-background'] = '#FFFFFF'}
	)
end

function suite:testIdContrast()
	self:assertEquals(
		'[[Category:Potentially illegible userboxes]]',
		templateCats{info = 'info', logo = 'id', ['logo-color'] = '#000000', ['logo-background'] = '#000001'}
	)
	self:assertEquals(
		'',
		templateCats{info = 'info', logo = 'id', ['logo-color'] = '#000000', ['logo-background'] = '#FFFFFF'}
	)
end

function suite:testMainspaceCategory()
	self:assertEquals('[[Category:Pages with misplaced templates]]', mainspaceCats{info = 'info'})
end

return suite