1echo T.re: tests of regular expression code
2
3awk '
4BEGIN {
5	FS = "\t"
6	awk = "../a.out"
7}
8NF == 0 {
9	next
10}
11$1 != "" {	# new test
12	re = $1
13}
14$2 != "" {	# either ~ or !~
15	op = $2
16	if (op == "~")
17		neg = "!"
18	else if (op == "!~")
19		neg = ""
20}
21$3 != "" {	# new test string
22	str = $3
23}
24$3 == "\"\"" {	# explicit empty line
25	$3 = ""
26}
27NF > 2 {	# generate a test
28	input = $3
29	test = sprintf("./echo '"'"'%s'"'"' | %s '"'"'%s/%s/ {print \"%d fails %s %s %s\"}'"'"'",
30		input, awk, neg, re, NR, re, op, input)
31	# printf(" %3d   %s %s %s:\n", NR, re, op, input)
32	# print "test is |" test "|"
33	system(test)
34	# system("bprint -c ../a.out")
35	nt++
36}
37END { print "	" nt, "tests" }
38' <<\!!!!
39	~	a
40		aa
41		aaa
42		""
43a	~	a
44		ba
45		bab
46	!~	""
47		x
48		xxxxx
49=	~	=
50		b=
51		b=b
52	!~	""
53		x
54		xxxxx
55.	~	x
56		xxx
57	!~	""			
58.a	~	xa
59		xxa
60		xax
61	!~	a
62		ax
63		""
64$	~	x
65		""
66.$	~	x
67		xx
68	!~	""
69a$	~	a
70		ba
71		bbba
72	!~	ab
73		x
74		""
75^	~	x
76		""
77		^
78^a$	~	a
79	!~	xa
80		ax
81		xax
82		""
83^a.$	~	ax
84		aa
85	!~	xa
86		aaa
87		axy
88		""
89^$	~	""
90	!~	x
91		^
92^.a	~	xa
93		xaa
94	!~	a
95		""
96^.*a	~	a
97		xa
98		xxxxxxa
99	!~	""
100^.+a	~	xa
101		xxxxxxa
102	!~	""
103		a
104		ax
105a*	~	""
106		a
107		aaaa
108		xa
109		xxxx
110aa*	~	a
111		aaa
112		xa
113	!~	xxxx
114		""
115\$	~	x$
116		$
117		$x
118		x$x
119	!~	""
120		x
121\.	~	.
122	!~	x
123		""
124xr+y	~	xry
125		xrry
126		xrrrrrry
127	!~	ry
128		xy
129		xr
130xr?y	~	xy
131		xry
132	!~	xrry
133a?b?c?	~	""
134		x
135^a?b?x	~	x
136		ax
137		bx
138		abx
139		xa
140	!~	""
141		ab
142		aba			
143[0-9]	~	1
144		567
145		x0y
146	!~	abc
147		""
148[^0-9]	!~	1
149		567
150		""
151	~	abc
152		x0y
153[0-25-69]	~	0
154		1
155		2
156		5
157		6
158		9
159	!~	3
160		4
161		7
162		8
163[[:lower:]]	~	a
164		b
165		z
166	!~	A
167		Z
168		1
169		:
170		[
171		]
172[[:upper:]]	~	A
173		B
174		Z
175	!~	a
176		z
177		1
178		:
179		[
180		]
181[[:digit:]]	~	0
182		1
183		9
184	!~	d
185		:
186		[
187		]
188x[0-9]+y	~	x0y
189		x23y
190		x12345y
191	!~	0y
192		xy
193x[0-9]?y	~	xy
194		x1y
195	!~	x23y
196x[[]y	~	x[y
197	!~	xy
198		x[[]y
199		x]y
200x[[-]y	~	x[y
201		x-y
202	!~	xy
203		x[[]y
204		x]y
205x[[-a]y	~	x[y
206		xay
207		x]y
208	!~	xy
209		x[[]y
210		x-y
211x[]-a]y	~	x]y
212		xay
213	!~	xy
214		x[y
215		x-y
216x[]]y	~	x]y
217	!~	xy
218		x[]]y
219		x[y
220x[^[]y	~	xay
221	!~	x[y
222x[-]y	~	x-y
223	!~	xy
224		x+y
225x[^-]y	~	x+y
226	!~	x-y
227		xy
228x[][]y	~	x[y
229		x]y
230	!~	xy
231		x][y
232		x[]y
233x[z-a]y	~	xy
234	!~	x
235		y
236		xay
237		xzy
238		x-y
239[0\-9]	~	0
240		-
241		9
242	!~	1
243		""
244[-1]	~	-
245		1
246	!~	0
247[0-]	~	0
248		-
249	!~	1
250[^-0]	~	x
251		^
252	!~	-
253		0
254		""
255[^0-]	~	x
256		^
257	!~	-
258		0
259		""
260x|y	~	x
261		y
262		xy
263	!~	a
264		""
265^abc|xyz$	~	abc
266		abcd
267		axyz
268		xyz
269	!~	xabc
270		xyza
271^(abc|xyz)$	~	abc
272		xyz
273	!~	abcxyz
274		abcx
275		cxyz
276^x\|y$	~	x|y
277	!~	xy
278^x\\y$	~	x\y
279	!~	xy
280		x\\y
281		xay
282\141\142	~	ab
283		xab
284		abx
285	!~	a
286		b
287		ax
288		axb
289x\056y	~	x.y
290	!~	x.
291		.x
292		xxx
293		xby  because \056 is not the metacharacter .
294		xcy  ditto
295[\60-\62\65-6\71]	~	0
296		1
297		2
298		5
299		6
300		9
301	!~	3
302		4
303		7
304		8
305[\60-2\65-6\71]	~	0
306		1
307		2
308		5
309		6
310		9
311	!~	3
312		4
313		7
314		8
315[\x30-\x32\x35-6\71]	~	0
316		1
317		2
318		5
319		6
320		9
321	!~	3
322		4
323		7
324		8
325[\x30-2\x35-6\x39]	~	0
326		1
327		2
328		5
329		6
330		9
331	!~	3
332		4
333		7
334		8
335\f	!~	x
336\b	!~	x
337\r	!~	x
338\n	!~	x
339...)	~	abc)
340!!!!
341