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 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', },    }) 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_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        {'&', '&'},        {"'", "'"},        {'==', '='}, -- Need to escape the "foo = bar" template syntax        {'{', '{'},        {'}', '}'},        {'`', '`'},        {'@', '@'},        {'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        {',', ','},        {'<', '<'},        {'>', '>'},        {'/', '/'}, {'_', '_'},       {'\\', '\\'},        {'~', '~'},        {' ', ' '},    }) end

return p