Difference between revisions of "Module:String/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>Ans
(+)
blackwiki>Mr. Stradivarius
(add tests for a new escapePattern function for escaping Lua patterns)
Line 85: Line 85:
 
         {'bla|glug|ignore_errors=true', ''},
 
         {'bla|glug|ignore_errors=true', ''},
 
         {'àèò|3', 'àèòàèòàèò'}
 
         {'àèò|3', 'àèòàèòàèò'}
 +
    })
 +
end
 +
 +
function p:test_escape()
 +
    self:preprocess_equals_many('{{#invoke:String|escapePattern|', '}}', {
 +
        {'foo', 'foo'},
 +
        {'A.D.', 'A%.D%.'},
 +
        {'0123', '0123'},
 +
        {'^', '%^'},
 +
        {'$', '%$'},
 +
        {'(', '%('},
 +
        {')', '%)'},
 +
        {'%', '%%'},
 +
        {'.', '%.'},
 +
        {'[', '%['},
 +
        {']', '%]'},
 +
        {'*', '%*'},
 +
        {'+', '%+'},
 +
        {'-', '%-'},
 +
        {'?', '%?'},
 +
        {'!', '!'},
 +
        {'"', '"'},
 +
        {'#', '#'},
 +
        {'&', '&'},
 +
        {"'", "'"},
 +
        {'=', '='},
 +
        {'{', '{'},
 +
        {'}', '}'},
 +
        {'`', '`'},
 +
        {'@', '@'},
 +
        {';', ';'},
 +
        {':', ':'},
 +
        {',', ','},
 +
        {'<', '<'},
 +
        {'>', '>'},
 +
        {'/', '/'},
 +
        {'_', '_'},
 +
        {'\\', '\\'},
 +
        {'~', '~'},
 
     })
 
     })
 
end
 
end
  
 
return p
 
return p

Revision as of 14:14, 3 May 2019

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()
    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_escape()
    self:preprocess_equals_many('{{#invoke:String|escapePattern|', '}}', {
        {'foo', 'foo'},
        {'A.D.', 'A%.D%.'},
        {'0123', '0123'},
        {'^', '%^'},
        {'$', '%$'},
        {'(', '%('},
        {')', '%)'},
        {'%', '%%'},
        {'.', '%.'},
        {'[', '%['},
        {']', '%]'},
        {'*', '%*'},
        {'+', '%+'},
        {'-', '%-'},
        {'?', '%?'},
        {'!', '!'},
        {'"', '"'},
        {'#', '#'},
        {'&', '&'},
        {"'", "'"},
        {'=', '='},
        {'{', '{'},
        {'}', '}'},
        {'`', '`'},
        {'@', '@'},
        {';', ';'},
        {':', ':'},
        {',', ','},
        {'<', '<'},
        {'>', '>'},
        {'/', '/'},
        {'_', '_'},
        {'\\', '\\'},
        {'~', '~'},
    })
end

return p