<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASide_box%2Ftestcases</id>
	<title>Module:Side box/testcases - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASide_box%2Ftestcases"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Side_box/testcases&amp;action=history"/>
	<updated>2026-05-24T14:10:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Side_box/testcases&amp;diff=146748&amp;oldid=prev</id>
		<title>imported&gt;Mr. Stradivarius: add a newlines test</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Side_box/testcases&amp;diff=146748&amp;oldid=prev"/>
		<updated>2014-06-02T07:01:45Z</updated>

		<summary type="html">&lt;p&gt;add a newlines test&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local mSideBox = require(&amp;#039;Module:Side box&amp;#039;)&lt;br /&gt;
local ScribuntoUnit = require(&amp;#039;Module:ScribuntoUnit&amp;#039;)&lt;br /&gt;
local suite = ScribuntoUnit:new()&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
function suite:assertArrayContainsString(expected, t)&lt;br /&gt;
	-- This only works on arrays that only contain strings.&lt;br /&gt;
	local sep = &amp;#039;|SEPARATOR|&amp;#039;&lt;br /&gt;
	local concatenated = sep .. table.concat(t, sep) .. sep&lt;br /&gt;
	self:assertStringContains(sep .. expected .. sep, concatenated, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:assertNotArrayContainsString(expected, t)&lt;br /&gt;
	-- This only works on arrays that only contain strings.&lt;br /&gt;
	local sep = &amp;#039;|SEPARATOR|&amp;#039;&lt;br /&gt;
	local concatenated = sep .. table.concat(t, sep) .. sep&lt;br /&gt;
	self:assertNotStringContains(sep .. expected .. sep, concatenated, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Test makeData&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function suite:testDataBlank()&lt;br /&gt;
	self:assertEquals(&amp;#039;table&amp;#039;, type(mSideBox.makeData{}))&lt;br /&gt;
	self:assertEquals(&amp;#039;table&amp;#039;, type(mSideBox.makeData{}.classes))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataMetadata()&lt;br /&gt;
	suite:assertNotArrayContainsString(&amp;#039;metadata&amp;#039;, mSideBox.makeData{metadata = &amp;#039;no&amp;#039;}.classes)&lt;br /&gt;
	suite:assertNotArrayContainsString(&amp;#039;metadata&amp;#039;, mSideBox.makeData{metadata = false}.classes)&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;metadata&amp;#039;, mSideBox.makeData{}.classes)&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;metadata&amp;#039;, mSideBox.makeData{metadata = &amp;#039;yes&amp;#039;}.classes)&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;metadata&amp;#039;, mSideBox.makeData{metadata = true}.classes)&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;metadata&amp;#039;, mSideBox.makeData{metadata = &amp;#039;foo&amp;#039;}.classes)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataLeft()&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;mbox-small&amp;#039;, mSideBox.makeData{}.classes)&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;mbox-small&amp;#039;, mSideBox.makeData{position = &amp;#039;right&amp;#039;}.classes)&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;mbox-small&amp;#039;, mSideBox.makeData{position = &amp;#039;asdf&amp;#039;}.classes)&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;mbox-small-left&amp;#039;, mSideBox.makeData{position = &amp;#039;left&amp;#039;}.classes)&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;mbox-small-left&amp;#039;, mSideBox.makeData{position = &amp;#039;Left&amp;#039;}.classes)&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;mbox-small-left&amp;#039;, mSideBox.makeData{position = &amp;#039;LEFT&amp;#039;}.classes)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataClass()&lt;br /&gt;
	suite:assertArrayContainsString(&amp;#039;some-class&amp;#039;, mSideBox.makeData{class = &amp;#039;some-class&amp;#039;}.classes)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataStyle()&lt;br /&gt;
	suite:assertEquals(&amp;#039;foo:bar&amp;#039;, mSideBox.makeData{style = &amp;#039;foo:bar&amp;#039;}.style)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataTextstyle()&lt;br /&gt;
	suite:assertEquals(&amp;#039;foo:bar&amp;#039;, mSideBox.makeData{textstyle = &amp;#039;foo:bar&amp;#039;}.textstyle)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataAbove()&lt;br /&gt;
	suite:assertEquals(&amp;#039;some above text&amp;#039;, mSideBox.makeData{above = &amp;#039;some above text&amp;#039;}.above)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataAbovestyle()&lt;br /&gt;
	suite:assertEquals(&amp;#039;foo:bar&amp;#039;, mSideBox.makeData{abovestyle = &amp;#039;foo:bar&amp;#039;}.abovestyle)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataText()&lt;br /&gt;
	suite:assertEquals(&amp;#039;some text&amp;#039;, mSideBox.makeData{text = &amp;#039;some text&amp;#039;}.text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataImage()&lt;br /&gt;
	suite:assertEquals(&amp;#039;[[File:Example.png|thumb]]&amp;#039;, mSideBox.makeData{image = &amp;#039;[[File:Example.png|thumb]]&amp;#039;}.image)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataImageNone()&lt;br /&gt;
	suite:assertEquals(nil, mSideBox.makeData{image = &amp;#039;none&amp;#039;}.image)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataImageright()&lt;br /&gt;
	suite:assertEquals(&amp;#039;[[File:Example.png|thumb]]&amp;#039;, mSideBox.makeData{imageright = &amp;#039;[[File:Example.png|thumb]]&amp;#039;}.imageright)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testDataBelow()&lt;br /&gt;
	suite:assertEquals(&amp;#039;some below text&amp;#039;, mSideBox.makeData{below = &amp;#039;some below text&amp;#039;}.below)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Test renderSidebox&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function suite.cleanPattern(s)&lt;br /&gt;
	-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.&lt;br /&gt;
	s = s:gsub(&amp;#039;([%(%)%%%.%[%]%*%+%-%?%^%$])&amp;#039;, &amp;#039;%%%1&amp;#039;)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite.makeHtmlPattern(tagTables)&lt;br /&gt;
	-- Makes a pattern for use with assertStringContains.&lt;br /&gt;
	-- The input is an array of tables, each of which corresponds to an opening tag,&lt;br /&gt;
	-- a piece of wikitext, or a closing tag.&lt;br /&gt;
	-- &lt;br /&gt;
	-- It is also possible to use a single table as an input, rather than an&lt;br /&gt;
	-- array of tables.&lt;br /&gt;
	--&lt;br /&gt;
	-- Opening tags:&lt;br /&gt;
	-- {tag = &amp;#039;tr&amp;#039;}&lt;br /&gt;
	-- {tag = &amp;#039;table&amp;#039;, attr = &amp;#039;class&amp;#039;, value = &amp;#039;mbox-image&amp;#039;}&lt;br /&gt;
	-- {tag = &amp;#039;table&amp;#039;, attr = &amp;#039;style&amp;#039;, property = &amp;#039;text-align&amp;#039;, value = &amp;#039;center&amp;#039;}&lt;br /&gt;
	-- {tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;3&amp;#039;}&lt;br /&gt;
	-- Properties and values are escaped so that hyphens etc. will work in patterns.&lt;br /&gt;
	--&lt;br /&gt;
	-- Wikitext:&lt;br /&gt;
	-- {wikitext = &amp;#039;Foo&amp;#039;}&lt;br /&gt;
	--&lt;br /&gt;
	-- Closing tags:&lt;br /&gt;
	-- {tag = &amp;#039;table&amp;#039;, close = true}&lt;br /&gt;
	--&lt;br /&gt;
	-- For Example, this code:&lt;br /&gt;
	-- suite.makeHtmlPattern{&lt;br /&gt;
	--   {tag = &amp;#039;div&amp;#039;, attr = &amp;#039;style&amp;#039;, property = &amp;#039;text-align&amp;#039;, value = &amp;#039;center&amp;#039;},&lt;br /&gt;
	--   {wikitext = &amp;#039;Foo&amp;#039;},&lt;br /&gt;
	--   {tag = &amp;#039;span&amp;#039;},&lt;br /&gt;
	--   {wikitext = &amp;#039;Bar&amp;#039;},&lt;br /&gt;
	--   {tag = &amp;#039;span&amp;#039;, close = true},&lt;br /&gt;
	--   {tag = &amp;#039;div&amp;#039;, close = true}&lt;br /&gt;
	-- }&lt;br /&gt;
	--&lt;br /&gt;
	-- Produces this:&lt;br /&gt;
	-- &amp;lt;div[^&amp;gt;]-style=&amp;quot;[^&amp;quot;&amp;gt;]-text%-align%s*:%s*center[^&amp;quot;&amp;gt;]-&amp;quot;[^&amp;gt;]-&amp;gt;[^&amp;lt;]-Foo[^&amp;lt;]-&amp;lt;span[^&amp;gt;]-&amp;gt;[^&amp;lt;]-Bar[^&amp;lt;]-&amp;lt;/span&amp;gt;[^&amp;lt;]-&amp;lt;/div&amp;gt;&lt;br /&gt;
	if type(tagTables) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
		error(&amp;#039;invalid input to makeHtmlPattern&amp;#039;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if #tagTables == 0 then&lt;br /&gt;
		-- Table may be passed as a single tag table.&lt;br /&gt;
		tagTables = {tagTables}&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, t in ipairs(tagTables) do&lt;br /&gt;
		if t.tag then&lt;br /&gt;
			if t.close then&lt;br /&gt;
				ret[#ret + 1] = string.format(&amp;#039;&amp;lt;/%s&amp;gt;&amp;#039;, t.tag)&lt;br /&gt;
			elseif t.attr and t.property and t.value then&lt;br /&gt;
				ret[#ret + 1] = string.format(&lt;br /&gt;
					&amp;#039;&amp;lt;%s[^&amp;gt;]-%s=&amp;quot;[^&amp;quot;&amp;gt;]-%s%%s*:%%s*%s[^&amp;quot;&amp;gt;]-&amp;quot;[^&amp;gt;]-&amp;gt;&amp;#039;,&lt;br /&gt;
					t.tag,&lt;br /&gt;
					t.attr,&lt;br /&gt;
					suite.cleanPattern(t.property),&lt;br /&gt;
					suite.cleanPattern(t.value)&lt;br /&gt;
				)&lt;br /&gt;
			elseif t.attr and t.value then&lt;br /&gt;
				ret[#ret + 1] = string.format(&lt;br /&gt;
					&amp;#039;&amp;lt;%s[^&amp;gt;]-%s=&amp;quot;[^&amp;quot;&amp;gt;]-%s[^&amp;quot;&amp;gt;]-&amp;quot;[^&amp;gt;]-&amp;gt;&amp;#039;,&lt;br /&gt;
					t.tag,&lt;br /&gt;
					t.attr,&lt;br /&gt;
					suite.cleanPattern(t.value)&lt;br /&gt;
				)&lt;br /&gt;
			else&lt;br /&gt;
				ret[#ret + 1] = string.format(&amp;#039;&amp;lt;%s[^&amp;gt;]-&amp;gt;&amp;#039;, t.tag)&lt;br /&gt;
			end&lt;br /&gt;
		elseif t.wikitext then&lt;br /&gt;
			ret[#ret + 1] = suite.cleanPattern(t.wikitext)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret, &amp;#039;[^&amp;lt;]-&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderDefaultStructure()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		&amp;#039;^&amp;#039; .. suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;, close = true}&lt;br /&gt;
		} .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		mSideBox.renderSidebox{},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderAboveStructure()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		&amp;#039;^&amp;#039; .. suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;2&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;, close = true}&lt;br /&gt;
		} .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		mSideBox.renderSidebox{above = &amp;#039;some text&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderBelowStructure()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		&amp;#039;^&amp;#039; .. suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;2&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;, close = true}&lt;br /&gt;
		} .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		mSideBox.renderSidebox{below = &amp;#039;some below text&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderAboveAndBelowStructure()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		&amp;#039;^&amp;#039; .. suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;2&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;2&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;, close = true}&lt;br /&gt;
		} .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		mSideBox.renderSidebox{above = &amp;#039;some above text&amp;#039;, below = &amp;#039;some below text&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderNewlines()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		&amp;#039;^&amp;lt;table[^&amp;gt;]-&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;\n&amp;lt;tr&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;&amp;lt;td colspan=&amp;quot;2&amp;quot;[^&amp;gt;]-&amp;gt;[^&amp;lt;]-&amp;lt;/td&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;&amp;lt;/tr&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;\n&amp;lt;tr&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;\n&amp;lt;td[^&amp;gt;]-&amp;gt;[^&amp;lt;]-&amp;lt;/td&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;\n&amp;lt;td[^&amp;gt;]-&amp;gt;[^&amp;lt;]-&amp;lt;/td&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;&amp;lt;/tr&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;\n&amp;lt;tr&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;&amp;lt;td colspan=&amp;quot;2&amp;quot;[^&amp;gt;]-&amp;gt;[^&amp;lt;]-&amp;lt;/td&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;&amp;lt;/tr&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;&amp;lt;/table&amp;gt;$&amp;#039;,&lt;br /&gt;
		mSideBox.renderSidebox{above = &amp;#039;some above text&amp;#039;, below = &amp;#039;some below text&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderImagerightStructure()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		&amp;#039;^&amp;#039; .. suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;, close = true}&lt;br /&gt;
		} .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		mSideBox.renderSidebox{imageright = &amp;#039;[[File:Example.png|thumb]]&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderAboveImagerightStructure()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		&amp;#039;^&amp;#039; .. suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;3&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;, close = true}&lt;br /&gt;
		} .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		mSideBox.renderSidebox{above = &amp;#039;some text&amp;#039;, imageright = &amp;#039;[[File:Example.png|thumb]]&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderBelowImagerightStructure()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		&amp;#039;^&amp;#039; .. suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;3&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;, close = true}&lt;br /&gt;
		} .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		mSideBox.renderSidebox{below = &amp;#039;some below text&amp;#039;, imageright = &amp;#039;[[File:Example.png|thumb]]&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderAboveAndBelowImagerightStructure()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		&amp;#039;^&amp;#039; .. suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;3&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;3&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;, close = true},&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;, close = true}&lt;br /&gt;
		} .. &amp;#039;$&amp;#039;,&lt;br /&gt;
		mSideBox.renderSidebox{above = &amp;#039;some above text&amp;#039;, below = &amp;#039;some below text&amp;#039;, imageright = &amp;#039;[[File:Example.png|thumb]]&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderOneClass()&lt;br /&gt;
	local data = {classes = {&amp;#039;foo&amp;#039;}}&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{tag = &amp;#039;table&amp;#039;, attr = &amp;#039;class&amp;#039;, value = &amp;#039;foo&amp;#039;},&lt;br /&gt;
		mSideBox.renderSidebox(data),&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderTwoClasses()&lt;br /&gt;
	local data = {classes = {&amp;#039;foo&amp;#039;, &amp;#039;bar&amp;#039;}}&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{tag = &amp;#039;table&amp;#039;, attr = &amp;#039;class&amp;#039;, value = &amp;#039;foo&amp;#039;},&lt;br /&gt;
		mSideBox.renderSidebox(data),&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{tag = &amp;#039;table&amp;#039;, attr = &amp;#039;class&amp;#039;, value = &amp;#039;bar&amp;#039;},&lt;br /&gt;
		mSideBox.renderSidebox(data),&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderDefaultTableStyles()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{tag = &amp;#039;table&amp;#039;, attr = &amp;#039;style&amp;#039;, property = &amp;#039;border&amp;#039;, value = &amp;#039;1px solid #aaa&amp;#039;},&lt;br /&gt;
		mSideBox.renderSidebox{},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{tag = &amp;#039;table&amp;#039;, attr = &amp;#039;style&amp;#039;, property = &amp;#039;background-color&amp;#039;, value = &amp;#039;#f9f9f9&amp;#039;},&lt;br /&gt;
		mSideBox.renderSidebox{},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderStyle()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{tag = &amp;#039;table&amp;#039;, attr = &amp;#039;style&amp;#039;, value = &amp;#039;foo:bar&amp;#039;},&lt;br /&gt;
		mSideBox.renderSidebox{style = &amp;#039;foo:bar&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderAbove()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;colspan&amp;#039;, value = &amp;#039;2&amp;#039;},&lt;br /&gt;
			{wikitext = &amp;#039;\nsome text&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true}&lt;br /&gt;
		},&lt;br /&gt;
		mSideBox.renderSidebox{above = &amp;#039;some text&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderAboveClass()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;class&amp;#039;, value = &amp;#039;mbox-text&amp;#039;},&lt;br /&gt;
			{wikitext = &amp;#039;some text&amp;#039;}&lt;br /&gt;
		},&lt;br /&gt;
		mSideBox.renderSidebox{above = &amp;#039;some text&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderAboveTextstyle()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;style&amp;#039;, value = &amp;#039;foo:bar&amp;#039;},&lt;br /&gt;
			{wikitext = &amp;#039;some text&amp;#039;}&lt;br /&gt;
		},&lt;br /&gt;
		mSideBox.renderSidebox{above = &amp;#039;some text&amp;#039;, textstyle = &amp;#039;foo:bar&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderAbovestyle()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;table&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;tr&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;style&amp;#039;, value = &amp;#039;bar:baz&amp;#039;},&lt;br /&gt;
			{wikitext = &amp;#039;some text&amp;#039;}&lt;br /&gt;
		},&lt;br /&gt;
		mSideBox.renderSidebox{above = &amp;#039;some text&amp;#039;, abovestyle = &amp;#039;bar:baz&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderImage()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;class&amp;#039;, value = &amp;#039;mbox-image&amp;#039;},&lt;br /&gt;
			{wikitext = &amp;#039;[[File:Example.png|thumb]]&amp;#039;}&lt;br /&gt;
		},&lt;br /&gt;
		mSideBox.renderSidebox{image = &amp;#039;[[File:Example.png|thumb]]&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderNoImage()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;style&amp;#039;, property = &amp;#039;width&amp;#039;, value = &amp;#039;1px&amp;#039;},&lt;br /&gt;
		mSideBox.renderSidebox{},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderText()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;},&lt;br /&gt;
			{wikitext = &amp;#039;the text body&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true}&lt;br /&gt;
		},&lt;br /&gt;
		mSideBox.renderSidebox{text = &amp;#039;the text body&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderImageright()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;class&amp;#039;, value = &amp;#039;mbox-imageright&amp;#039;},&lt;br /&gt;
			{wikitext = &amp;#039;[[File:Example 2.png|thumb]]&amp;#039;}&lt;br /&gt;
		},&lt;br /&gt;
		mSideBox.renderSidebox{imageright = &amp;#039;[[File:Example 2.png|thumb]]&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderBelow()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;class&amp;#039;, value = &amp;#039;mbox-text&amp;#039;},&lt;br /&gt;
			{wikitext = &amp;#039;some below text&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true}&lt;br /&gt;
		},&lt;br /&gt;
		mSideBox.renderSidebox{below = &amp;#039;some below text&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testRenderBelowTextstyle()&lt;br /&gt;
	self:assertStringContains(&lt;br /&gt;
		suite.makeHtmlPattern{&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, attr = &amp;#039;style&amp;#039;, value = &amp;#039;bar:foo&amp;#039;},&lt;br /&gt;
			{wikitext = &amp;#039;some below text&amp;#039;},&lt;br /&gt;
			{tag = &amp;#039;td&amp;#039;, close = true}&lt;br /&gt;
		},&lt;br /&gt;
		mSideBox.renderSidebox{below = &amp;#039;some below text&amp;#039;, textstyle = &amp;#039;bar:foo&amp;#039;},&lt;br /&gt;
		false&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Whole-module tests&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function suite:testMain()&lt;br /&gt;
	local currentFrame = mw.getCurrentFrame()&lt;br /&gt;
	local parent = currentFrame:newChild{args = {text = &amp;#039;some box text&amp;#039;}}&lt;br /&gt;
	local frame = parent:newChild{}&lt;br /&gt;
	local actual = mSideBox.main(frame)&lt;br /&gt;
	self:assertStringContains(&amp;#039;some box text&amp;#039;, actual, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:testUnderscoreMain()&lt;br /&gt;
	local actual = mSideBox._main{text = &amp;#039;some underscore main text&amp;#039;}&lt;br /&gt;
	self:assertStringContains(&amp;#039;some underscore main text&amp;#039;, actual, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return suite&lt;/div&gt;</summary>
		<author><name>imported&gt;Mr. Stradivarius</name></author>
	</entry>
</feed>