xref: /freebsd/contrib/one-true-awk/testdir/T.int-expr (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
1echo T.int-expr: test interval expressions
2
3awk=${awk-../a.out}
4
5rm -f foo
6
7cat << \EOF > prog
8NF == 0		{ next }
9$1 == "pat"	{ pattern = $2; next }
10{
11	check = ($1 ~ pattern)
12	printf("%s ~ /%s/ -> should be %d, is %d\n", $1, pattern, $2, check)
13}
14EOF
15
16cat << \EOF > foo.in
17pat	ab{0}c
18ac	1
19abc	0
20
21pat	a(b{0})c
22ac	1
23abc	0
24
25pat	ab{0}*c
26ac	1
27abc	0
28
29pat	a(b{0})*c
30ac	1
31abc	0
32
33pat	ab{0,}c
34ac	1
35abc	1
36
37pat	a(b{0,})c
38ac	1
39abc	1
40
41pat	ab{0,}*c
42ac	1
43abc	1
44
45pat	a(b{0,})*c
46ac	1
47abc	1
48
49pat	ab{1}c
50ac	0
51abc	1
52abbc	0
53
54pat	ab{1,}c
55ac	0
56abc	1
57abbc	1
58abbbc	1
59abbbbc	1
60
61pat	ab{0,1}c
62ac	1
63abc	1
64abbc	0
65
66pat	ab{0,3}c
67ac	1
68abc	1
69abbc	1
70abbbc	1
71abbbbc	0
72
73pat	ab{1,3}c
74ac	0
75abc	1
76abbc	1
77abbbc	1
78abbbbc	0
79EOF
80
81cat << \EOF > foo1
82ac ~ /ab{0}c/ -> should be 1, is 1
83abc ~ /ab{0}c/ -> should be 0, is 0
84ac ~ /a(b{0})c/ -> should be 1, is 1
85abc ~ /a(b{0})c/ -> should be 0, is 0
86ac ~ /ab{0}*c/ -> should be 1, is 1
87abc ~ /ab{0}*c/ -> should be 0, is 0
88ac ~ /a(b{0})*c/ -> should be 1, is 1
89abc ~ /a(b{0})*c/ -> should be 0, is 0
90ac ~ /ab{0,}c/ -> should be 1, is 1
91abc ~ /ab{0,}c/ -> should be 1, is 1
92ac ~ /a(b{0,})c/ -> should be 1, is 1
93abc ~ /a(b{0,})c/ -> should be 1, is 1
94ac ~ /ab{0,}*c/ -> should be 1, is 1
95abc ~ /ab{0,}*c/ -> should be 1, is 1
96ac ~ /a(b{0,})*c/ -> should be 1, is 1
97abc ~ /a(b{0,})*c/ -> should be 1, is 1
98ac ~ /ab{1}c/ -> should be 0, is 0
99abc ~ /ab{1}c/ -> should be 1, is 1
100abbc ~ /ab{1}c/ -> should be 0, is 0
101ac ~ /ab{1,}c/ -> should be 0, is 0
102abc ~ /ab{1,}c/ -> should be 1, is 1
103abbc ~ /ab{1,}c/ -> should be 1, is 1
104abbbc ~ /ab{1,}c/ -> should be 1, is 1
105abbbbc ~ /ab{1,}c/ -> should be 1, is 1
106ac ~ /ab{0,1}c/ -> should be 1, is 1
107abc ~ /ab{0,1}c/ -> should be 1, is 1
108abbc ~ /ab{0,1}c/ -> should be 0, is 0
109ac ~ /ab{0,3}c/ -> should be 1, is 1
110abc ~ /ab{0,3}c/ -> should be 1, is 1
111abbc ~ /ab{0,3}c/ -> should be 1, is 1
112abbbc ~ /ab{0,3}c/ -> should be 1, is 1
113abbbbc ~ /ab{0,3}c/ -> should be 0, is 0
114ac ~ /ab{1,3}c/ -> should be 0, is 0
115abc ~ /ab{1,3}c/ -> should be 1, is 1
116abbc ~ /ab{1,3}c/ -> should be 1, is 1
117abbbc ~ /ab{1,3}c/ -> should be 1, is 1
118abbbbc ~ /ab{1,3}c/ -> should be 0, is 0
119EOF
120
121
122$awk -f prog foo.in > foo2
123diff foo1 foo2 || echo 'BAD: T.int-expr (1)'
124rm -f prog
125