Yiɣi chaŋ yɛligu maŋamaŋa puuni

Module:String/testcases

Diyila Dagbani Wikipedia

Documentation for this module may be created at Module:String/testcases/doc

-- 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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy