Jump to content

Module:String/testcases: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
make escape tests use the sandbox, and rename the tests escapePattern to reflect the function name
escape escapePattern test cases that have special wiki syntax
Line 107: Line 107:
{'!', '!'},
{'!', '!'},
{'"', '"'},
{'"', '"'},
{'#', '#'},
{'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
{',', ','},
{',', ','},
{'<', '<'},
{'<', '<'},
Line 124: Line 124:
{'\\', '\\'},
{'\\', '\\'},
{'~', '~'},
{'~', '~'},
{' ', ' '},
})
})
end
end

Revision as of 14:46, 3 May 2019

-- 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()
    self:preprocess_equals_many('{{#invoke:String|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', ''},
    })
    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_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
        {'&', '&'},
        {"'", "'"},
        {'==', '='}, -- 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