summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorshmuz <shmuz>2007-03-17 11:09:32 +0000
committershmuz <shmuz>2007-03-17 11:09:32 +0000
commitce25d628c034b51c8d03e890e876a89601960e03 (patch)
tree98a7f155c4f9b2c8307b1058530ff90d4158282a /test
parent1c42e04250bfdf6cbd6e91cdc68d7ba999a7b650 (diff)
downloadlrexlib-ce25d628c034b51c8d03e890e876a89601960e03.tar.gz
many changes: see ChangeLog
Diffstat (limited to 'test')
-rwxr-xr-xtest/common_sets.lua142
-rwxr-xr-xtest/pcre_sets.lua4
-rwxr-xr-xtest/pcre_sets2.lua28
3 files changed, 109 insertions, 65 deletions
diff --git a/test/common_sets.lua b/test/common_sets.lua
index 9b55db2..8104f60 100755
--- a/test/common_sets.lua
+++ b/test/common_sets.lua
@@ -32,6 +32,8 @@ local function set_f_gmatch (lib, flg)
--{ subj patt results }
{ {("abcd"):rep(3), "(.)b.(d)"}, {{"a","d"},{"a","d"},{"a","d"}} },
{ {"abcd", ".*" }, {{"abcd",N},{"",N} } },--zero-length match
+ { {"a\0c", "." }, {{"a",N},{"\0",N},{"c",N}} },--nuls in subj
+ { {"abc", "^." }, {{"a",N}} },--anchored pattern
}
end
@@ -58,6 +60,8 @@ local function set_f_split (lib, flg)
{ {"a,b,", ","}, {{"a",",",N}, {"b",",",N}, } },
{ {"a,,b", ","}, {{"a",",",N}, {"",",",N}, {"b",N,N}} },
{ {"ab<78>c", "<(.)(.)>"}, {{"ab","7","8"}, {"c",N,N}, } },
+ { {"a,\0,c", ","}, {{"a",",",N},{"\0",",",N},{"c",N,N}, } },--nuls in subj
+ { {"abc", "^."}, {{"", "a",N}, {"bc",N,N}, } },--anchored pattern
}
end
@@ -141,18 +145,20 @@ local function set_f_gsub1 (lib, flg)
return {
Name = "Function gsub, set1",
Func = get_gsub (lib),
- --{ s, p, f, n, res1, res2 },
- { {subj, pat, "", 0}, {subj, 0} }, -- test "n" + empty_replace
- { {subj, pat, "", -1}, {subj, 0} }, -- test "n" + empty_replace
- { {subj, pat, "", 1}, {"cdef", 1} },
- { {subj, pat, "", 2}, {"cd", 2} },
- { {subj, pat, "", 3}, {"cd", 2} },
- { {subj, pat, "" }, {"cd", 2} },
- { {subj, pat, "#", 0}, {subj, 0} }, -- test "n" + non-empty_replace
- { {subj, pat, "#", 1}, {"#cdef", 1} },
- { {subj, pat, "#", 2}, {"#cd#", 2} },
- { {subj, pat, "#", 3}, {"#cd#", 2} },
- { {subj, pat, "#" }, {"#cd#", 2} },
+ --{ s, p, f, n, res1, res2, res3 },
+ { {subj, pat, "", 0}, {subj, 0, 0} }, -- test "n" + empty_replace
+ { {subj, pat, "", -1}, {subj, 0, 0} }, -- test "n" + empty_replace
+ { {subj, pat, "", 1}, {"cdef", 1, 1} },
+ { {subj, pat, "", 2}, {"cd", 2, 2} },
+ { {subj, pat, "", 3}, {"cd", 2, 2} },
+ { {subj, pat, "" }, {"cd", 2, 2} },
+ { {subj, pat, "#", 0}, {subj, 0, 0} }, -- test "n" + non-empty_replace
+ { {subj, pat, "#", 1}, {"#cdef", 1, 1} },
+ { {subj, pat, "#", 2}, {"#cd#", 2, 2} },
+ { {subj, pat, "#", 3}, {"#cd#", 2, 2} },
+ { {subj, pat, "#" }, {"#cd#", 2, 2} },
+ { {"a\0c", ".", "#" }, {"###", 3, 3} }, -- subj contains nuls
+ { {"abc", "^.", "#" }, {"#bc", 1, 1} }, -- anchored pattern
}
end
@@ -161,16 +167,16 @@ local function set_f_gsub2 (lib, flg)
return {
Name = "Function gsub, set2",
Func = get_gsub (lib),
- --{ s, p, f, n, res1, res2 },
- { {subj, pat, "<%1>" }, {"<a>b<c>", 2} }, -- test non-escaped chars in f
- { {subj, pat, "%<%1%>" }, {"<a>b<c>", 2} }, -- test escaped chars in f
- { {subj, pat, "" }, {"b", 2} }, -- test empty replace
- { {subj, pat, "1" }, {"1b1", 2} }, -- test odd and even %'s in f
- { {subj, pat, "%1" }, {"abc", 2} },
- { {subj, pat, "%%1" }, {"%1b%1", 2} },
- { {subj, pat, "%%%1" }, {"%ab%c", 2} },
- { {subj, pat, "%%%%1" }, {"%%1b%%1", 2} },
- { {subj, pat, "%%%%%1" }, {"%%ab%%c", 2} },
+ --{ s, p, f, n, res1, res2, res3 },
+ { {subj, pat, "<%1>" }, {"<a>b<c>", 2, 2} }, -- test non-escaped chars in f
+ { {subj, pat, "%<%1%>" }, {"<a>b<c>", 2, 2} }, -- test escaped chars in f
+ { {subj, pat, "" }, {"b", 2, 2} }, -- test empty replace
+ { {subj, pat, "1" }, {"1b1", 2, 2} }, -- test odd and even %'s in f
+ { {subj, pat, "%1" }, {"abc", 2, 2} },
+ { {subj, pat, "%%1" }, {"%1b%1", 2, 2} },
+ { {subj, pat, "%%%1" }, {"%ab%c", 2, 2} },
+ { {subj, pat, "%%%%1" }, {"%%1b%%1", 2, 2} },
+ { {subj, pat, "%%%%%1" }, {"%%ab%%c", 2, 2} },
}
end
@@ -178,11 +184,11 @@ local function set_f_gsub3 (lib, flg)
return {
Name = "Function gsub, set3",
Func = get_gsub (lib),
- --{ s, p, f, n, res1, res2 },
- { {"abc", "a", "%0" }, {"abc", 1} }, -- test (in)valid capture index
- { {"abc", "a", "%1" }, {"abc", 1} },
- { {"abc", "[ac]", "%1" }, {"abc", 2} },
- { {"abc", "(a)", "%1" }, {"abc", 1} },
+ --{ s, p, f, n, res1,res2,res3 },
+ { {"abc", "a", "%0" }, {"abc", 1, 1} }, -- test (in)valid capture index
+ { {"abc", "a", "%1" }, {"abc", 1, 1} },
+ { {"abc", "[ac]", "%1" }, {"abc", 2, 2} },
+ { {"abc", "(a)", "%1" }, {"abc", 1, 1} },
{ {"abc", "(a)", "%2" }, "invalid capture index" },
}
end
@@ -191,15 +197,15 @@ local function set_f_gsub4 (lib, flg)
return {
Name = "Function gsub, set4",
Func = get_gsub (lib),
- --{ s, p, f, n, res1, res2 },
- { {"a2c3", ".", "#" }, {"####", 4} }, -- test .
- { {"a2c3", ".+", "#" }, {"#", 1} }, -- test .+
- { {"a2c3", ".*", "#" }, {"##", 2} }, -- test .*
- { {"/* */ */", "\\/\\*(.*)\\*\\/", "#" }, {"#", 1} },
- { {"a2c3", "[0-9]", "#" }, {"a#c#", 2} }, -- test %d
- { {"a2c3", "[^0-9]", "#" }, {"#2#3", 2} }, -- test %D
- { {"a \t\nb", "[ \t\n]", "#" }, {"a###b", 3} }, -- test %s
- { {"a \t\nb", "[^ \t\n]", "#" }, {"# \t\n#", 2} }, -- test %S
+ --{ s, p, f, n, res1, res2, res3 },
+ { {"a2c3", ".", "#" }, {"####", 4, 4} }, -- test .
+ { {"a2c3", ".+", "#" }, {"#", 1, 1} }, -- test .+
+ { {"a2c3", ".*", "#" }, {"##", 2, 2} }, -- test .*
+ { {"/* */ */", "\\/\\*(.*)\\*\\/", "#" }, {"#", 1, 1} },
+ { {"a2c3", "[0-9]", "#" }, {"a#c#", 2, 2} }, -- test %d
+ { {"a2c3", "[^0-9]", "#" }, {"#2#3", 2, 2} }, -- test %D
+ { {"a \t\nb", "[ \t\n]", "#" }, {"a###b", 3, 3} }, -- test %s
+ { {"a \t\nb", "[^ \t\n]", "#" }, {"# \t\n#", 2, 2} }, -- test %S
}
end
@@ -214,17 +220,17 @@ local function set_f_gsub5 (lib, flg)
return {
Name = "Function gsub, set5",
Func = get_gsub (lib),
- --{ s, p, f, n, res1, res2 },
- { {subj, "a(.)c(.)", frep1 }, {subj, 1} },
- { {subj, "a(.)c(.)", frep2 }, {"#", 1} },
- { {subj, "a(.)c(.)", frep3 }, {"2,3", 1} },
- { {subj, "a.c.", frep3 }, {subj, 1} },
- { {subj, "z*", frep1 }, {subj, 5} },
- { {subj, "z*", frep2 }, {"#a#2#c#3#", 5} },
- { {subj, "z*", frep3 }, {subj, 5} },
+ --{ s, p, f, n, res1, res2, res3 },
+ { {subj, "a(.)c(.)", frep1 }, {subj, 1, 0} },
+ { {subj, "a(.)c(.)", frep2 }, {"#", 1, 1} },
+ { {subj, "a(.)c(.)", frep3 }, {"2,3", 1, 1} },
+ { {subj, "a.c.", frep3 }, {subj, 1, 1} },
+ { {subj, "z*", frep1 }, {subj, 5, 0} },
+ { {subj, "z*", frep2 }, {"#a#2#c#3#", 5, 5} },
+ { {subj, "z*", frep3 }, {subj, 5, 5} },
{ {subj, subj, frep4 }, "invalid return type" },
- { {"abc",".", frep5 }, {"777", 3} },
- { {"abc",".", frep6 }, {"7bc", 1} },
+ { {"abc",".", frep5 }, {"777", 3, 3} },
+ { {"abc",".", frep6 }, {"777", 3, 3} },
}
end
@@ -234,13 +240,44 @@ local function set_f_gsub6 (lib, flg)
return {
Name = "Function gsub, set6",
Func = get_gsub (lib),
- --{ s, p, f, n, res1, res2 },
- { {subj, "a(.)c(.)", tab1 }, {subj, 1} },
- { {subj, "a(.)c(.)", tab2 }, {"56", 1} },
+ --{ s, p, f, n, res1,res2,res3 },
+ { {subj, "a(.)c(.)", tab1 }, {subj, 1, 0} },
+ { {subj, "a(.)c(.)", tab2 }, {"56", 1, 1} },
{ {subj, "a(.)c(.)", tab3 }, "invalid replacement type" },
- { {subj, "a.c.", tab1 }, {subj, 1} },
- { {subj, "a.c.", tab2 }, {subj, 1} },
- { {subj, "a.c.", tab3 }, {subj, 1} },
+ { {subj, "a.c.", tab1 }, {subj, 1, 0} },
+ { {subj, "a.c.", tab2 }, {subj, 1, 0} },
+ { {subj, "a.c.", tab3 }, {subj, 1, 0} },
+ }
+end
+
+local function set_f_gsub8 (lib, flg)
+ local subj, patt, repl = "abcdef", "..", "*"
+ return {
+ Name = "Function gsub, set8",
+ Func = get_gsub (lib),
+ --{ s, p, f, n, res1, res2, res3 },
+ { {subj, patt, repl, function() end }, {"abcdef", 3, 0} },
+ { {subj, patt, repl, function() return nil end }, {"abcdef", 3, 0} },
+ { {subj, patt, repl, function() return false end }, {"abcdef", 3, 0} },
+ { {subj, patt, repl, function() return true end }, {"***", 3, 3} },
+ { {subj, patt, repl, function() return {} end }, {"***", 3, 3} },
+ { {subj, patt, repl, function() return "#" end }, {"###", 3, 3} },
+ { {subj, patt, repl, function() return 57 end }, {"575757", 3, 3} },
+ { {subj, patt, repl, function (from) return from end }, {"135", 3, 3} },
+ { {subj, patt, repl, function (from, to) return to end }, {"246", 3, 3} },
+ { {subj, patt, repl, function (from,to,rep) return rep end },
+ {"***", 3, 3} },
+ { {subj, patt, repl, function (from, to, rep) return rep..to..from end },
+ {"*21*43*65", 3, 3} },
+ { {subj, patt, repl, function() return nil end }, {"abcdef", 3, 0} },
+ { {subj, patt, repl, function() return nil, nil end }, {"abcdef", 3, 0} },
+ { {subj, patt, repl, function() return nil, false end }, {"abcdef", 3, 0} },
+ { {subj, patt, repl, function() return nil, true end }, {"ab**", 3, 2} },
+ { {subj, patt, repl, function() return true, true end }, {"***", 3, 3} },
+ { {subj, patt, repl, function() return nil, 0 end }, {"abcdef", 1, 0} },
+ { {subj, patt, repl, function() return true, 0 end }, {"*cdef", 1, 1} },
+ { {subj, patt, repl, function() return nil, 1 end }, {"ab*ef", 2, 1} },
+ { {subj, patt, repl, function() return true, 1 end }, {"**ef", 2, 2} },
}
end
@@ -259,6 +296,7 @@ return function (libname)
set_f_gsub4 (lib),
set_f_gsub5 (lib),
set_f_gsub6 (lib),
+ set_f_gsub8 (lib),
set_f_plainfind (lib),
}
end
diff --git a/test/pcre_sets.lua b/test/pcre_sets.lua
index 865a10f..1897398 100755
--- a/test/pcre_sets.lua
+++ b/test/pcre_sets.lua
@@ -107,8 +107,10 @@ return function (libname)
set_f_find (lib, flags),
set_m_exec (lib, flags),
set_m_tfind (lib, flags),
- set_named_subpatterns (lib, flags),
}
+ if flags.MAJOR >= 4 then
+ table.insert (sets, set_named_subpatterns (lib, flags))
+ end
if flags.MAJOR >= 6 then
table.insert (sets, set_m_dfa_exec (lib, flags))
end
diff --git a/test/pcre_sets2.lua b/test/pcre_sets2.lua
index 7616540..8bdb3a3 100755
--- a/test/pcre_sets2.lua
+++ b/test/pcre_sets2.lua
@@ -13,15 +13,16 @@ local function set_f_gsub4 (lib, flg)
local set = {
Name = "Function gsub, set4",
Func = get_gsub (lib),
- --{ s, p, f, n, res1, res2 },
- { {"/* */ */", "%/%*(.*)%*%/", "#" }, {"#", 1} },
- { {"a2c3", ".-", "#" }, {"#a#2#c#3#", 5} }, -- test .-
- { {"/**/", "%/%*(.-)%*%/", "#" }, {"#", 1} },
- { {"/* */ */", "%/%*(.-)%*%/", "#" }, {"# */", 1} },
- { {"a2c3", "%d", "#" }, {"a#c#", 2} }, -- test %d
- { {"a2c3", "%D", "#" }, {"#2#3", 2} }, -- test %D
- { {"a \t\nb", "%s", "#" }, {"a###b", 3} }, -- test %s
- { {"a \t\nb", "%S", "#" }, {"# \t\n#", 2} }, -- test %S
+ --{ s, p, f, n, res1, res2, res3 },
+ { {"/* */ */", "%/%*(.*)%*%/", "#" }, {"#", 1, 1} },
+ { {"a2c3", ".-", "#" }, {"#a#2#c#3#", 5, 5} }, -- test .-
+ { {"/**/", "%/%*(.-)%*%/", "#" }, {"#", 1, 1} },
+ { {"/* */ */", "%/%*(.-)%*%/", "#" }, {"# */", 1, 1} },
+ { {"a2c3", "%d", "#" }, {"a#c#", 2, 2} }, -- test %d
+ { {"a2c3", "%D", "#" }, {"#2#3", 2, 2} }, -- test %D
+ { {"a \t\nb", "%s", "#" }, {"a###b", 3, 3} }, -- test %s
+ { {"a \t\nb", "%S", "#" }, {"# \t\n#", 2, 2} }, -- test %S
+ { {"abcd", "\\b", "%1"}, {"abcd", 2, 2} },
}
-- convert patterns: lua -> pcre
for _, test in ipairs (set) do
@@ -157,7 +158,7 @@ local function set_f_gsub7 (lib, flg)
-- fill in reference results
for _,v in ipairs(set) do
local r0, r1, r2 = pcall (string.gsub, unpack (v[1]))
- v[2] = r0 and { r1, r2 } or { r0, r1 }
+ v[2] = r0 and { r1, r2, r2 } or { r0, r1 }
end
-- convert patterns: lua -> pcre
for _, test in ipairs (set) do
@@ -169,9 +170,12 @@ end
return function (libname)
local lib = require (libname)
local flags = lib.flags and lib.flags ()
- return {
+ local sets = {
set_f_gsub4 (lib, flags),
- set_f_gsub7 (lib, flags),
}
+ if flags.MAJOR*100 + flags.MINOR > 405 then
+ table.insert (sets, set_f_gsub7 (lib, flags))
+ end
+ return sets
end