<?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%3ASandbox%2FAndy_M._Wang%2FSandbox%2Ftestcases</id>
	<title>Module:Sandbox/Andy M. Wang/Sandbox/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%3ASandbox%2FAndy_M._Wang%2FSandbox%2Ftestcases"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Andy_M._Wang/Sandbox/testcases&amp;action=history"/>
	<updated>2026-05-24T11:56:09Z</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:Sandbox/Andy_M._Wang/Sandbox/testcases&amp;diff=145121&amp;oldid=prev</id>
		<title>imported&gt;Andy M. Wang: ←Created page with &#039;-- Unit tests for Module:Sandbox/Andy M. Wang/Sandbox. Click talk page to run tests.  local moduleName = &#039;Sandbox/Andy M. Wang/Sandbox&#039; -- used to generate a...&#039;</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Andy_M._Wang/Sandbox/testcases&amp;diff=145121&amp;oldid=prev"/>
		<updated>2016-04-24T01:53:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=WP:AES&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:AES (page does not exist)&quot;&gt;←&lt;/a&gt;Created page with &amp;#039;-- Unit tests for &lt;a href=&quot;/research/Module:Sandbox/Andy_M._Wang/Sandbox&quot; title=&quot;Module:Sandbox/Andy M. Wang/Sandbox&quot;&gt;Module:Sandbox/Andy M. Wang/Sandbox&lt;/a&gt;. Click talk page to run tests.  local moduleName = &amp;#039;Sandbox/Andy M. Wang/Sandbox&amp;#039; -- used to generate a...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Unit tests for [[Module:Sandbox/Andy M. Wang/Sandbox]]. Click talk page to run tests.&lt;br /&gt;
&lt;br /&gt;
local moduleName = &amp;#039;Sandbox/Andy M. Wang/Sandbox&amp;#039; -- used to generate an #invoke statement&lt;br /&gt;
local mainFuncName = &amp;#039;main&amp;#039;&lt;br /&gt;
local mm = require(&amp;#039;Module:&amp;#039; .. moduleName)&lt;br /&gt;
local suite = require(&amp;#039;Module:UnitTests&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function suite.buildInvocation(funcName, args)&lt;br /&gt;
    args = args or {}&lt;br /&gt;
    local argsClone = mw.clone(args)&lt;br /&gt;
    -- Build a module invocation equivalent to the args table. Taken from [[Module:Unsubst]].&lt;br /&gt;
    -- Numbered args first.&lt;br /&gt;
    local ret = &amp;#039;{{#invoke:&amp;#039; .. moduleName .. &amp;#039;|&amp;#039; .. funcName&lt;br /&gt;
    for k, v in ipairs(argsClone) do&lt;br /&gt;
        v = tostring(v)&lt;br /&gt;
        if string.find(v, &amp;#039;=&amp;#039;, 1, true) then&lt;br /&gt;
            -- likely something like 1=foo=bar, we need to do it as a named arg&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
        ret = ret .. &amp;#039;|&amp;#039; .. v&lt;br /&gt;
        argsClone[k] = nil&lt;br /&gt;
    end&lt;br /&gt;
    for k, v in pairs(argsClone) do&lt;br /&gt;
        k = tostring(k)&lt;br /&gt;
        v = tostring(v)&lt;br /&gt;
        ret = ret .. &amp;#039;|&amp;#039; .. k .. &amp;#039;=&amp;#039; .. v&lt;br /&gt;
    end&lt;br /&gt;
    return ret .. &amp;#039;}}&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:getInvokeResult(funcName, args, convertNumber) -- Unless convertNumber is false, the number is converted to a number, if possible, on re-entry to Lua.&lt;br /&gt;
    args = args or {}&lt;br /&gt;
    local invocation = self.buildInvocation(funcName, args)&lt;br /&gt;
    local result = self.frame:preprocess(invocation)&lt;br /&gt;
    if convertNumber ~= false and tonumber(result) then&lt;br /&gt;
        return tonumber(result)&lt;br /&gt;
    else&lt;br /&gt;
        return result&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:assertInvokeEquals(expected, funcName, args, convertNumber)&lt;br /&gt;
    args = args or {}&lt;br /&gt;
    local invokeResult = self:getInvokeResult(funcName, args, convertNumber)&lt;br /&gt;
    self:preprocess_equals(invokeResult, expected)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:assertInvokeEqual(funcName, testTable, convertNumber)&lt;br /&gt;
    testTable = testTable or {}&lt;br /&gt;
    local expected = testTable[1]&lt;br /&gt;
    local args = testTable[2] or {}&lt;br /&gt;
    self:assertInvokeEquals(expected, funcName, args, convertNumber)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:assertInvokeEqualMany(funcName, testTables, convertNumber)&lt;br /&gt;
    for i, testTable in ipairs(testTables) do&lt;br /&gt;
        self:assertInvokeEqual(funcName, testTable, convertNumber)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
---- Tests ----&lt;br /&gt;
----------------------------------------&lt;br /&gt;
&lt;br /&gt;
return suite&lt;/div&gt;</summary>
		<author><name>imported&gt;Andy M. Wang</name></author>
	</entry>
</feed>