Module:String/testcases: Difference between revisions
Appearance
Content deleted Content added
add tests for the empty string and the pipe character, and group escaped test strings together |
add the join() testcases from the merged module. The other functions of that module weren't merged so left those testcases |
||
Line 1: | Line 1: | ||
-- Unit tests for [[Module:String]]. Click talk page to run tests. |
-- Unit tests for [[Module:String]]. Click talk page to run tests. |
||
local p = require('Module:UnitTests') |
local p = require('Module:UnitTests') |
||
function p:test_len() |
function p:test_len() |
||
self:preprocess_equals_many('{{#invoke:String/sandbox|len|', '}}', { |
|||
{' foo ', '5'}, |
|||
{'s= foo ', '3'}, |
|||
{'', '0'}, |
|||
{'s=', '0'}, |
|||
{' ', '3'}, |
|||
{'最近の更新', '5'}, |
|||
}) |
|||
end |
end |
||
function p:test_replace() |
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 |
end |
||
function p:test_match() |
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 |
end |
||
function p:test_match() |
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 |
end |
||
function p:test_find() |
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 |
end |
||
function p:test_rep() |
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 |
end |
||
function p:test_escapePattern() |
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 |
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 |
return p |
Revision as of 09:21, 26 May 2019
![]() | This is the test cases page for the module Module:String. Results of the test cases. |
-- 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
{'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