@@ -3,109 +3,113 @@ local commandfmt = [[./match '%s' '%s']]
3
3
local printfmt = [[ %s : "%s", "%s", %s]]
4
4
5
5
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' )
7
7
end
8
8
9
9
local OK = " OK"
10
10
local NOK = " NOK"
11
+ local exit_status = false -- testing
11
12
12
13
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' )
16
17
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
28
32
end
29
33
30
- test_tre (true , " \\ d" , " a" )
31
34
32
35
local test_vector =
33
36
{
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\n def" },
68
- { OK , " b.\\ s*\n " , " aa\r\n bb\r\n cc\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\n def" },
71
+ { OK , " b.\\ s*\n " , " aa\r\n bb\r\n cc\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" },
97
100
--[[ ]]
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" },
104
107
--[[ ]]
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" },
108
111
}
109
112
110
113
111
114
for i , v in pairs (test_vector ) do test_tre (table.unpack (v )) end
115
+ os.exit (exit_status )
0 commit comments