-- 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|len|', '}}', {
{' foo ', '5'},
{'s= foo ', '3'},
{'', '0'},
{'s=', '0'},
{' ', '3'},
{'最近の更新', '5'},
})
end
function p:test_replace()
self:preprocess_equals_many('{{#invoke:String|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|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">Errore nel modulo String: Corrispondenza non trovata</strong>'},
{'dog (cat)|%((%a-)%)||2|ignore_errors=true', ''},
})
end
function p:test_find()
self:preprocess_equals_many('{{#invoke:String|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">Errore nel modulo String: la funzione rep si aspetta un secondo parametro con il numero di ripetizioni, ricevuto "glug"</strong>'},
{'bla|glug|ignore_errors=true', ''},
{'àèò|3', 'àèòàèòàèò'},
{'높지만|3', '높지만높지만높지만'},
})
end
function p:test_decode()
self:preprocess_equals_many('{{#invoke:String|decode|', '}}', {
{'source=TEST%3D%3Dabc', 'TEST==abc'},
})
self:preprocess_equals_many('{{#invoke:String|decode|', '}}', {
{'TEST%3D%3Dabc', 'TEST==abc'},
})
self:preprocess_equals_many('{{#invoke:String|decode|', '}}', {
{'%24+%26', "$ &" },
})
self:preprocess_equals_many('{{#invoke:String|decode|', '}}', {
{'%24+%26|PATH', "$+&" },
})
self:preprocess_equals_many('{{#invoke:String|decode|', '}}', {
{'%24+%26|QUERY', "$ &" },
})
self:preprocess_equals_many('{{#invoke:String|decode|', '}}', {
{'%24_%26|WIKI', "$ &" },
})
end
function p:test_collate()
self:preprocess_equals_many('{{#invoke:String|collate|', '}}', {
{'Ameliè', 'Amelie'},
})
self:preprocess_equals_many('{{#invoke:String|collate|', '}}', {
{'John le Carré', 'John le Carre'},
})
self:preprocess_equals_many('{{#invoke:String|collate|', '}}', {
{"Anatolij Michajlovič Stessel'", "Anatolij Michajlovic Stessel'"},
})
self:preprocess_equals_many('{{#invoke:String|collate|', '}}', {
{'Tōgō Heihachirō', "Togo Heihachiro"},
})
self:preprocess_equals_many('{{#invoke:String|collate|', '}}', {
{'Tōgō Heihachirō', "Togo Heihachiro"},
})
self:preprocess_equals_many('{{#invoke:String|collate|', '}}', {
{'Uryū Sotokichi', 'Uryu Sotokichi'},
})
self:preprocess_equals_many('{{#invoke:String|collate|', '}}', {
{'Rolf Løvland', "Rolf Lovland"},
})
self:preprocess_equals_many('{{#invoke:String|collate|', '}}', {
{'John Storgårds', "John Storgards"},
})
end
function p:test_titolo_alfa()
self:preprocess_equals_many('{{#invoke:String|titolo_alfa|', '}}', {
{'prova', 'Prova'},
})
self:preprocess_equals_many('{{#invoke:String|titolo_alfa|', '}}', {
{'prova (disambigua)', 'Prova'},
})
self:preprocess_equals_many('{{#invoke:String|titolo_alfa|', '}}', {
{'...prova', 'Prova'},
})
self:preprocess_equals_many('{{#invoke:String|titolo_alfa|', '}}', {
{'...prova (disambigua)', 'Prova'},
})
self:preprocess_equals_many('{{#invoke:String|titolo_alfa|', '}}', {
{'Pròvâ', 'Prova'},
})
self:preprocess_equals_many('{{#invoke:String|titolo_alfa|', '}}', {
{'Una prova', 'Prova, Una'},
})
self:preprocess_equals_many('{{#invoke:String|titolo_alfa|', '}}', {
{'La prova (disambigua)', 'Prova, La'},
})
end
return p