<?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%3AString%2Ftestcases</id>
	<title>Module:String/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%3AString%2Ftestcases"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:String/testcases&amp;action=history"/>
	<updated>2026-04-21T14:48:15Z</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:String/testcases&amp;diff=147057&amp;oldid=prev</id>
		<title>imported&gt;Wqnvlz: More thorough tests for reverse match</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:String/testcases&amp;diff=147057&amp;oldid=prev"/>
		<updated>2022-04-07T06:49:37Z</updated>

		<summary type="html">&lt;p&gt;More thorough tests for reverse match&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Unit tests for [[Module:String]]. Click talk page to run tests.&lt;br /&gt;
local p = require(&amp;#039;Module:UnitTests&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p:test_len()&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String/sandbox|len|&amp;#039;, &amp;#039;}}&amp;#039;, {&lt;br /&gt;
		{&amp;#039; foo &amp;#039;, &amp;#039;5&amp;#039;},&lt;br /&gt;
		{&amp;#039;s= foo &amp;#039;, &amp;#039;3&amp;#039;},&lt;br /&gt;
		{&amp;#039;&amp;#039;, &amp;#039;0&amp;#039;},&lt;br /&gt;
		{&amp;#039;s=&amp;#039;, &amp;#039;0&amp;#039;},&lt;br /&gt;
		{&amp;#039;   &amp;#039;, &amp;#039;3&amp;#039;},&lt;br /&gt;
		{&amp;#039;最近の更新&amp;#039;, &amp;#039;5&amp;#039;},&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:test_replace()&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String/sandbox|replace|&amp;#039;, &amp;#039;}}&amp;#039;, {&lt;br /&gt;
		{&amp;#039;1.1.1.1|.|/&amp;#039;, &amp;#039;1/1/1/1&amp;#039;},&lt;br /&gt;
		{&amp;#039;alpha (beta)| (| gamma (&amp;#039;, &amp;#039;alpha gamma (beta)&amp;#039;},&lt;br /&gt;
		{&amp;#039;Dog (cat)|%s%(.*%)||plain=false&amp;#039;, &amp;#039;Dog&amp;#039;},&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:test_match()&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String/sandbox|match|&amp;#039;, &amp;#039;}}&amp;#039;, {&lt;br /&gt;
		{&amp;#039;dog (cat)|%((%a-)%)&amp;#039;, &amp;#039;cat&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat) (canary) (fish)|%((%a-)%)||-1&amp;#039;, &amp;#039;fish&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat) (canary) (fish)|%((%a-)%)||2&amp;#039;, &amp;#039;canary&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat) (canary) (fish)|%((%a-)%)|6|1&amp;#039;, &amp;#039;canary&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat) (canary) (fish)|%((%a-)%)|6|2&amp;#039;, &amp;#039;fish&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat)|%((%a-)%)||2|no_category=true&amp;#039;, &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: Match not found&amp;lt;/strong&amp;gt;&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat)|%((%a-)%)||2|ignore_errors=true&amp;#039;, &amp;#039;&amp;#039;},&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:test_match()&lt;br /&gt;
	local cases = {&lt;br /&gt;
		{&amp;#039;dog (cat)|%((%a-)%)&amp;#039;, &amp;#039;cat&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat) (canary) (fish)|%((%a-)%)||-1&amp;#039;, &amp;#039;fish&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat) (canary) (fish)|%((%a-)%)||2&amp;#039;, &amp;#039;canary&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat) (canary) (fish)|%((%a-)%)|6|1&amp;#039;, &amp;#039;canary&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat) (canary) (fish)|%((%a-)%)|6|2&amp;#039;, &amp;#039;fish&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat)|%((%a-)%)||2|no_category=true&amp;#039;, &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: Match not found&amp;lt;/strong&amp;gt;&amp;#039;},&lt;br /&gt;
		{&amp;#039;dog (cat)|%((%a-)%)||2|ignore_errors=true&amp;#039;, &amp;#039;&amp;#039;},&lt;br /&gt;
	}&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String|match|&amp;#039;, &amp;#039;}}&amp;#039;, cases)&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String/sandbox|match|&amp;#039;, &amp;#039;}}&amp;#039;, cases)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:test_match_reverse()&lt;br /&gt;
	local cases = {&lt;br /&gt;
		{&amp;#039;a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-1&amp;#039;, &amp;#039;6&amp;#039;},&lt;br /&gt;
		{&amp;#039;a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-2&amp;#039;, &amp;#039;5&amp;#039;},&lt;br /&gt;
		{&amp;#039;a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-4&amp;#039;, &amp;#039;3&amp;#039;},&lt;br /&gt;
		{&amp;#039;a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-5&amp;#039;, &amp;#039;2&amp;#039;},&lt;br /&gt;
		{&amp;#039;a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-6&amp;#039;, &amp;#039;1&amp;#039;},&lt;br /&gt;
		{&amp;#039;a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-7|no_category=true&amp;#039;, &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: Match not found&amp;lt;/strong&amp;gt;&amp;#039;},&lt;br /&gt;
	}&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String|match|&amp;#039;, &amp;#039;}}&amp;#039;, cases)&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String/sandbox|match|&amp;#039;, &amp;#039;}}&amp;#039;, cases)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:test_find()&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String/sandbox|find|&amp;#039;, &amp;#039;}}&amp;#039;, {&lt;br /&gt;
		{&amp;#039;&amp;#039;, &amp;#039;0&amp;#039;},&lt;br /&gt;
		{&amp;#039;source=&amp;#039;, &amp;#039;0&amp;#039;},&lt;br /&gt;
		{&amp;#039;source=|target=&amp;#039;, &amp;#039;0&amp;#039;},&lt;br /&gt;
		{&amp;#039;source=|target=Bob&amp;#039;, &amp;#039;0&amp;#039;},&lt;br /&gt;
		{&amp;#039;Bob|Joe&amp;#039;, &amp;#039;0&amp;#039;},&lt;br /&gt;
		{&amp;#039;Bob|b&amp;#039;, &amp;#039;3&amp;#039;},&lt;br /&gt;
		{&amp;#039;Bob Joe|oe&amp;#039;, &amp;#039;6&amp;#039;},&lt;br /&gt;
		{&amp;#039;source= Bob |o&amp;#039;, &amp;#039;2&amp;#039;},&lt;br /&gt;
		{&amp;#039; Bob |o&amp;#039;, &amp;#039;3&amp;#039;},&lt;br /&gt;
		{&amp;#039;높지만 급격히|만&amp;#039;, &amp;#039;3&amp;#039;},&lt;br /&gt;
		{&amp;#039;source=BAAAB|target=%w|plain=false&amp;#039;, &amp;#039;1&amp;#039;},&lt;br /&gt;
		{&amp;#039;source=BAAAB|target=%w|start=3|plain=false&amp;#039;, &amp;#039;3&amp;#039;},&lt;br /&gt;
		{&amp;#039;source=BAAAB|target=(%w)%1|plain=false&amp;#039;, &amp;#039;2&amp;#039;},&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:test_rep()&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String|rep|&amp;#039;, &amp;#039;}}&amp;#039;, {&lt;br /&gt;
		{&amp;#039;abc|1&amp;#039;, &amp;#039;abc&amp;#039;},&lt;br /&gt;
		{&amp;#039;a b|7&amp;#039;, &amp;#039;a ba ba ba ba ba ba b&amp;#039;},&lt;br /&gt;
		{&amp;#039;bla|glug|no_category=true&amp;#039;, &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: function rep expects a number as second parameter, received &amp;quot;glug&amp;quot;&amp;lt;/strong&amp;gt;&amp;#039;},&lt;br /&gt;
		{&amp;#039;bla|glug|ignore_errors=true&amp;#039;, &amp;#039;&amp;#039;},&lt;br /&gt;
		{&amp;#039;àèò|3&amp;#039;, &amp;#039;àèòàèòàèò&amp;#039;}&lt;br /&gt;
	})&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String/sandbox|rep|&amp;#039;, &amp;#039;}}&amp;#039;, {&lt;br /&gt;
		{&amp;#039;abc|1&amp;#039;, &amp;#039;abc&amp;#039;},&lt;br /&gt;
		{&amp;#039;a b|7&amp;#039;, &amp;#039;a ba ba ba ba ba ba b&amp;#039;},&lt;br /&gt;
		{&amp;#039;bla|glug|no_category=true&amp;#039;, &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: function rep expects a number as second parameter, received &amp;quot;glug&amp;quot;&amp;lt;/strong&amp;gt;&amp;#039;},&lt;br /&gt;
		{&amp;#039;bla|glug|ignore_errors=true&amp;#039;, &amp;#039;&amp;#039;},&lt;br /&gt;
		{&amp;#039;àèò|3&amp;#039;, &amp;#039;àèòàèòàèò&amp;#039;}&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:test_escapePattern()&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String/sandbox|escapePattern|&amp;#039;, &amp;#039;}}&amp;#039;, {&lt;br /&gt;
		{&amp;#039;foo&amp;#039;, &amp;#039;foo&amp;#039;},&lt;br /&gt;
		{&amp;#039;A.D.&amp;#039;, &amp;#039;A%.D%.&amp;#039;},&lt;br /&gt;
		{&amp;#039;0123&amp;#039;, &amp;#039;0123&amp;#039;},&lt;br /&gt;
		{&amp;#039;^&amp;#039;, &amp;#039;%^&amp;#039;},&lt;br /&gt;
		{&amp;#039;$&amp;#039;, &amp;#039;%$&amp;#039;},&lt;br /&gt;
		{&amp;#039;(&amp;#039;, &amp;#039;%(&amp;#039;},&lt;br /&gt;
		{&amp;#039;)&amp;#039;, &amp;#039;%)&amp;#039;},&lt;br /&gt;
		{&amp;#039;%&amp;#039;, &amp;#039;%%&amp;#039;},&lt;br /&gt;
		{&amp;#039;.&amp;#039;, &amp;#039;%.&amp;#039;},&lt;br /&gt;
		{&amp;#039;[&amp;#039;, &amp;#039;%[&amp;#039;},&lt;br /&gt;
		{&amp;#039;]&amp;#039;, &amp;#039;%]&amp;#039;},&lt;br /&gt;
		{&amp;#039;*&amp;#039;, &amp;#039;%*&amp;#039;},&lt;br /&gt;
		{&amp;#039;+&amp;#039;, &amp;#039;%+&amp;#039;},&lt;br /&gt;
		{&amp;#039;-&amp;#039;, &amp;#039;%-&amp;#039;},&lt;br /&gt;
		{&amp;#039;?&amp;#039;, &amp;#039;%?&amp;#039;},&lt;br /&gt;
		{&amp;#039;!&amp;#039;, &amp;#039;!&amp;#039;},&lt;br /&gt;
		{&amp;#039;&amp;quot;&amp;#039;, &amp;#039;&amp;quot;&amp;#039;},&lt;br /&gt;
		{&amp;#039;&amp;amp;&amp;#039;, &amp;#039;&amp;amp;&amp;#039;},&lt;br /&gt;
		{&amp;quot;&amp;#039;&amp;quot;, &amp;quot;&amp;#039;&amp;quot;},&lt;br /&gt;
		{&amp;#039;{&amp;#039;, &amp;#039;{&amp;#039;},&lt;br /&gt;
		{&amp;#039;}&amp;#039;, &amp;#039;}&amp;#039;},&lt;br /&gt;
		{&amp;#039;`&amp;#039;, &amp;#039;`&amp;#039;},&lt;br /&gt;
		{&amp;#039;@&amp;#039;, &amp;#039;@&amp;#039;},&lt;br /&gt;
		{&amp;#039;,&amp;#039;, &amp;#039;,&amp;#039;},&lt;br /&gt;
		{&amp;#039;&amp;lt;&amp;#039;, &amp;#039;&amp;lt;&amp;#039;},&lt;br /&gt;
		{&amp;#039;&amp;gt;&amp;#039;, &amp;#039;&amp;gt;&amp;#039;},&lt;br /&gt;
		{&amp;#039;/&amp;#039;, &amp;#039;/&amp;#039;},&lt;br /&gt;
		{&amp;#039;_&amp;#039;, &amp;#039;_&amp;#039;},&lt;br /&gt;
		{&amp;#039;\\&amp;#039;, &amp;#039;\\&amp;#039;},&lt;br /&gt;
		{&amp;#039;~&amp;#039;, &amp;#039;~&amp;#039;},&lt;br /&gt;
		{&amp;#039; &amp;#039;, &amp;#039; &amp;#039;},&lt;br /&gt;
		{&amp;#039;&amp;#039;, &amp;#039;&amp;#039;},&lt;br /&gt;
		{&amp;#039;x#&amp;#039;, &amp;#039;x#&amp;#039;}, -- We can&amp;#039;t just test &amp;quot;#&amp;quot; because it will be interpreted as a list&lt;br /&gt;
		{&amp;#039;x;&amp;#039;, &amp;#039;x;&amp;#039;}, -- We can&amp;#039;t just test &amp;quot;;&amp;quot; because it will be interpreted as a list&lt;br /&gt;
		{&amp;#039;x:&amp;#039;, &amp;#039;x:&amp;#039;}, -- We can&amp;#039;t just test &amp;quot;:&amp;quot; because it will be interpreted as a list&lt;br /&gt;
		{&amp;#039;{{!}}&amp;#039;, &amp;#039;|&amp;#039;}, -- Need to escape the template pipe syntax&lt;br /&gt;
		{&amp;#039;1==&amp;#039;, &amp;#039;=&amp;#039;}, -- Need to escape the &amp;quot;foo = bar&amp;quot; template syntax&lt;br /&gt;
		{&amp;#039;no_category=true&amp;#039;, &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;String Module Error: No pattern string specified&amp;lt;/strong&amp;gt;&amp;#039;},&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p:test_join()&lt;br /&gt;
	self:preprocess_equals_many(&amp;#039;{{#invoke:String/sandbox|join|&amp;#039;, &amp;#039;}}&amp;#039;, {&lt;br /&gt;
		{&amp;#039;&amp;#039;, &amp;#039;&amp;#039;},&lt;br /&gt;
		{&amp;#039;X&amp;#039;, &amp;#039;&amp;#039;},&lt;br /&gt;
		{&amp;#039;X|a&amp;#039;, &amp;#039;a&amp;#039;},&lt;br /&gt;
		{&amp;#039;X|a|b&amp;#039;, &amp;#039;aXb&amp;#039;},&lt;br /&gt;
		{&amp;#039;X|a|b|c&amp;#039;, &amp;#039;aXbXc&amp;#039;},&lt;br /&gt;
		{&amp;#039;X|a|b|c|d&amp;#039;, &amp;#039;aXbXcXd&amp;#039;},&lt;br /&gt;
		{&amp;#039;X|a|b||d&amp;#039;, &amp;#039;aXbXd&amp;#039;},&lt;br /&gt;
		{&amp;#039;X|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z&amp;#039;, &amp;#039;aXbXcXdXeXfXgXhXiXjXkXlXmXnXoXpXqXrXsXtXuXvXwXxXyXz&amp;#039;}&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Wqnvlz</name></author>
	</entry>
</feed>