Module:String/testcases

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

function p:test_len self:preprocess_equals_many(, {		{' foo ', '5'},		{'s= foo ', '3'},		{, '0'},		{'s=', '0'},		{'  ', '3'},		{'最近の更新', '5'},	}) end

function p:test_replace self:preprocess_equals_many('', {		{'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(, {		{'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', ' String Module Error: Match not found '},		{'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', ' String Module Error: Match not found '}, {'dog (cat)|%((%a-)%)||2|ignore_errors=true', ''}, }	self:preprocess_equals_many('', cases) self:preprocess_equals_many('', 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', ' String Module Error: Match not found '}, }	self:preprocess_equals_many('', cases) self:preprocess_equals_many('', cases) end

function p:test_find self:preprocess_equals_many(, {		{, '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(, {		{'abc|1', 'abc'},		{'a b|7', 'a ba ba ba ba ba ba b'},		{'bla|glug|no_category=true', ' String Module Error: function rep expects a number as second parameter, received "glug" '},		{'bla|glug|ignore_errors=true', },		{'àèò|3', 'àèòàèòàèò'}	}) self:preprocess_equals_many(, {		{'abc|1', 'abc'},		{'a b|7', 'a ba ba ba ba ba ba b'},		{'bla|glug|no_category=true', ' String Module Error: function rep expects a number as second parameter, received "glug" '},		{'bla|glug|ignore_errors=true', },		{'àèò|3', 'àèòàèòàèò'}	}) end

function p:test_escapePattern self:preprocess_equals_many(, {		{'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', ' String Module Error: No pattern string specified '}, }) end

function p:test_join self:preprocess_equals_many(, {		{, },		{'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