Module:String/testcases
< Module:String
Jump to navigation
Jump to search
Revision as of 20:30, 8 August 2024 by Arcangelus (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/...")
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