Toggle menu
15
236
70
27.5K
Kenshi Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 09:54, 16 February 2025 by Prd (talk | contribs) (Created page with "-- Unit tests for Module:String. Click talk page to run tests. local p = require('Module:UnitTests') function p:test_len() self:preprocess_equals_many('{{#invoke:String/sandbox|len|', '}}', { {' foo ', '5'}, {'s= foo ', '3'}, {'', '0'}, {'s=', '0'}, {' ', '3'}, {'最近の更新', '5'}, }) end function p:test_replace() self:preprocess_equals_many('{{#invoke:String/sandbox|replace|', '}}', { {'1.1.1.1|.|/', '1/1/1/1'}, {'alpha (beta)| (| gamma (...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Refer to
Module:String



-- Unit tests for [[Module:String]]. Click talk page to run tests.
local p = require('Module:UnitTests')

function p:test_len()
	self:preprocess_equals_many('{{#invoke:String/sandbox|len|', '}}', {
		{' foo ', '5'},
		{'s= foo ', '3'},
		{'', '0'},
		{'s=', '0'},
		{'   ', '3'},
		{'最近の更新', '5'},
	})
end

function p:test_replace()
	self:preprocess_equals_many('{{#invoke:String/sandbox|replace|', '}}', {
		{'1.1.1.1|.|/', '1/1/1/1'},
		{'alpha (beta)| (| gamma (', 'alpha gamma (beta)'},
		{'Dog (cat)|%s%(.*%)||plain=false', 'Dog'},
	})
end

function p:test_match()
	self:preprocess_equals_many('{{#invoke:String/sandbox|match|', '}}', {
		{'dog (cat)|%((%a-)%)', 'cat'},
		{'dog (cat) (canary) (fish)|%((%a-)%)||-1', 'fish'},
		{'dog (cat) (canary) (fish)|%((%a-)%)||2', 'canary'},
		{'dog (cat) (canary) (fish)|%((%a-)%)|6|1', 'canary'},
		{'dog (cat) (canary) (fish)|%((%a-)%)|6|2', 'fish'},
		{'dog (cat)|%((%a-)%)||2|no_category=true', '<strong class="error">String Module Error: Match not found</strong>'},
		{'dog (cat)|%((%a-)%)||2|ignore_errors=true', ''},
	})
end

function p:test_match()
	local cases = {
		{'dog (cat)|%((%a-)%)', 'cat'},
		{'dog (cat) (canary) (fish)|%((%a-)%)||-1', 'fish'},
		{'dog (cat) (canary) (fish)|%((%a-)%)||2', 'canary'},
		{'dog (cat) (canary) (fish)|%((%a-)%)|6|1', 'canary'},
		{'dog (cat) (canary) (fish)|%((%a-)%)|6|2', 'fish'},
		{'dog (cat)|%((%a-)%)||2|no_category=true', '<strong class="error">String Module Error: Match not found</strong>'},
		{'dog (cat)|%((%a-)%)||2|ignore_errors=true', ''},
	}
	self:preprocess_equals_many('{{#invoke:String|match|', '}}', cases)
	self:preprocess_equals_many('{{#invoke:String/sandbox|match|', '}}', cases)
end

function p:test_match_reverse()
	local cases = {
		{'a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-1', '6'},
		{'a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-2', '5'},
		{'a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-4', '3'},
		{'a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-5', '2'},
		{'a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-6', '1'},
		{'a (1) (2) (3) (4) (5) (6) (a)|%((%d)%)||-7|no_category=true', '<strong class="error">String Module Error: Match not found</strong>'},
	}
	self:preprocess_equals_many('{{#invoke:String|match|', '}}', cases)
	self:preprocess_equals_many('{{#invoke:String/sandbox|match|', '}}', cases)
end

function p:test_find()
	self:preprocess_equals_many('{{#invoke:String/sandbox|find|', '}}', {
		{'', '0'},
		{'source=', '0'},
		{'source=|target=', '0'},
		{'source=|target=Bob', '0'},
		{'Bob|Joe', '0'},
		{'Bob|b', '3'},
		{'Bob Joe|oe', '6'},
		{'source= Bob |o', '2'},
		{' Bob |o', '3'},
		{'높지만 급격히|만', '3'},
		{'source=BAAAB|target=%w|plain=false', '1'},
		{'source=BAAAB|target=%w|start=3|plain=false', '3'},
		{'source=BAAAB|target=(%w)%1|plain=false', '2'},
	})
end

function p:test_rep()
	self:preprocess_equals_many('{{#invoke:String|rep|', '}}', {
		{'abc|1', 'abc'},
		{'a b|7', 'a ba ba ba ba ba ba b'},
		{'bla|glug|no_category=true', '<strong class="error">String Module Error: function rep expects a number as second parameter, received "glug"</strong>'},
		{'bla|glug|ignore_errors=true', ''},
		{'àèò|3', 'àèòàèòàèò'}
	})
	self:preprocess_equals_many('{{#invoke:String/sandbox|rep|', '}}', {
		{'abc|1', 'abc'},
		{'a b|7', 'a ba ba ba ba ba ba b'},
		{'bla|glug|no_category=true', '<strong class="error">String Module Error: function rep expects a number as second parameter, received "glug"</strong>'},
		{'bla|glug|ignore_errors=true', ''},
		{'àèò|3', 'àèòàèòàèò'}
	})
end

function p:test_escapePattern()
	self:preprocess_equals_many('{{#invoke:String/sandbox|escapePattern|', '}}', {
		{'foo', 'foo'},
		{'A.D.', 'A%.D%.'},
		{'0123', '0123'},
		{'^', '%^'},
		{'$', '%$'},
		{'(', '%('},
		{')', '%)'},
		{'%', '%%'},
		{'.', '%.'},
		{'[', '%['},
		{']', '%]'},
		{'*', '%*'},
		{'+', '%+'},
		{'-', '%-'},
		{'?', '%?'},
		{'!', '!'},
		{'"', '"'},
		{'&', '&'},
		{"'", "'"},
		{'{', '{'},
		{'}', '}'},
		{'`', '`'},
		{'@', '@'},
		{',', ','},
		{'<', '<'},
		{'>', '>'},
		{'/', '/'},
		{'_', '_'},
		{'\\', '\\'},
		{'~', '~'},
		{' ', ' '},
		{'', ''},
		{'x#', 'x#'}, -- We can't just test "#" because it will be interpreted as a list
		{'x;', 'x;'}, -- We can't just test ";" because it will be interpreted as a list
		{'x:', 'x:'}, -- We can't just test ":" because it will be interpreted as a list
		{'{{!}}', '|'}, -- Need to escape the template pipe syntax
		{'1==', '='}, -- Need to escape the "foo = bar" template syntax
		{'no_category=true', '<strong class="error">String Module Error: No pattern string specified</strong>'},
	})
end

function p:test_join()
	self:preprocess_equals_many('{{#invoke:String/sandbox|join|', '}}', {
		{'', ''},
		{'X', ''},
		{'X|a', 'a'},
		{'X|a|b', 'aXb'},
		{'X|a|b|c', 'aXbXc'},
		{'X|a|b|c|d', 'aXbXcXd'},
		{'X|a|b||d', 'aXbXd'},
		{'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', 'aXbXcXdXeXfXgXhXiXjXkXlXmXnXoXpXqXrXsXtXuXvXwXxXyXz'}
	})

end


return p