Difference between revisions of "Module:Userbox/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>Mr. Stradivarius
(add some more tests)
m (36 revisions imported)
 
(33 intermediate revisions by 6 users not shown)
Line 1: Line 1:
-- Unit tests for [[Module:Userbox]]. Click talk page to run tests.
+
-- 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 ubx = require('Module:Userbox')
 
local ScribuntoUnit = require('Module:ScribuntoUnit')
 
local ScribuntoUnit = require('Module:ScribuntoUnit')
 
local suite = ScribuntoUnit:new()
 
local suite = ScribuntoUnit:new()
  
local userbox = ubx.userbox
+
local userbox = ubx['userbox']
 
local userbox2 = ubx['userbox-2']
 
local userbox2 = ubx['userbox-2']
 
local userboxr = ubx['userbox-r']
 
local userboxr = ubx['userbox-r']
local render = ubx.render
+
local render = ubx._userbox
 +
local categories = ubx.categories
  
 
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
Line 31: Line 35:
 
local function renderId(data)
 
local function renderId(data)
 
data.showId = true
 
data.showId = true
 +
return render(data)
 +
end
 +
 +
local function renderId2(data)
 +
data.showId2 = true
 
return render(data)
 
return render(data)
 
end
 
end
Line 39: Line 48:
  
 
function suite:testRenderFloat()
 
function suite:testRenderFloat()
     self:assertStringContains(inTagAttr('float:right;', 'div', 'style'), render{float = 'right'})
+
     self:assertStringContains(inTagAttr('float:right', 'div', 'style'), render{float = 'right'})
 
end
 
end
  
Line 48: Line 57:
  
 
function suite:testRenderMargin()
 
function suite:testRenderMargin()
     self:assertStringContains(inTagAttr('margin:1px;', 'div', 'style'), render{})
+
     self:assertStringContains(inTagAttr('margin:1px', 'div', 'style'), render{})
 
end
 
end
  
 
function suite:testRenderWidth()
 
function suite:testRenderWidth()
     self:assertStringContains(inTagAttr('width:120px;', 'div', 'style'), render{width = '120px'})
+
     self:assertStringContains(inTagAttr('width:120px', 'div', 'style'), render{width = '120px'})
 
end
 
end
  
Line 64: Line 73:
  
 
function suite:testRenderBorderCollapse()
 
function suite:testRenderBorderCollapse()
     self:assertStringContains(inTagAttr('border-collapse:collapse;', 'table', 'style'), render{})
+
     self:assertStringContains(inTagAttr('border-collapse:collapse', 'table', 'style'), render{})
 
end
 
end
  
 
function suite:testRenderBorderCollapse()
 
function suite:testRenderBorderCollapse()
     self:assertStringContains(inTagAttr('width:120px;', 'table', 'style'), render{width = '120px'})
+
     self:assertStringContains(inTagAttr('width:120px', 'table', 'style'), render{width = '120px'})
 
end
 
end
  
 
function suite:testRenderTableWidth()
 
function suite:testRenderTableWidth()
     self:assertStringContains(inTagAttr('width:120px;', 'table', 'style'), render{width = '120px'})
+
     self:assertStringContains(inTagAttr('width:120px', 'table', 'style'), render{width = '120px'})
 
end
 
end
  
 
function suite:testRenderMarginBottom()
 
function suite:testRenderMarginBottom()
     self:assertStringContains(inTagAttr('margin%-bottom:0;', 'table', 'style'), render{})
+
     self:assertStringContains(inTagAttr('margin%-bottom:0', 'table', 'style'), render{})
 
end
 
end
  
 
function suite:testRenderBackgroundColor()
 
function suite:testRenderBackgroundColor()
     self:assertStringContains(inTagAttr('background:red;', 'table', 'style'), render{backgroundColor = 'red'})
+
     self:assertStringContains(inTagAttr('background:red', 'table', 'style'), render{backgroundColor = 'red'})
 
end
 
end
 +
 +
--------------------------------------------------------------------------------
 +
-- Render id tests
 +
--------------------------------------------------------------------------------
  
 
function suite:testRenderIdBorder()
 
function suite:testRenderIdBorder()
     self:assertStringContains(inTagAttr('border:0;', 'th', 'style'), renderId{})
+
     self:assertStringContains(inTagAttr('border:0', 'th', 'style'), renderId{})
 
end
 
end
  
 
function suite:testRenderIdWidth()
 
function suite:testRenderIdWidth()
     self:assertStringContains(inTagAttr('width:50px;', 'th', 'style'), renderId{idWidth = '50px'})
+
     self:assertStringContains(inTagAttr('width:50px', 'th', 'style'), renderId{idWidth = '50px'})
 
end
 
end
  
 
function suite:testRenderIdHeight()
 
function suite:testRenderIdHeight()
     self:assertStringContains(inTagAttr('height:50px;', 'th', 'style'), renderId{idHeight = '50px'})
+
     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
 
end
  
 
return suite
 
return suite

Latest revision as of 05:05, 30 September 2020

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