2 . "${srcdir=.}/init.sh"; path_prepend_ . ../src
4 # Test recognition of Scheme format strings.
6 cat <<\EOF > f-sc-1.data
7 # Valid: no argument, ( | . *)
9 # Valid: one argument, (* | . *)
11 # Valid: 11 arguments, (* * * * * * * * * * * | . *)
13 # Invalid: unterminated
15 # Invalid: unterminated
17 # Invalid: unterminated
19 # Invalid: unterminated
25 # Valid: colon and atsign
27 # Valid: atsign and colon
29 # Valid: params before atsign and colon
31 # Invalid: params after atsign and colon
33 # Invalid: params after atsign and colon
35 # Invalid: params after atsign and colon
37 # Valid: V and # params, (i() * | . *)
39 # Invalid: wrong type params
41 # Valid: FORMAT-ASCII, (i() i() i() c() * | . *)
43 # Invalid: too many params
45 # Valid: FORMAT-S-EXPRESSION, (i() i() i() c() * | . *)
47 # Invalid: too many params
49 # Valid: FORMAT-PRETTY, (* | . *)
51 # Invalid: too many params
53 # Valid: FORMAT-DECIMAL, (i() c() c() i() i | . *)
55 # Invalid: too many params
57 # Valid: FORMAT-BINARY, (i() c() c() i() i | . *)
59 # Invalid: too many params
61 # Valid: FORMAT-OCTAL, (i() c() c() i() i | . *)
63 # Invalid: too many params
65 # Valid: FORMAT-HEXADECIMAL, (i() c() c() i() i | . *)
67 # Invalid: too many params
69 # Valid: FORMAT-RADIX, (i() i() c() c() i() i | . *)
71 # Invalid: too many params
73 # Valid: FORMAT-PLURAL, (* | . *)
75 # Valid: FORMAT-PLURAL, (i | . *)
77 # Invalid: too many params
79 # Valid: FORMAT-CHARACTER, (c | . *)
81 # Valid: FORMAT-CHARACTER, ( | . *)
83 # Invalid: too many params
85 # Valid: FORMAT-FIXED-FLOAT, (i() i() i() c() c() r | . *)
87 # Invalid: too many params
89 # Valid: FORMAT-EXPONENTIAL-FLOAT, (i() i() i() i() c() c() c() r | . *)
91 # Invalid: too many params
92 "abc~v,v,v,v,v,v,v,5E"
93 # Valid: FORMAT-GENERAL-FLOAT, (i() i() i() i() c() c() c() r | . *)
95 # Invalid: too many params
96 "abc~v,v,v,v,v,v,v,5G"
97 # Valid: FORMAT-DOLLARS-FLOAT, (i() i() i() c() r | . *)
99 # Invalid: too many params
101 # Valid: FORMAT-FIXED-FLOAT-COMPLEX, (C | .*)
103 # Valid: FORMAT-TERPRI, (i() | . *)
105 # Invalid: too many params
107 # Valid: FORMAT-FRESH-LINE, (i() | . *)
109 # Invalid: too many params
111 # Valid: FORMAT-SPACE, (i() | . *)
113 # Invalid: too many params
115 # Valid: FORMAT-TAB, (i() | . *)
117 # Invalid: too many params
119 # Valid: FORMAT-PAGE, (i() | . *)
121 # Invalid: too many params
123 # Valid: FORMAT-TILDE, (i() | . *)
125 # Invalid: too many params
127 # Valid: FORMAT-FORCE-OUTPUT, ( | . *)
129 # Invalid: too many params
131 # Valid: FORMAT-IMPLEMENTATION, ( | . *)
133 # Invalid: too many params
135 # Valid: FORMAT-TABULATE, (i() i() c() | . *)
137 # Invalid: too many params
139 # Valid: FORMAT-GOTO absolute, (* r c | . *)
141 # Invalid: type incompatibility
143 # Valid: FORMAT-GOTO backward, (* c r | . *)
145 # Invalid: type incompatibility
147 # Invalid: too many params
149 # Valid: FORMAT-GOTO with large number
150 "abc~S~F~S~1000000@*~C"
151 # Valid: FORMAT-INDIRECTION, (~ ( | . *) | . *)
153 # Valid: FORMAT-INDIRECTION, (~ | . *)
155 # Invalid: too many params
157 # Valid: FORMAT-INDIRECTION, (~ ( | . *) | . *)
159 # Valid: FORMAT-INDIRECTION, (~ | . *)
161 # Invalid: too many params
163 # Valid: FORMAT-CASE-CONVERSION, (* | . *)
165 # Invalid: too many params
167 # Invalid: too many params
169 # Invalid: unterminated
173 # Valid: FORMAT-CONDITIONAL, (i() c | . *)
175 # Valid: FORMAT-CONDITIONAL, (i() | . *)
179 # Valid: FORMAT-CONDITIONAL, (* i c | . *)
181 # Invalid: missing separator
183 # Invalid: too many separators
184 "abc~:[~X~;~D~;~E~]~C"
185 # Valid: FORMAT-CONDITIONAL, (* | . *)
187 # Valid: FORMAT-CONDITIONAL, (* i c | . *)
188 "abc~[~D~;~X~:;~R~]~C"
189 # Invalid: default clause not last
190 "abc~[~D~;~X~:;~R~;~R~]~C"
191 # Invalid: too many params
193 # Invalid: too many params
195 # Invalid: too many params
197 # Invalid: too many params
199 # Invalid: too many params
201 # Valid: FORMAT-CONDITIONAL, one param, without colon or atsign
203 # Invalid: too many params
205 # Invalid: too many params
207 # Invalid: too many params
209 # Valid: FORMAT-ITERATION, (( | . *) | . *)
211 # Valid: FORMAT-ITERATION, (( | . ( | . *)) | . *)
213 # Valid: FORMAT-ITERATION, ( | . *)
215 # Valid: FORMAT-ITERATION, ( | . ( | . *))
217 # Valid: FORMAT-ITERATION with indirection, (~ ( | . *) | . *)
219 # Valid: FORMAT-ITERATION with indirection, (~ ( | . ( | . *)) | . *)
221 # Valid: FORMAT-ITERATION with indirection, (~ | . *)
223 # Valid: FORMAT-ITERATION with indirection, (~ | . ( | . *))
225 # Valid: FORMAT-ITERATION with loop, (( | . i c) | . *)
227 # Valid: FORMAT-ITERATION with loop, (( | . (i c | . *)) | . *)
229 # Valid: FORMAT-ITERATION with loop, ( | . i c)
231 # Valid: FORMAT-ITERATION with loop, ( | . (i c | . *))
233 # Valid: FORMAT-ITERATION with variable-advance loop, (( | . *) | . *)
235 # Valid: FORMAT-ITERATION with variable-advance loop, (( | . (* | . *)) | . *)
237 # Valid: FORMAT-ITERATION with variable-advance loop, ( | . *)
239 # Valid: FORMAT-ITERATION with variable-advance loop, ( | . (* | . *))
243 # Invalid: wrongly nested
245 # Valid: any number of arguments
247 # Invalid: type incompatibility between integer and list
249 # Invalid: type incompatibility between real and list
251 # Valid: list must be empty
255 : ${XGETTEXT=xgettext}
257 while read comment; do
260 cat <<EOF > f-sc-1-$n.in
263 ${XGETTEXT} -L Scheme -o f-sc-1-$n.po f-sc-1-$n.in || exit 1
264 test -f f-sc-1-$n.po || exit 1
266 if echo "$comment" | grep 'Valid:' > /dev/null; then
267 if grep scheme-format f-sc-1-$n.po > /dev/null; then
273 if grep scheme-format f-sc-1-$n.po > /dev/null; then
279 if test -n "$fail"; then
280 echo "Format string recognition error:" 1>&2
281 cat f-sc-1-$n.in 1>&2
283 cat f-sc-1-$n.po 1>&2
286 rm -f f-sc-1-$n.in f-sc-1-$n.po