<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://compusofia.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ALua_banner%2Ftestcases</id>
	<title>Module:Lua banner/testcases - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://compusofia.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ALua_banner%2Ftestcases"/>
	<link rel="alternate" type="text/html" href="https://compusofia.com/w/index.php?title=Module:Lua_banner/testcases&amp;action=history"/>
	<updated>2026-04-23T10:40:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://compusofia.com/w/index.php?title=Module:Lua_banner/testcases&amp;diff=294&amp;oldid=prev</id>
		<title>Majestix: 1 revision imported: Initial Setup</title>
		<link rel="alternate" type="text/html" href="https://compusofia.com/w/index.php?title=Module:Lua_banner/testcases&amp;diff=294&amp;oldid=prev"/>
		<updated>2026-04-06T09:48:43Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported: Initial Setup&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:48, 6 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikiNonStop:diff:1.41:old-293:rev-294 --&gt;
&lt;/table&gt;</summary>
		<author><name>Majestix</name></author>
	</entry>
	<entry>
		<id>https://compusofia.com/w/index.php?title=Module:Lua_banner/testcases&amp;diff=293&amp;oldid=prev</id>
		<title>en&gt;ExE Boss: Ignore TemplateStyles and other strip markers (except &lt;nowiki&gt;)</title>
		<link rel="alternate" type="text/html" href="https://compusofia.com/w/index.php?title=Module:Lua_banner/testcases&amp;diff=293&amp;oldid=prev"/>
		<updated>2022-06-06T14:52:32Z</updated>

		<summary type="html">&lt;p&gt;Ignore &lt;a href=&quot;https://www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateStyles&quot; class=&quot;extiw&quot; title=&quot;mw:Special:MyLanguage/Help:TemplateStyles&quot;&gt;TemplateStyles&lt;/a&gt; and other strip markers (except &amp;lt;&lt;a href=&quot;https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Formatting#.3Cnowiki.3E&quot; class=&quot;extiw&quot; title=&quot;mw:Special:MyLanguage/Help:Formatting&quot;&gt;nowiki&lt;/a&gt;&amp;gt;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local mList = require(&amp;#039;Module:List&amp;#039;)&lt;br /&gt;
local mMessageBox = require(&amp;#039;Module:Message box&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = require(&amp;#039;Module:ScribuntoUnit&amp;#039;):new()&lt;br /&gt;
&lt;br /&gt;
local noWishConfig = {&lt;br /&gt;
	subpage_blacklist = {&lt;br /&gt;
		[&amp;#039;doc&amp;#039;] = true&lt;br /&gt;
	},&lt;br /&gt;
	allow_wishes = false,&lt;br /&gt;
	error_category = &amp;#039;ERRCAT_TITLE&amp;#039;,&lt;br /&gt;
	-- wish_category = nil, -- should not be accessed&lt;br /&gt;
	default_category = &amp;#039;DEFCAT_TITLE&amp;#039;,&lt;br /&gt;
	module_categories = {&lt;br /&gt;
		[&amp;#039;String&amp;#039;] = &amp;#039;STRINGCAT_TITLE&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
local withWishConfig = {&lt;br /&gt;
	subpage_blacklist = {&lt;br /&gt;
		[&amp;#039;doc&amp;#039;] = true&lt;br /&gt;
	},&lt;br /&gt;
	allow_wishes = true,&lt;br /&gt;
	-- error_category = nil, -- should not be accessed&lt;br /&gt;
	wish_category = &amp;#039;WISHCAT_TITLE&amp;#039;,&lt;br /&gt;
	default_category = &amp;#039;DEFCAT_TITLE&amp;#039;,&lt;br /&gt;
	module_categories = {&lt;br /&gt;
		[&amp;#039;String&amp;#039;] = &amp;#039;STRINGCAT_TITLE&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
local configMetatable = {&lt;br /&gt;
	__index = function(t, k) error(&amp;quot;Unexpected field &amp;#039;&amp;quot; .. k .. &amp;quot;&amp;#039; accessed.&amp;quot;) end&lt;br /&gt;
}&lt;br /&gt;
setmetatable(noWishConfig, configMetatable)&lt;br /&gt;
setmetatable(withWishConfig, configMetatable)&lt;br /&gt;
&lt;br /&gt;
-- Allow test runner to use both the Module:XXX itself and Module:XXX/sandbox with the same testcases&lt;br /&gt;
function p:module()&lt;br /&gt;
	return self.frame and self.frame.args and self.frame.args.module or &amp;#039;Lua banner&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:box(text)&lt;br /&gt;
	local boxArgs = {&lt;br /&gt;
		text = text,&lt;br /&gt;
		type = &amp;#039;notice&amp;#039;,&lt;br /&gt;
		small = true,&lt;br /&gt;
		image = &amp;#039;[[File:Lua-logo-nolabel.svg|30px|alt=Lua logo|link=wikipedia:Wikipedia:Lua]]&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	return mMessageBox.main(&amp;#039;mbox&amp;#039;, boxArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:boxFromList(moduleLinks, withWishes)&lt;br /&gt;
	if #moduleLinks == 0 then&lt;br /&gt;
		if withWishes then&lt;br /&gt;
			return self:box(&amp;#039;This template should use [[wikipedia:Wikipedia:Lua|Lua]]&amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			return self:box(&amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: no modules specified&amp;lt;/strong&amp;gt;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return self:box(&amp;#039;Uses [[wikipedia:Wikipedia:Lua|Lua]]:\n&amp;#039; .. mList.makeList(&amp;#039;bulleted&amp;#039;, moduleLinks))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:assertTCBoth(args, modules, titleObj, expected)&lt;br /&gt;
	local func = require(&amp;#039;Module:&amp;#039; .. p:module()).renderTrackingCategories&lt;br /&gt;
	self:assertEquals(func(args, modules, titleObj, noWishConfig), expected)&lt;br /&gt;
	self:assertEquals(func(args, modules, titleObj, withWishConfig), expected)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ignoreStripMarkersExceptNoWiki(s)&lt;br /&gt;
	-- return mw.text.unstrip(s);&lt;br /&gt;
	return mw.text.killMarkers(mw.text.unstripNoWiki(s));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:assertEqualsIgnoreStripMarkers(a, b, ...)&lt;br /&gt;
	if (type(a) == &amp;quot;string&amp;quot;) then&lt;br /&gt;
		a = ignoreStripMarkersExceptNoWiki(a);&lt;br /&gt;
	end&lt;br /&gt;
	if (type(b) == &amp;quot;string&amp;quot;) then&lt;br /&gt;
		b = ignoreStripMarkersExceptNoWiki(b);&lt;br /&gt;
	end&lt;br /&gt;
	return self:assertEquals(a, b, ...);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:testRenderBox()&lt;br /&gt;
	local func = require(&amp;#039;Module:&amp;#039; .. p:module()).renderBox&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({}, noWishConfig), self:boxFromList{})&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({}, withWishConfig), self:boxFromList({}, true))&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({&amp;#039;Module:Lua banner&amp;#039;}, noWishConfig), self:boxFromList{&amp;#039;[[:Module:Lua banner]]&amp;#039;})&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({&amp;#039;Module:Lua banner&amp;#039;}, withWishConfig), self:boxFromList{&amp;#039;[[:Module:Lua banner]]&amp;#039;})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:testRenderTrackingCategories()&lt;br /&gt;
	local func = require(&amp;#039;Module:&amp;#039; .. p:module()).renderTrackingCategories&lt;br /&gt;
	local moduleTitle = mw.title.new(&amp;#039;Module:Lua banner&amp;#039;)&lt;br /&gt;
	local templateTitle = mw.title.new(&amp;#039;Template:Lua&amp;#039;)&lt;br /&gt;
	local templateDocTitle = mw.title.new(&amp;#039;Template:Lua/doc&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({}, {}, moduleTitle, noWishConfig), &amp;#039;[[Category:ERRCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({}, {}, moduleTitle, withWishConfig), &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({}, {}, templateTitle, noWishConfig), &amp;#039;[[Category:ERRCAT_TITLE]][[Category:DEFCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({}, {}, templateTitle, withWishConfig), &amp;#039;[[Category:WISHCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({}, {}, templateDocTitle, noWishConfig), &amp;#039;[[Category:ERRCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({}, {}, templateDocTitle, withWishConfig), &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({}, {&amp;#039;Module:Lua banner&amp;#039;}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({}, {&amp;#039;Module:Lua banner&amp;#039;}, templateTitle, &amp;#039;[[Category:DEFCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({}, {&amp;#039;Module:Lua banner&amp;#039;}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({}, {&amp;#039;Module:Lua banner&amp;#039;, &amp;#039;Module:String&amp;#039;}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({}, {&amp;#039;Module:Lua banner&amp;#039;, &amp;#039;Module:String&amp;#039;}, templateTitle, &amp;#039;[[Category:DEFCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({}, {&amp;#039;Module:Lua banner&amp;#039;, &amp;#039;Module:String&amp;#039;}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({}, {&amp;#039;Module:String&amp;#039;, &amp;#039;Module:Lua banner&amp;#039;}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({}, {&amp;#039;Module:String&amp;#039;, &amp;#039;Module:Lua banner&amp;#039;}, templateTitle, &amp;#039;[[Category:STRINGCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({}, {&amp;#039;Module:String&amp;#039;, &amp;#039;Module:Lua banner&amp;#039;}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:testRenderTrackingCategoriesWithNocat()&lt;br /&gt;
	local moduleTitle = mw.title.new(&amp;#039;Module:Lua banner&amp;#039;)&lt;br /&gt;
	local templateTitle = mw.title.new(&amp;#039;Template:Lua&amp;#039;)&lt;br /&gt;
	local templateDocTitle = mw.title.new(&amp;#039;Template:Lua/doc&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {}, templateTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;}, templateTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;, &amp;#039;Module:String&amp;#039;}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;, &amp;#039;Module:String&amp;#039;}, templateTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;, &amp;#039;Module:String&amp;#039;}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {&amp;#039;Module:String&amp;#039;, &amp;#039;Module:Lua banner&amp;#039;}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {&amp;#039;Module:String&amp;#039;, &amp;#039;Module:Lua banner&amp;#039;}, templateTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({nocat=&amp;#039;true&amp;#039;}, {&amp;#039;Module:String&amp;#039;, &amp;#039;Module:Lua banner&amp;#039;}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:testRenderTrackingCategoriesWithCategory()&lt;br /&gt;
	local func = require(&amp;#039;Module:&amp;#039; .. p:module()).renderTrackingCategories&lt;br /&gt;
	local moduleTitle = mw.title.new(&amp;#039;Module:Lua banner&amp;#039;)&lt;br /&gt;
	local templateTitle = mw.title.new(&amp;#039;Template:Lua&amp;#039;)&lt;br /&gt;
	local templateDocTitle = mw.title.new(&amp;#039;Template:Lua/doc&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({category=&amp;#039;catname&amp;#039;}, {}, moduleTitle, noWishConfig), &amp;#039;[[Category:ERRCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({category=&amp;#039;catname&amp;#039;}, {}, moduleTitle, withWishConfig), &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({category=&amp;#039;catname&amp;#039;}, {}, templateTitle, noWishConfig), &amp;#039;[[Category:ERRCAT_TITLE]][[Category:catname]]&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({category=&amp;#039;catname&amp;#039;}, {}, templateTitle, withWishConfig), &amp;#039;[[Category:catname]]&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({category=&amp;#039;catname&amp;#039;}, {}, templateDocTitle, noWishConfig), &amp;#039;[[Category:ERRCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertEquals(func({category=&amp;#039;catname&amp;#039;}, {}, templateDocTitle, withWishConfig), &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({category=&amp;#039;catname&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({category=&amp;#039;catname&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;}, templateTitle, &amp;#039;[[Category:catname]]&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({category=&amp;#039;catname&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({category=&amp;#039;catname&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;, &amp;#039;Module:String&amp;#039;}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({category=&amp;#039;catname&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;, &amp;#039;Module:String&amp;#039;}, templateTitle, &amp;#039;[[Category:catname]]&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({category=&amp;#039;catname&amp;#039;}, {&amp;#039;Module:Lua banner&amp;#039;, &amp;#039;Module:String&amp;#039;}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({category=&amp;#039;catname&amp;#039;}, {&amp;#039;Module:String&amp;#039;, &amp;#039;Module:Lua banner&amp;#039;}, moduleTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({category=&amp;#039;catname&amp;#039;}, {&amp;#039;Module:String&amp;#039;, &amp;#039;Module:Lua banner&amp;#039;}, templateTitle, &amp;#039;[[Category:catname]]&amp;#039;)&lt;br /&gt;
	self:assertTCBoth({category=&amp;#039;catname&amp;#039;}, {&amp;#039;Module:String&amp;#039;, &amp;#039;Module:Lua banner&amp;#039;}, templateDocTitle, &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:testMain()&lt;br /&gt;
	local func = require(&amp;#039;Module:&amp;#039; .. p:module())._main&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({}, noWishConfig), self:boxFromList{} .. &amp;#039;[[Category:ERRCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({}, withWishConfig), self:boxFromList({}, true))&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({nil}, noWishConfig), self:boxFromList{} .. &amp;#039;[[Category:ERRCAT_TITLE]]&amp;#039;)&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({nil}, withWishConfig), self:boxFromList({}, true))&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({&amp;#039;Module:Lua banner&amp;#039;}, noWishConfig), self:boxFromList{&amp;#039;[[:Module:Lua banner]]&amp;#039;})&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({&amp;#039;Module:Lua banner&amp;#039;}, withWishConfig), self:boxFromList{&amp;#039;[[:Module:Lua banner]]&amp;#039;})&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({nil, &amp;#039;Module:Lua banner&amp;#039;}, noWishConfig), self:boxFromList{&amp;#039;[[:Module:Lua banner]]&amp;#039;})&lt;br /&gt;
	self:assertEqualsIgnoreStripMarkers(func({nil, &amp;#039;Module:Lua banner&amp;#039;}, withWishConfig), self:boxFromList{&amp;#039;[[:Module:Lua banner]]&amp;#039;})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>en&gt;ExE Boss</name></author>
	</entry>
</feed>