Imported Upstream version 0.19.7
[platform/upstream/gettext.git] / gettext-tools / tests / format-boost-1
1 #! /bin/sh
2 . "${srcdir=.}/init.sh"; path_prepend_ . ../src
3
4 # Test recognition of Boost format strings.
5
6 cat <<\EOF > f-bo-1.data
7 # Valid: no argument
8 "abc%%"
9 # Valid: one character argument
10 "abc%c"
11 # Valid: one character argument
12 "abc%|c|"
13 # Valid: one string argument
14 "abc%s"
15 # Valid: one string argument
16 "abc%|s|"
17 # Valid: one integer argument
18 "abc%i"
19 # Valid: one integer argument
20 "abc%|i|"
21 # Valid: one integer argument
22 "abc%d"
23 # Valid: one integer argument
24 "abc%|d|"
25 # Valid: one integer argument
26 "abc%o"
27 # Valid: one integer argument
28 "abc%|o|"
29 # Valid: one integer argument
30 "abc%u"
31 # Valid: one integer argument
32 "abc%|u|"
33 # Valid: one integer argument
34 "abc%x"
35 # Valid: one integer argument
36 "abc%|x|"
37 # Valid: one integer argument
38 "abc%X"
39 # Valid: one integer argument
40 "abc%|X|"
41 # Valid: one floating-point argument
42 "abc%e"
43 # Valid: one floating-point argument
44 "abc%|e|"
45 # Valid: one floating-point argument
46 "abc%E"
47 # Valid: one floating-point argument
48 "abc%|E|"
49 # Valid: one floating-point argument
50 "abc%f"
51 # Valid: one floating-point argument
52 "abc%|f|"
53 # Valid: one floating-point argument
54 "abc%g"
55 # Valid: one floating-point argument
56 "abc%|g|"
57 # Valid: one floating-point argument
58 "abc%G"
59 # Valid: one floating-point argument
60 "abc%|G|"
61 # Valid: one pointer argument
62 "abc%p"
63 # Valid: one pointer argument
64 "abc%|p|"
65 # Valid: no argument
66 "abc%n"
67 # Valid: no argument
68 "abc%|n|"
69 # Valid: one argument with flags
70 "abc%0#g"
71 # Valid: one argument with flags
72 "abc%|0#g|"
73 # Valid: one argument with width
74 "abc%2g"
75 # Valid: one argument with width
76 "abc%|2g|"
77 # Valid: one argument with width
78 "abc%*g"
79 # Valid: one argument with width
80 "abc%|*g|"
81 # Valid: one argument with precision
82 "abc%.4g"
83 # Valid: one argument with precision
84 "abc%|.4g|"
85 # Valid: one argument with precision
86 "abc%.*g"
87 # Valid: one argument with precision
88 "abc%|.*g|"
89 # Valid: one argument with width and precision
90 "abc%14.4g"
91 # Valid: one argument with width and precision
92 "abc%|14.4g|"
93 # Valid: one argument with width and precision
94 "abc%14.*g"
95 # Valid: one argument with width and precision
96 "abc%|14.*g|"
97 # Valid: one argument with width and precision
98 "abc%*.4g"
99 # Valid: one argument with width and precision
100 "abc%|*.4g|"
101 # Valid: one argument with width and precision
102 "abc%*.*g"
103 # Valid: one argument with width and precision
104 "abc%|*.*g|"
105 # Valid: one argument with size specifier
106 "abc%hhi"
107 # Valid: one argument with size specifier
108 "abc%|hhi|"
109 # Valid: one argument with size specifier
110 "abc%hi"
111 # Valid: one argument with size specifier
112 "abc%|hi|"
113 # Valid: one argument with size specifier
114 "abc%li"
115 # Valid: one argument with size specifier
116 "abc%|li|"
117 # Valid: one argument with size specifier
118 "abc%lli"
119 # Valid: one argument with size specifier
120 "abc%|lli|"
121 # Valid: one argument with size specifier
122 "abc%Lg"
123 # Valid: one argument with size specifier
124 "abc%|Lg|"
125 # Invalid: unknown size specifier
126 "abc%qi"
127 # Invalid: unknown size specifier
128 "abc%|qi|"
129 # Invalid: unknown size specifier
130 "abc%ji"
131 # Invalid: unknown size specifier
132 "abc%|ji|"
133 # Invalid: unknown size specifier
134 "abc%zi"
135 # Invalid: unknown size specifier
136 "abc%|zi|"
137 # Invalid: unterminated
138 "abc%"
139 # Invalid: unterminated
140 "abc%|"
141 # Invalid: unterminated
142 "abc%|d"
143 # Invalid: unknown format specifier
144 "abc%a"
145 # Invalid: unknown format specifier
146 "abc%|a|"
147 # Invalid: unknown format specifier
148 "abc%A"
149 # Invalid: unknown format specifier
150 "abc%|A|"
151 # Invalid: unknown format specifier
152 "abc%F"
153 # Invalid: unknown format specifier
154 "abc%|F|"
155 # Invalid: unknown format specifier
156 "abc%y"
157 # Invalid: unknown format specifier
158 "abc%|y|"
159 # Invalid: flags after width
160 "abc%*0g"
161 # Invalid: flags after width
162 "abc%|*0g|"
163 # Invalid: twice precision
164 "abc%.4.2g"
165 # Invalid: twice precision
166 "abc%|.4.2g|"
167 # Valid: three arguments
168 "abc%d%u%u"
169 # Valid: three arguments, mixed syntax
170 "abc%|d|%u%u"
171 # Valid: three arguments, mixed syntax
172 "abc%d%u%|u|"
173 # Valid: a numbered argument
174 "abc%1$d"
175 # Valid: a numbered argument
176 "abc%|1$d|"
177 # Valid: a numbered argument
178 "abc%1%"
179 # Invalid: zero
180 "abc%0$d"
181 # Invalid: zero
182 "abc%|0$d|"
183 # Invalid: zero
184 "abc%0%def"
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
190 "abc%1"
191 # Valid: omitted directive number
192 "abc%|1|"
193 # Invalid: flags before number
194 "abc%+1$d"
195 # Invalid: flags before number
196 "abc%|+1$d|"
197 # Valid: three arguments, two with same number
198 "abc%1$4x,%2$c,%1$u"
199 # Valid: three arguments, two with same number
200 "abc%|1$4x|,%|2$c|,%|1$u|"
201 # Invalid: argument with conflicting types
202 "abc%1$4x,%2$c,%1$p"
203 # Invalid: argument with conflicting types
204 "abc%|1$4x|,%|2$c|,%|1$p|"
205 # Valid: no conflict
206 "abc%1$4x,%2$c,%1$s"
207 # Valid: no conflict
208 "abc%|1$4x|,%|2$c|,%|1$s|"
209 # Valid: no conflict
210 "abc%1$4x,%2$c,%1$u"
211 # Valid: no conflict
212 "abc%|1$4x|,%|2$c|,%|1$u|"
213 # Invalid: mixing of numbered and unnumbered arguments
214 "abc%d%2$x"
215 # Invalid: mixing of numbered and unnumbered arguments
216 "abc%|d|%|2$x|"
217 # Invalid: mixing of numbered and unnumbered arguments
218 "abc%|d|%2%"
219 # Valid: numbered argument with constant precision
220 "abc%1$.9x"
221 # Valid: numbered argument with constant precision
222 "abc%|1$.9x|"
223 # Invalid: mixing of numbered and unnumbered arguments
224 "abc%1$.*x"
225 # Invalid: mixing of numbered and unnumbered arguments
226 "abc%|1$.*x|"
227 # Valid: missing non-final argument
228 "abc%2$x%3$s"
229 # Valid: missing non-final argument
230 "abc%|2$x|%|3$s|"
231 # Valid: missing non-final argument
232 "abc%2%%3%"
233 # Valid: permutation
234 "abc%2$ddef%1$d"
235 # Valid: permutation
236 "abc%|2$d|def%|1$d|"
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
242 "abc%2$#*1$g"
243 # Valid: one argument with width
244 "abc%|2$#*1$g|"
245 # Valid: one argument with width and precision
246 "abc%3$*2$.*1$g"
247 # Valid: one argument with width and precision
248 "abc%|3$*2$.*1$g|"
249 # Invalid: zero
250 "abc%2$*0$.*1$g"
251 # Invalid: zero
252 "abc%|2$*0$.*1$g|"
253 # Valid: tab
254 "abc%t"
255 # Valid: tab
256 "abc%9t"
257 # Valid: tab
258 "abc%|9t|"
259 # Invalid: unterminated directive
260 "abc%T"
261 # Valid: tab
262 "abc%T "
263 # Valid: tab
264 "abc%99T "
265 # Invalid: unterminated directive
266 "abc%|99T "
267 # Invalid: unterminated directive
268 "abc%|99T|"
269 # Valid: tab
270 "abc%|99T |"
271 # Valid: tab
272 "abc%|99T||"
273 EOF
274
275 : ${XGETTEXT=xgettext}
276 n=0
277 while read comment; do
278   read string
279   n=`expr $n + 1`
280   cat <<EOF > f-bo-1-$n.in
281 gettext(${string});
282 EOF
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
285   fail=
286   if echo "$comment" | grep 'Valid:' > /dev/null; then
287     if grep boost-format f-bo-1-$n.po > /dev/null; then
288       :
289     else
290       fail=yes
291     fi
292   else
293     if grep boost-format f-bo-1-$n.po > /dev/null; then
294       fail=yes
295     else
296       :
297     fi
298   fi
299   if test -n "$fail"; then
300     echo "Format string recognition error:" 1>&2
301     cat f-bo-1-$n.in 1>&2
302     echo "Got:" 1>&2
303     cat f-bo-1-$n.po 1>&2
304     exit 1
305   fi
306   rm -f f-bo-1-$n.in f-bo-1-$n.po
307 done < f-bo-1.data
308
309 exit 0