มอดูล:Userbox/testcases

--------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Unit tests for Module:Userbox/sandbox. Click talk page to run tests.
local ubx = require('Module:Userbox/sandbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local userbox = ubx'_userbox'
local userbox2 = ubx'_userbox-2'
local userboxr = ubx'_userbox-r'
local render = ubx.render
local categories = ubx.categories
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function inTag(s, tag)
	-- Makes a pattern that tests whether s is inside a given html tag.
	return '-' .. 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', 'td', 'style'), renderId{})
end
function suite:testRenderIdWidth()
self:assertStringContains(inTagAttr('width:50px', 'td', 'style'), renderId{idWidth = '50px'})
end
function suite:testRenderIdHeight()
self:assertStringContains(inTagAttr('height:50px', 'td', 'style'), renderId{idHeight = '50px'})
end
function suite:testRenderIdBackgroundColor()
self:assertStringContains(inTagAttr('background:red', 'td', 'style'), renderId{idBackgroundColor = 'red'})
end
function suite:testRenderIdTextAlign()
self:assertStringContains(inTagAttr('text%-align:center', 'td', 'style'), renderId{idTextAlign = 'center'})
end
function suite:testRenderIdFontSize()
self:assertStringContains(inTagAttr('font%-size:16pt', 'td', 'style'), renderId{idFontSize = '16pt'})
end
function suite:testRenderIdColor()
self:assertStringContains(inTagAttr('color:blue', 'td', 'style'), renderId{idColor = 'blue'})
end
function suite:testRenderIdPadding()
self:assertStringContains(inTagAttr('padding:3px', 'td', 'style'), renderId{idPadding = '3px'})
end
function suite:testRenderIdLineHeight()
self:assertStringContains(inTagAttr('line%-height:1.5em', 'td', 'style'), renderId{idLineHeight = '1.5em'})
end
function suite:testRenderIdVerticalAlign()
self:assertStringContains(inTagAttr('vertical%-align:middle', 'td', 'style'), renderId{})
end
function suite:testRenderIdOtherParams()
self:assertStringContains(inTagAttr('font%-family:serif', 'td', 'style'), renderId{idOtherParams = 'font-family:serif'})
end
function suite:testRenderIdClass()
self:assertStringContains(inTagAttr('foobar', 'td', 'class'), renderId{idClass = 'foobar'})
end
function suite:testRenderId()
self:assertStringContains('->Id text.', 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('->Info text.', render{info = 'Info text.'})
end
--------------------------------------------------------------------------------
-- Render id2 tests
--------------------------------------------------------------------------------
function suite:testRenderId2Border()
self:assertStringContains(inTagAttr('border:0', 'td', 'style'), renderId2{})
end
function suite:testRenderId2Width()
self:assertStringContains(inTagAttr('width:50px', 'td', 'style'), renderId2{id2Width = '50px'})
end
function suite:testRenderId2Height()
self:assertStringContains(inTagAttr('height:50px', 'td', 'style'), renderId2{id2Height = '50px'})
end
function suite:testRenderId2BackgroundColor()
self:assertStringContains(inTagAttr('background:red', 'td', 'style'), renderId2{id2BackgroundColor = 'red'})
end
function suite:testRenderId2TextAlign()
self:assertStringContains(inTagAttr('text%-align:center', 'td', 'style'), renderId2{id2TextAlign = 'center'})
end
function suite:testRenderId2FontSize()
self:assertStringContains(inTagAttr('font%-size:16pt', 'td', 'style'), renderId2{id2FontSize = '16pt'})
end
function suite:testRenderId2Color()
self:assertStringContains(inTagAttr('color:blue', 'td', 'style'), renderId2{id2Color = 'blue'})
end
function suite:testRenderId2Padding()
self:assertStringContains(inTagAttr('padding:3px', 'td', 'style'), renderId2{id2Padding = '3px'})
end
function suite:testRenderId2LineHeight()
self:assertStringContains(inTagAttr('line%-height:1.5em', 'td', 'style'), renderId2{id2LineHeight = '1.5em'})
end
function suite:testRenderId2VerticalAlign()
self:assertStringContains(inTagAttr('vertical%-align:middle', 'td', 'style'), renderId2{})
end
function suite:testRenderId2OtherParams()
self:assertStringContains(inTagAttr('font%-family:serif', 'td', 'style'), renderId2{id2OtherParams = 'font-family:serif'})
end
function suite:testRenderId2()
self:assertStringContains('->Id2 text.', 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)
self:assertEquals('right', userbox{'จัดลอย' = '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)
self:assertEquals('2px', userbox{'ความกว้างขอบ' = '2'}.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)
self:assertEquals('red', userbox{'สีขอบ' = 'red'}.borderColor)
end
function suite:testUserboxWidth()
self:assertEquals('238px', userbox{}.width)
self:assertEquals('236px', userbox{'border-s' = '2'}.width)
self:assertEquals('236px', userbox{'ความกว้างขอบ' = '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)
self:assertEquals('red', userbox{'สีพื้นหลัง' = 'red'}.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)
self:assertEquals('ข้อความภาษาไทยตัวอย่าง', userbox{id = 'ข้อความภาษาไทยตัวอย่าง'}.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('50px', userbox{'ความกว้างรูป' = '50'}.idWidth)
self:assertEquals('55px', userbox{'id-w' = '55'}.idWidth)
end
function suite:testUserboxIdHeight()
self:assertEquals('45px', userbox{}.idHeight)
self:assertEquals('50px', userbox{'logo-height' = '50'}.idHeight)
self:assertEquals('50px', userbox{'ความสูงรูป' = '50'}.idHeight)
self:assertEquals('55px', userbox{'id-h' = '55'}.idHeight)
end
function suite:testUserboxIdBackgroundColor()
self:assertEquals('#ddd', userbox{}.idBackgroundColor)
self:assertEquals('red', userbox{'logo-background' = 'red'}.idBackgroundColor)
self:assertEquals('red', userbox{'สีพื้นหลังรูป' = 'red'}.idBackgroundColor)
self:assertEquals('yellow', userbox{1 = 'yellow'}.idBackgroundColor)
self:assertEquals('blue', userbox{'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('16pt', userbox{'ขนาดฟอนต์รูป' = '16'}.idFontSize)
self:assertEquals('18pt', userbox{5 = '18'}.idFontSize)
self:assertEquals('20pt', userbox{'id-s' = '20'}.idFontSize)
end
function suite:testUserboxIdColor()
self:assertEquals('black', userbox{}.idColor)
self:assertEquals('red', userbox{'logo-color' = 'red'}.idColor)
self:assertEquals('red', userbox{'สีฟอนต์รูป' = 'red'}.idColor)
self:assertEquals('blue', userbox{'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('1px 1px 1px 1px', userbox{'ระยะห่างรูป' = '1px 1px 1px 1px'}.idPadding)
self:assertEquals('2px 2px 2px 2px', userbox{'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.5em', userbox{'ระยะบรรทัดรูป' = '1.5em'}.idLineHeight)
self:assertEquals('1.75em', userbox{'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:serif', userbox{'ค่าอื่นของรูป' = 'font-family:serif'}.idOtherParams)
self:assertEquals('font-family:times', userbox{'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("", userbox{}.info)
self:assertEquals('Info text.', userbox{info = 'Info text.'}.info)
self:assertEquals('Info text.', userbox{'ข้อความ' = 'Info text.'}.info)
self:assertEquals('More info text.', userbox{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('10pt', userbox{'ขนาดฟอนต์ข้อความ' = '10'}.infoFontSize)
self:assertEquals('12pt', userbox{'info-s' = '12'}.infoFontSize)
end
function suite:testUserboxInfoHeight()
self:assertEquals('45px', userbox{}.infoHeight)
self:assertEquals('50px', userbox{'logo-height' = '50'}.infoHeight)
self:assertEquals('50px', userbox{'ความสูงโลโก้' = '50'}.infoHeight)
self:assertEquals('55px', userbox{'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('1px 1px 1px 1px', userbox{'ระยะห่างข้อความ' = '1px 1px 1px 1px'}.infoPadding)
self:assertEquals('2px 2px 2px 2px', userbox{'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.5em', userbox{'ระยะบรรทัดข้อความ' = '1.5em'}.infoLineHeight)
self:assertEquals('1.75em', userbox{'info-lh' = '1.75em'}.infoLineHeight)
end
function suite:testUserboxInfoColor()
self:assertEquals('black', userbox{}.infoColor)
self:assertEquals('red', userbox{'info-color' = 'red'}.infoColor)
self:assertEquals('red', userbox{'สีฟอนต์ข้อความ' = 'red'}.infoColor)
self:assertEquals('blue', userbox{'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:serif', userbox{'ค่าอื่นของข้อความ' = 'font-family:serif'}.infoOtherParams)
self:assertEquals('font-family:times', userbox{'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: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: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
--------------------------------------------------------------------------------
-- Userbox2 id tests
--------------------------------------------------------------------------------
function suite:testUserbox2Id()
self:assertEquals('id1', userbox2{}.id)
self:assertEquals('Id text.', userbox2{logo = 'Id text.'}.id)
self:assertEquals('Id text.', userbox2{'รูป' = '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: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: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("", userbox2{}.info)
self:assertEquals('Info text.', userbox2{4 = 'Info text.'}.info)
self:assertEquals('More info text.', userbox2{info = 'More info text.'}.info)
self:assertEquals('More info text.', userbox2{'ข้อความ' = '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: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: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: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('2px', userboxr{'ความกว้างขอบ' = '2'}.borderWidth)
self:assertEquals('3px', userboxr{'border-s' = '3'}.borderWidth)
end
function suite:testUserboxrBorderColor()
self:assertEquals('#999', userboxr{}.borderColor)
self:assertEquals('red', userboxr{'border-color' = 'red'}.borderColor)
self:assertEquals('red', userboxr{'สีขอบ' = '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: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('red', userboxr{'สีพื้นหลัง' = 'red'}.backgroundColor)
self:assertEquals('yellow', userboxr{2 = 'yellow'}.backgroundColor)
self:assertEquals('blue', userboxr{'info-c' = 'blue'}.backgroundColor)
end
--------------------------------------------------------------------------------
-- Userboxr info tests
--------------------------------------------------------------------------------
function suite:testUserboxrInfo()
self:assertEquals("", userboxr{}.info)
self:assertEquals('Info text.', userboxr{info = 'Info text.'}.info)
self:assertEquals('Info text.', userboxr{'ข้อความ' = 'Info text.'}.info)
self:assertEquals('More info text.', userboxr{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:testUserboxrInfoFontSize()
self:assertEquals('8pt', userboxr{}.infoFontSize)
self:assertEquals('10pt', userboxr{'info-size' = '10'}.infoFontSize)
self:assertEquals('10pt', userboxr{'ขนาดฟอนต์ข้อความ' = '10'}.infoFontSize)
self:assertEquals('12pt', userboxr{'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('1px 1px 1px 1px', userboxr{'ระยะห่างข้อความ' = '1px 1px 1px 1px'}.infoPadding)
self:assertEquals('2px 2px 2px 2px', userboxr{'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.5em', userboxr{'ระยะบรรทัดข้อความ' = '1.5em'}.infoLineHeight)
self:assertEquals('1.75em', userboxr{'info-lh' = '1.75em'}.infoLineHeight)
end
function suite:testUserboxrInfoColor()
self:assertEquals('black', userboxr{}.infoColor)
self:assertEquals('red', userboxr{'info-color' = 'red'}.infoColor)
self:assertEquals('red', userboxr{'สีฟอนต์ข้อความ' = 'red'}.infoColor)
self:assertEquals('blue', userboxr{'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:serif', userboxr{'ค่าอื่นของข้อความ' = 'font-family:serif'}.infoOtherParams)
self:assertEquals('font-family:times', userboxr{'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('Id text.', userboxr{'รูป' = '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: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: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:testUserboxrId2BackgroundColor()
self:assertEquals('#ddd', userboxr{}.id2BackgroundColor)
self:assertEquals('red', userboxr{'logo-background' = 'red'}.id2BackgroundColor)
self:assertEquals('red', userboxr{'สีพื้นหลังรูป' = 'red'}.id2BackgroundColor)
self:assertEquals('yellow', userboxr{1 = 'yellow'}.id2BackgroundColor)
self:assertEquals('blue', userboxr{'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('16pt', userboxr{'ขนาดฟอนต์รูป' = '16'}.id2FontSize)
self:assertEquals('18pt', userboxr{5 = '18'}.id2FontSize)
self:assertEquals('20pt', userboxr{'id-s' = '20'}.id2FontSize)
end
function suite:testUserboxrId2Color()
self:assertEquals('black', userboxr{}.id2Color)
self:assertEquals('red', userboxr{'logo-color' = 'red'}.id2Color)
self:assertEquals('red', userboxr{'สีฟอนต์รูป' = 'red'}.id2Color)
self:assertEquals('blue', userboxr{'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('1px 1px 1px 1px', userboxr{'ระยะห่างรูป' = '1px 1px 1px 1px'}.id2Padding)
self:assertEquals('2px 2px 2px 2px', userboxr{'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.5em', userboxr{'ระยะบรรทัดรูป' = '1.5em'}.id2LineHeight)
self:assertEquals('1.75em', userboxr{'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:serif', userboxr{'ค่าอื่นของรูป' = 'font-family:serif'}.id2OtherParams)
self:assertEquals('font-family:times', userboxr{'id-op' = 'font-family:times'}.id2OtherParams)
end
--------------------------------------------------------------------------------
-- Categories tests
--------------------------------------------------------------------------------
local function mainspaceCats(args)
	return categories(args, 'Foo')
end
local function templateCats(args)
	return categories(args, 'Edit fully-protected')
end
local function userCats(args)
	return categories(args, 'ผู้ใช้:ตัวอย่าง')
end
local function templateSubpageCats(args)
	return categories(args, 'Edit fully-protected/sandbox')
end
local function userSubpageCats(args)
	return categories(args, 'ผู้ใช้:ตัวอย่าง/Lipsum')
end
local userBasepage = 'ตัวอย่าง'
local templateBasepage = 'Edit fully-protected'
function suite:testUserCategories()
	self:assertEquals('หมวดหมู่:Foobar', userCats{usercategory = 'Foobar'})
	self:assertEquals('หมวดหมู่:Foobar2', userCats{usercategory2 = 'Foobar2'})
	self:assertEquals('หมวดหมู่:Foobar3', userCats{usercategory3 = 'Foobar3'})
end
function suite:testTemplateCategories()
	self:assertEquals(' ' .. templateBasepage .. , templateCats{usercategory = 'Foobar'})
	self:assertEquals(' ' .. templateBasepage .. , templateCats{usercategory2 = 'Foobar2'})
	self:assertEquals(' ' .. templateBasepage .. , templateCats{usercategory3 = 'Foobar3'})
end
function suite:testMultipleUserCategories()
	self:assertEquals(
		'หมวดหมู่:Foobarหมวดหมู่:Foobar2หมวดหมู่:Foobar3',
		userCats{usercategory = 'Foobar', usercategory2 = 'Foobar2', usercategory3 = 'Foobar3'}
	)
end
function suite:testMultipleTemplateCategories()
	self:assertEquals(
		' ' .. templateBasepage .. 
			.. ' ' .. templateBasepage .. 
			.. ' ' .. templateBasepage .. ,
		templateCats{usercategory = 'Foobar', usercategory2 = 'Foobar2', usercategory3 = 'Foobar3'}
	)
end
function suite:testNocat()
	self:assertEquals(nil, userCats{nocat = 'true', usercategory = 'Foobar'})
	self:assertEquals(nil, templateCats{nocat = 'true', usercategory = 'Foobar'})
end
function suite:testNoCategories()
	self:assertEquals(, userCats{})
	self:assertEquals(, templateCats{})
end
function suite:testUserCategorySubpages()
	self:assertEquals('หมวดหมู่:Foobar', userSubpageCats{usercategory = 'Foobar'})
	self:assertEquals('หมวดหมู่:Foobar', userCats{usercategory = 'Foobar'})
end
function suite:testTemplateCategorySubpages()
	self:assertEquals(' ' .. templateBasepage .. , templateSubpageCats{usercategory = 'Foobar'})
	self:assertEquals(' ' .. templateBasepage .. , templateCats{usercategory = 'Foobar'})
end
function suite:testUserCategoryNoSubpages()
	self:assertEquals(nil, userSubpageCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
	self:assertEquals('หมวดหมู่:Foobar', userCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
end
function suite:testTemplateCategoryNoSubpages()
	self:assertEquals(nil, templateSubpageCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
	self:assertEquals(' ' .. templateBasepage .. , templateCats{usercategory = 'Foobar', notcatsubpages = 'yes'})
end
function suite:assertHasContrastCat(args, title, yes)
	local oldTitle = mw.title.getCurrentTitle
	mw.title.getCurrentTitle = function() return mw.title.new(title) end
	local data = userbox(args)
	local output = render(data)
	mw.title.getCurrentTitle = oldTitle
	if yes then
		self:assertStringContains("หมวดหมู่:กล่องผู้ใช้ที่มีค่าความต่างสีต่ำ", output, true)
	else
		self:assertNotStringContains("หมวดหมู่:กล่องผู้ใช้ที่มีค่าความต่างสีต่ำ", output, true)
	end
end
function suite:testInfoContrastTemplate()
	self:assertHasContrastCat({info = 'info', 'info-color' = '#000000', 'info-background' = '#000001'}, "แม่แบบ:Foo", true)
	self:assertHasContrastCat({info = 'info', 'info-color' = '#000000', 'info-background' = '#FFFFFF'}, "แม่แบบ:Foo", false)
end
function suite:testInfoContrastUser()
	self:assertHasContrastCat({info = 'info', 'info-color' = '#000000', 'info-background' = '#000001'}, "ผู้ใช้:Foo", false)
	self:assertHasContrastCat({info = 'info', 'info-color' = '#000000', 'info-background' = '#FFFFFF'}, "ผู้ใช้:Foo", false)
end
function suite:testInfoContrastUserSubpage()
	self:assertHasContrastCat({info = 'info', 'info-color' = '#000000', 'info-background' = '#000001'}, "ผู้ใช้:Foo/bar", true)
	self:assertHasContrastCat({info = 'info', 'info-color' = '#000000', 'info-background' = '#FFFFFF'}, "ผู้ใช้:Foo/bar", false)
end
function suite:testIdContrastTemplate()
	self:assertHasContrastCat({info = 'info', logo = 'id', 'logo-color' = '#000000', 'logo-background' = '#000001'}, "แม่แบบ:Foo", true)
	self:assertHasContrastCat({info = 'info', logo = 'id', 'logo-color' = '#000000', 'logo-background' = '#FFFFFF'}, "แม่แบบ:Foo", false)
end
function suite:testIdContrastUser()
	self:assertHasContrastCat({info = 'info', logo = 'id', 'logo-color' = '#000000', 'logo-background' = '#000001'}, "ผู้ใช้:Foo", false)
	self:assertHasContrastCat({info = 'info', logo = 'id', 'logo-color' = '#000000', 'logo-background' = '#FFFFFF'}, "ผู้ใช้:Foo", false)
end
function suite:testIdContrastUserSubpage()
	self:assertHasContrastCat({info = 'info', logo = 'id', 'logo-color' = '#000000', 'logo-background' = '#000001'}, "ผู้ใช้:Foo/bar", true)
	self:assertHasContrastCat({info = 'info', logo = 'id', 'logo-color' = '#000000', 'logo-background' = '#FFFFFF'}, "ผู้ใช้:Foo/bar", false)
end
function suite:testMainspaceCategory()
	self:assertEquals('หมวดหมู่:หน้าที่มีแม่แบบที่ผิดเนมสเปซ', mainspaceCats{info = 'info'})
end
return suite