2 . "${srcdir=.}/init.sh"; path_prepend_ . ../src
4 # Test recognition of Boost format strings.
6 cat <<\EOF > f-bo-1.data
9 # Valid: one character argument
11 # Valid: one character argument
13 # Valid: one string argument
15 # Valid: one string argument
17 # Valid: one integer argument
19 # Valid: one integer argument
21 # Valid: one integer argument
23 # Valid: one integer argument
25 # Valid: one integer argument
27 # Valid: one integer argument
29 # Valid: one integer argument
31 # Valid: one integer argument
33 # Valid: one integer argument
35 # Valid: one integer argument
37 # Valid: one integer argument
39 # Valid: one integer argument
41 # Valid: one floating-point argument
43 # Valid: one floating-point argument
45 # Valid: one floating-point argument
47 # Valid: one floating-point argument
49 # Valid: one floating-point argument
51 # Valid: one floating-point argument
53 # Valid: one floating-point argument
55 # Valid: one floating-point argument
57 # Valid: one floating-point argument
59 # Valid: one floating-point argument
61 # Valid: one pointer argument
63 # Valid: one pointer argument
69 # Valid: one argument with flags
71 # Valid: one argument with flags
73 # Valid: one argument with width
75 # Valid: one argument with width
77 # Valid: one argument with width
79 # Valid: one argument with width
81 # Valid: one argument with precision
83 # Valid: one argument with precision
85 # Valid: one argument with precision
87 # Valid: one argument with precision
89 # Valid: one argument with width and precision
91 # Valid: one argument with width and precision
93 # Valid: one argument with width and precision
95 # Valid: one argument with width and precision
97 # Valid: one argument with width and precision
99 # Valid: one argument with width and precision
101 # Valid: one argument with width and precision
103 # Valid: one argument with width and precision
105 # Valid: one argument with size specifier
107 # Valid: one argument with size specifier
109 # Valid: one argument with size specifier
111 # Valid: one argument with size specifier
113 # Valid: one argument with size specifier
115 # Valid: one argument with size specifier
117 # Valid: one argument with size specifier
119 # Valid: one argument with size specifier
121 # Valid: one argument with size specifier
123 # Valid: one argument with size specifier
125 # Invalid: unknown size specifier
127 # Invalid: unknown size specifier
129 # Invalid: unknown size specifier
131 # Invalid: unknown size specifier
133 # Invalid: unknown size specifier
135 # Invalid: unknown size specifier
137 # Invalid: unterminated
139 # Invalid: unterminated
141 # Invalid: unterminated
143 # Invalid: unknown format specifier
145 # Invalid: unknown format specifier
147 # Invalid: unknown format specifier
149 # Invalid: unknown format specifier
151 # Invalid: unknown format specifier
153 # Invalid: unknown format specifier
155 # Invalid: unknown format specifier
157 # Invalid: unknown format specifier
159 # Invalid: flags after width
161 # Invalid: flags after width
163 # Invalid: twice precision
165 # Invalid: twice precision
167 # Valid: three arguments
169 # Valid: three arguments, mixed syntax
171 # Valid: three arguments, mixed syntax
173 # Valid: a numbered argument
175 # Valid: a numbered argument
177 # Valid: a numbered argument
185 # Valid: two-digit numbered arguments
186 "abc%11$def%10$dgh%9$dij%8$dkl%7$dmn%6$dop%5$dqr%4$dst%3$duv%2$dwx%1$dyz"
187 # Valid: two-digit numbered arguments
188 "abc%|11$d|ef%|10$d|gh%|9$d|ij%|8$d|kl%|7$d|mn%|6$d|op%|5$d|qr%|4$d|st%|3$d|uv%|2$d|wx%|1$d|yz"
189 # Invalid: unterminated number
191 # Valid: omitted directive number
193 # Invalid: flags before number
195 # Invalid: flags before number
197 # Valid: three arguments, two with same number
199 # Valid: three arguments, two with same number
200 "abc%|1$4x|,%|2$c|,%|1$u|"
201 # Invalid: argument with conflicting types
203 # Invalid: argument with conflicting types
204 "abc%|1$4x|,%|2$c|,%|1$p|"
208 "abc%|1$4x|,%|2$c|,%|1$s|"
212 "abc%|1$4x|,%|2$c|,%|1$u|"
213 # Invalid: mixing of numbered and unnumbered arguments
215 # Invalid: mixing of numbered and unnumbered arguments
217 # Invalid: mixing of numbered and unnumbered arguments
219 # Valid: numbered argument with constant precision
221 # Valid: numbered argument with constant precision
223 # Invalid: mixing of numbered and unnumbered arguments
225 # Invalid: mixing of numbered and unnumbered arguments
227 # Valid: missing non-final argument
229 # Valid: missing non-final argument
231 # Valid: missing non-final argument
237 # Valid: multiple uses of same argument
238 "abc%2$xdef%1$pghi%2$x"
239 # Valid: multiple uses of same argument
240 "abc%|2$x|def%|1$p|ghi|%2$x|"
241 # Valid: one argument with width
243 # Valid: one argument with width
245 # Valid: one argument with width and precision
247 # Valid: one argument with width and precision
259 # Invalid: unterminated directive
265 # Invalid: unterminated directive
267 # Invalid: unterminated directive
275 : ${XGETTEXT=xgettext}
277 while read comment; do
280 cat <<EOF > f-bo-1-$n.in
283 ${XGETTEXT} -L C++ --boost -o f-bo-1-$n.po f-bo-1-$n.in || exit 1
284 test -f f-bo-1-$n.po || exit 1
286 if echo "$comment" | grep 'Valid:' > /dev/null; then
287 if grep boost-format f-bo-1-$n.po > /dev/null; then
293 if grep boost-format f-bo-1-$n.po > /dev/null; then
299 if test -n "$fail"; then
300 echo "Format string recognition error:" 1>&2
301 cat f-bo-1-$n.in 1>&2
303 cat f-bo-1-$n.po 1>&2
306 rm -f f-bo-1-$n.in f-bo-1-$n.po