Skip to content
This repository was archived by the owner on Dec 14, 2021. It is now read-only.

Commit fb25285

Browse files
committed
update test script
1 parent cc3e4c3 commit fb25285

File tree

1 file changed

+92
-88
lines changed

1 file changed

+92
-88
lines changed

test.lua

+92-88
Original file line numberDiff line numberDiff line change
@@ -3,109 +3,113 @@ local commandfmt = [[./match '%s' '%s']]
33
local printfmt = [[%s : "%s", "%s", %s]]
44

55
local _x = function(s)
6-
return s:gsub('\\', '\\\\'):gsub('\n', '\\n'):gsub('\r', '\\r'):gsub('\t', '\\t')
6+
return s:gsub('\\', '\\\\'):gsub('\n', '\\n'):gsub('\r', '\\r'):gsub('\t', '\\t')
77
end
88

99
local OK = "OK"
1010
local NOK = "NOK"
11+
local exit_status = false --testing
1112

1213
local test_tre = function(expected, pattern, sample)
13-
local result
14-
local pipe = io.popen(string.format(commandfmt, pattern, sample))
15-
pipe:read('*all')
14+
local result
15+
local pipe = io.popen(string.format(commandfmt, pattern, sample))
16+
pipe:read('*all')
1617
local _, exit, match = pipe:close()
17-
if exit == "exit" then
18-
pattern, sample = _x(pattern), _x(sample)
19-
if (match == 1 and expected == OK) or (match == 0 and expected == NOK) then
20-
result = "PASS"
21-
else
22-
result = "FAIL"
23-
end
24-
print(_sf(printfmt, result, pattern, sample, expected))
25-
else
26-
print(expected, pattern, sample, "Program error", exit, match)
27-
end
18+
19+
pattern, sample = _x(pattern), _x(sample)
20+
if exit == "exit" then
21+
if (match == 1 and expected == OK) or (match == 0 and expected == NOK) then
22+
result = "PASS"
23+
else
24+
result = "FAIL"
25+
exit_status = false
26+
end
27+
print(_sf(printfmt, result, pattern, sample, expected))
28+
else
29+
print(_sf(printfmt, "ERROR", pattern, sample, expected))
30+
print(_sf("\t%s code:%s", exit, match))
31+
end
2832
end
2933

30-
test_tre(true, "\\d", "a")
3134

3235
local test_vector =
3336
{
34-
{ OK, "\\d", "5" },
35-
{ OK, "\\w+", "hej" },
36-
{ OK, "\\s", "\t \n" },
37-
{ NOK, "\\S", "\t \n" },
38-
{ OK, "[\\s]", "\t \n" },
39-
{ NOK, "[\\S]", "\t \n" },
40-
{ NOK, "\\D", "5" },
41-
{ NOK, "\\W+", "hej" },
42-
{ OK, "[0-9]+", "12345" },
43-
{ OK, "\\D", "hej" },
44-
{ NOK, "\\d", "hej" },
45-
{ OK, "[^\\w]", "\\" },
46-
{ OK, "[\\W]", "\\" },
47-
{ NOK, "[\\w]", "\\" },
48-
{ OK, "[^\\d]", "d" },
49-
{ NOK, "[\\d]", "d" },
50-
{ NOK, "[^\\D]", "d" },
51-
{ OK, "[\\D]", "d" },
52-
{ OK, "^.*\\\\.*$", "c:\\Tools" },
53-
{ OK, "^[\\+-]*[\\d]+$", "+27" },
54-
{ OK, "[abc]", "1c2" },
55-
{ NOK, "[abc]", "1C2" },
56-
{ OK, "[1-5]+", "0123456789" },
57-
{ OK, "[.2]", "1C2" },
58-
{ OK, "a*$", "Xaa" },
59-
{ OK, "a*$", "Xaa" },
60-
{ OK, "[a-h]+", "abcdefghxxx" },
61-
{ NOK, "[a-h]+", "ABCDEFGH" },
62-
{ OK, "[A-H]+", "ABCDEFGH" },
63-
{ NOK, "[A-H]+", "abcdefgh" },
64-
{ OK, "[^\\s]+", "abc def" },
65-
{ OK, "[^fc]+", "abc def" },
66-
{ OK, "[^d\\sf]+", "abc def" },
67-
{ OK, "\n", "abc\ndef" },
68-
{ OK, "b.\\s*\n", "aa\r\nbb\r\ncc\r\n\r\n" },
69-
{ OK, ".*c", "abcabc" },
70-
{ OK, ".+c", "abcabc" },
71-
{ OK, "[b-z].*", "ab" },
72-
{ OK, "b[k-z]*", "ab" },
73-
{ NOK, "[0-9]", " - " },
74-
{ OK, "[^0-9]", " - " },
75-
{ OK, "0|", "0|" },
76-
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "0s:00:00" },
77-
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "000:00" },
78-
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "00:0000" },
79-
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "100:0:00" },
80-
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "00:100:00" },
81-
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "0:00:100" },
82-
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "0:0:0" },
83-
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "0:00:0" },
84-
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "0:0:00" },
85-
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "00:0:0" },
86-
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "00:00:0" },
87-
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "00:0:00" },
88-
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "0:00:00" },
89-
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "00:00:00" },
90-
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "Hello world !" },
91-
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "hello world !" },
92-
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "Hello World !" },
93-
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "Hello world! " },
94-
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "Hello world !" },
95-
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "hello World !" },
96-
{ NOK, "\\d\\d?:\\d\\d?:\\d\\d?", "a:0" }, -- Failing test case reported in https://github.com/kokke/tiny-regex-c/issues/12 */
37+
{ OK, "\\d", "5" },
38+
{ OK, "\\w+", "hej" },
39+
{ OK, "\\s", "\t \n" },
40+
{ NOK, "\\S", "\t \n" },
41+
{ OK, "[\\s]", "\t \n" },
42+
{ NOK, "[\\S]", "\t \n" },
43+
{ NOK, "\\D", "5" },
44+
{ NOK, "\\W+", "hej" },
45+
{ OK, "[0-9]+", "12345" },
46+
{ OK, "\\D", "hej" },
47+
{ NOK, "\\d", "hej" },
48+
{ OK, "[^\\w]", "\\" },
49+
{ OK, "[\\W]", "\\" },
50+
{ NOK, "[\\w]", "\\" },
51+
{ OK, "[^\\d]", "d" },
52+
{ NOK, "[\\d]", "d" },
53+
{ NOK, "[^\\D]", "d" },
54+
{ OK, "[\\D]", "d" },
55+
{ OK, "^.*\\\\.*$", "c:\\Tools" },
56+
{ OK, "^[\\+-]*[\\d]+$", "+27" },
57+
{ OK, "[abc]", "1c2" },
58+
{ NOK, "[abc]", "1C2" },
59+
{ OK, "[1-5]+", "0123456789" },
60+
{ OK, "[.2]", "1C2" },
61+
{ OK, "a*$", "Xaa" },
62+
{ OK, "a*$", "Xaa" },
63+
{ OK, "[a-h]+", "abcdefghxxx" },
64+
{ NOK, "[a-h]+", "ABCDEFGH" },
65+
{ OK, "[A-H]+", "ABCDEFGH" },
66+
{ NOK, "[A-H]+", "abcdefgh" },
67+
{ OK, "[^\\s]+", "abc def" },
68+
{ OK, "[^fc]+", "abc def" },
69+
{ OK, "[^d\\sf]+", "abc def" },
70+
{ OK, "\n", "abc\ndef" },
71+
{ OK, "b.\\s*\n", "aa\r\nbb\r\ncc\r\n\r\n" },
72+
{ OK, ".*c", "abcabc" },
73+
{ OK, ".+c", "abcabc" },
74+
{ OK, "[b-z].*", "ab" },
75+
{ OK, "b[k-z]*", "ab" },
76+
{ NOK, "[0-9]", " - " },
77+
{ OK, "[^0-9]", " - " },
78+
{ OK, "0|", "0|" },
79+
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "0s:00:00" },
80+
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "000:00" },
81+
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "00:0000" },
82+
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "100:0:00" },
83+
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "00:100:00" },
84+
{ NOK, "\\d\\d:\\d\\d:\\d\\d", "0:00:100" },
85+
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "0:0:0" },
86+
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "0:00:0" },
87+
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "0:0:00" },
88+
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "00:0:0" },
89+
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "00:00:0" },
90+
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "00:0:00" },
91+
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "0:00:00" },
92+
{ OK, "\\d\\d?:\\d\\d?:\\d\\d?", "00:00:00" },
93+
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "Hello world !" },
94+
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "hello world !" },
95+
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "Hello World !" },
96+
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "Hello world! " },
97+
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "Hello world !" },
98+
{ OK, "[Hh]ello [Ww]orld\\s*[!]?", "hello World !" },
99+
{ NOK, "\\d\\d?:\\d\\d?:\\d\\d?", "a:0" },
97100
--[[]]
98-
{ OK, "[^\\w][^-1-4]", ")T" },
99-
{ OK, "[^\\w][^-1-4]", ")^" },
100-
{ OK, "[^\\w][^-1-4]", "*)" },
101-
{ OK, "[^\\w][^-1-4]", "!." },
102-
{ OK, "[^\\w][^-1-4]", " x" },
103-
{ OK, "[^\\w][^-1-4]", "$b" },
101+
{ OK, "[^\\w][^-1-4]", ")T" },
102+
{ OK, "[^\\w][^-1-4]", ")^" },
103+
{ OK, "[^\\w][^-1-4]", "*)" },
104+
{ OK, "[^\\w][^-1-4]", "!." },
105+
{ OK, "[^\\w][^-1-4]", " x" },
106+
{ OK, "[^\\w][^-1-4]", "$b" },
104107
--[[]]
105-
{ OK, ".?bar", "real_bar" },
106-
{ NOK, ".?bar", "real_foo" },
107-
{ NOK, "X?Y", "Z" },
108+
{ OK, ".?bar", "real_bar" },
109+
{ NOK, ".?bar", "real_foo" },
110+
{ NOK, "X?Y", "Z" },
108111
}
109112

110113

111114
for i, v in pairs(test_vector) do test_tre(table.unpack(v)) end
115+
os.exit(exit_status)

0 commit comments

Comments
 (0)