Module:string utilities/testcases

local tests = require("Module:UnitTests") local ps = require("Module:string utilities").pattern_simplifier

function tests:check_pattern_simplifier(pattern, expected) tests:equals(pattern, tostring(ps(pattern)), tostring(expected)) end

function tests:test_pattern_simplifier local examples = { {"", ""},		{"%", false}, {"%b", "%b"}, {"%b（)", false},		{"%b(）", false}, {"%b（）", false}, {"%ba", "%ba"}, {"%b%a", false}, {"%a", false}, {"%b", false}, {"%c", false}, {"%d", false}, {"%e", "%e"}, {"%f", false}, {"%g", "%g"}, {"%h", "%h"}, {"%i", "%i"}, {"%j", "%j"}, {"%k", "%k"}, {"%l", false}, {"%m", "%m"}, {"%n", "%n"}, {"%o", "%o"}, {"%p", false}, {"%q", "%q"}, {"%r", "%r"}, {"%s", false}, {"%t", "%t"}, {"%u", false}, {"%v", "%v"}, {"%w", false}, {"%x", false}, {"%y", "%y"}, {"%z", "%z"}, {"%A", false}, {"%B", "%B"}, {"%C", false}, {"%D", false}, {"%E", "%E"}, {"%F", "%F"}, {"%G", "%G"}, {"%H", "%H"}, {"%I", "%I"}, {"%J", "%J"}, {"%K", "%K"}, {"%L", false}, {"%M", "%M"}, {"%N", "%N"}, {"%O", "%O"}, {"%P", false}, {"%Q", "%Q"}, {"%R", "%R"}, {"%S", false}, {"%T", "%T"}, {"%U", false}, {"%V", "%V"}, {"%W", false}, {"%X", false}, {"%Y", "%Y"}, {"%Z", "[\1-\127\194-\244][\128-\191]*"}, {"%ж", "%ж"}, {"%ж?", false}, {"%%a", "%%a"}, {"%%c", "%%c"}, {"%%d", "%%d"}, {"%%l", "%%l"}, {"%%p", "%%p"}, {"%%s", "%%s"}, {"%%u", "%%u"}, {"%%w", "%%w"}, {"%%x", "%%x"}, {"%%A", "%%A"}, {"%%C", "%%C"}, {"%%D", "%%D"}, {"%%L", "%%L"}, {"%%P", "%%P"}, {"%%S", "%%S"}, {"%%U", "%%U"}, {"%%W", "%%W"}, {"%%X", "%%X"}, {"%%Z", "%%Z"}, {"%%%a", false}, {"%%%c", false}, {"%%%d", false}, {"%%%l", false}, {"%%%p", false}, {"%%%s", false}, {"%%%u", false}, {"%%%w", false}, {"%%%x", false}, {"%%%A", false}, {"%%%C", false}, {"%%%D", false}, {"%%%L", false}, {"%%%P", false}, {"%%%S", false}, {"%%%U", false}, {"%%%W", false}, {"%%%X", false}, {"%%%Z", "%%[\1-\127\194-\244][\128-\191]*"}, {"%z%a", false}, {"%Z%a", false}, {"", false}, {"%", "%"},		{"(foo)", "(foo)"}, {"((foo)bar)", "((foo)bar)"}, {(""):rep(32), (""):rep(32)}, {(""):rep(33), false}, {("("):rep(33), false},		{(""):rep(32) .. "%", (""):rep(32) .. "%"},		{".", "[^\128-\191][\128-\191]*"},		{("."):rep(5), ("[^\128-\191][\128-\191]*"):rep(5)},		{"foo.*.", "foo.*[^\128-\191][\128-\191]*"},		{"foo.+.", "foo.+[^\128-\191][\128-\191]*"},		{"foo.-.", "foo.-[^\128-\191][\128-\191]*"},		{"foo.?.", "foo[^\128-\191]?[\128-\191]*[^\128-\191][\128-\191]*"},		{"foo%Z*%Z", "foo%Z*[\1-\127\194-\244][\128-\191]*"},		{"foo%Z+%Z", "foo%Z+[\1-\127\194-\244][\128-\191]*"},		{"foo%Z-%Z", "foo%Z-[\1-\127\194-\244][\128-\191]*"},		{"foo%Z?%Z", "foo[\1-\127\194-\244]?[\128-\191]*[\1-\127\194-\244][\128-\191]*"},		{"fooжbar", "fooжbar"},		{"fooж*bar", false},		{"fooж+bar", "foo\208[ж]*\182bar"},		{"fooж-bar", false},		{"fooж?bar", false},		{"fooကbar", "fooကbar"},		{"fooက*bar", false},		{"fooက+bar", false},		{"fooက-bar", false},		{"fooက?bar", false},		{"foo𠀀bar", "foo𠀀bar"},		{"foo𠀀*bar", false}, {"foo𠀀+bar", false}, {"foo𠀀-bar", false}, {"foo𠀀?bar", false}, {"foo[^a]bar", false}, {"[^]", false}, {"foo%[^a]bar", "foo%[^a]bar"}, {"foo[bar", false}, {"foo[bar]baz", "foo[bar]baz"}, {"foo[bar]%a", false}, {"foo[bar%abaz]", false}, {"foo[bar%zbaz]", "foo[bar%zbaz]"}, {"foo[barжbaz]", false}, {"foo[barကbaz]", false}, {"foo[bar𠀀baz]", false}, {"foo[bar]*baz", "foo[bar]*baz"}, {"foo[bar]+baz", "foo[bar]+baz"}, {"foo[bar]-baz", "foo[bar]-baz"}, {"foo[bar]?baz", "foo[bar]?baz"}, {"foo[БАР]baz", "foo\208[\144-\145\160]baz"}, {"foo[БАР]*baz", false}, {"foo[БАР]+baz", "foo\208[\144-\145\160\208]*[\144-\145\160]baz"}, {"foo[БАР]-baz", false}, {"foo[БАР]?baz", false}, {"foo[БАРbaz]qux", false}, {"foo[bar%Б]baz", false}, {"foo[БАР%e]baz", false}, {"foo[бар]baz", false}, {"foo[бар]*baz", false}, {"foo[бар]+baz", false}, {"foo[бар]-baz", false}, {"foo[бар]?baz", false}, {"foo[バー]baz", "foo\227\131[\144\188]baz"}, {"foo[バー]*baz", false}, {"foo[バー]+baz", false}, {"foo[バー]-baz", false}, {"foo[バー]?baz", false}, {"foo%f[bar]baz", "foo%f[bar]baz"}, {"foo%f[БАР]baz", false}, {"foo%f[%БАР]baz", false}, {"foo%f[бар]baz", false}, {"foo%f[バー]baz", false}, }

self:iterate(examples, "check_pattern_simplifier") end

return tests