Module:Userbox/testcases
< Module:Userbox
Jump to navigation
Jump to search
Revision as of 06:15, 6 January 2015 by blackwiki>Voidxor (Rm closing semicolon for CSS property in the render tests, because a semicolon is not required for the last CSS property within an HTML style attribute, and apparently no longer rendered (causing numerous false positives))
Documentation for this module may be created at Module:Userbox/testcases/doc
-- Unit tests for [[Module:Userbox]]. 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.render
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("''info''", 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("''info''", 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("''info''", 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 templateCats(args)
return categories(args, 'Template:Edit protected')
end
local function userCats(args)
return categories(args, 'User:Example')
end
local function templateSubpageCats(args)
return categories(args, 'Template:Edit protected/sandbox')
end
local function userSubpageCats(args)
return categories(args, '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(nil, userCats{nocat = 'true', usercategory = 'Foobar'})
self:assertEquals(nil, templateCats{nocat = 'true', usercategory = 'Foobar'})
end
function suite:testNoCategories()
self:assertEquals(nil, userCats{})
self:assertEquals(nil, 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(nil, userSubpageCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
self:assertEquals('[[Category:Foobar]]', userCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
end
function suite:testTemplateCategoryNoSubpages()
self:assertEquals(nil, templateSubpageCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
self:assertEquals('[[Category:Foobar| ' .. templateBasepage .. ']]', templateCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
end
return suite