Imported Upstream version 0.19.7
[platform/upstream/gettext.git] / gettext-tools / tests / format-scheme-1
1 #! /bin/sh
2 . "${srcdir=.}/init.sh"; path_prepend_ . ../src
3
4 # Test recognition of Scheme format strings.
5
6 cat <<\EOF > f-sc-1.data
7 # Valid: no argument, ( | . *)
8 "abc~~def"
9 # Valid: one argument, (* | . *)
10 "abc~Sdef"
11 # Valid: 11 arguments, (* * * * * * * * * * * | . *)
12 "abc~10@*~Sdef"
13 # Invalid: unterminated
14 "abc~~def~"
15 # Invalid: unterminated
16 "abc~~def~1"
17 # Invalid: unterminated
18 "abc~~def~:"
19 # Invalid: unterminated
20 "abc~~def~@"
21 # Valid: colon
22 "abc~:Sdef"
23 # Valid: atsign
24 "abc~@Sdef"
25 # Valid: colon and atsign
26 "abc~:@Sdef"
27 # Valid: atsign and colon
28 "abc~@:Sdef"
29 # Valid: params before atsign and colon
30 "abc~3,-4,,'*@:Sdef"
31 # Invalid: params after atsign and colon
32 "abc~@:3,-4Sdef"
33 # Invalid: params after atsign and colon
34 "abc~@:-4Sdef"
35 # Invalid: params after atsign and colon
36 "abc~@:,-4Sdef"
37 # Valid: V and # params, (i() * | . *)
38 "abc~#,vSdef"
39 # Invalid: wrong type params
40 "abc~,'*Sdef"
41 # Valid: FORMAT-ASCII, (i() i() i() c() * | . *)
42 "abc~v,v,v,vA"
43 # Invalid: too many params
44 "abc~v,v,v,v,5A"
45 # Valid: FORMAT-S-EXPRESSION, (i() i() i() c() * | . *)
46 "abc~v,v,v,vS"
47 # Invalid: too many params
48 "abc~v,v,v,v,5S"
49 # Valid: FORMAT-PRETTY, (* | . *)
50 "abc~Y"
51 # Invalid: too many params
52 "abc~3Y"
53 # Valid: FORMAT-DECIMAL, (i() c() c() i() i | . *)
54 "abc~v,v,v,vD"
55 # Invalid: too many params
56 "abc~v,v,v,v,5D"
57 # Valid: FORMAT-BINARY, (i() c() c() i() i | . *)
58 "abc~v,v,v,vB"
59 # Invalid: too many params
60 "abc~v,v,v,v,5B"
61 # Valid: FORMAT-OCTAL, (i() c() c() i() i | . *)
62 "abc~v,v,v,vO"
63 # Invalid: too many params
64 "abc~v,v,v,v,5O"
65 # Valid: FORMAT-HEXADECIMAL, (i() c() c() i() i | . *)
66 "abc~v,v,v,vX"
67 # Invalid: too many params
68 "abc~v,v,v,v,5X"
69 # Valid: FORMAT-RADIX, (i() i() c() c() i() i | . *)
70 "abc~v,v,v,v,vR"
71 # Invalid: too many params
72 "abc~v,v,v,v,v,5R"
73 # Valid: FORMAT-PLURAL, (* | . *)
74 "abc~P"
75 # Valid: FORMAT-PLURAL, (i | . *)
76 "abc~R egg~:P"
77 # Invalid: too many params
78 "abc~2P"
79 # Valid: FORMAT-CHARACTER, (c | . *)
80 "abc~C"
81 # Valid: FORMAT-CHARACTER, ( | . *)
82 "abc~4C"
83 # Invalid: too many params
84 "abc~4,4C"
85 # Valid: FORMAT-FIXED-FLOAT, (i() i() i() c() c() r | . *)
86 "abc~v,v,v,v,vF"
87 # Invalid: too many params
88 "abc~v,v,v,v,v,5F"
89 # Valid: FORMAT-EXPONENTIAL-FLOAT, (i() i() i() i() c() c() c() r | . *)
90 "abc~v,v,v,v,v,v,vE"
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 | . *)
94 "abc~v,v,v,v,v,v,vG"
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 | . *)
98 "abc~v,v,v,v$"
99 # Invalid: too many params
100 "abc~v,v,v,v,5$"
101 # Valid: FORMAT-FIXED-FLOAT-COMPLEX, (C | .*)
102 "abc~I"
103 # Valid: FORMAT-TERPRI, (i() | . *)
104 "abc~v%"
105 # Invalid: too many params
106 "abc~v,5%"
107 # Valid: FORMAT-FRESH-LINE, (i() | . *)
108 "abc~v&"
109 # Invalid: too many params
110 "abc~v,5&"
111 # Valid: FORMAT-SPACE, (i() | . *)
112 "abc~v_"
113 # Invalid: too many params
114 "abc~v,5_"
115 # Valid: FORMAT-TAB, (i() | . *)
116 "abc~v/"
117 # Invalid: too many params
118 "abc~v,5/"
119 # Valid: FORMAT-PAGE, (i() | . *)
120 "abc~v|"
121 # Invalid: too many params
122 "abc~v,5|"
123 # Valid: FORMAT-TILDE, (i() | . *)
124 "abc~v~"
125 # Invalid: too many params
126 "abc~v,5~"
127 # Valid: FORMAT-FORCE-OUTPUT, ( | . *)
128 "abc~!"
129 # Invalid: too many params
130 "abc~5!"
131 # Valid: FORMAT-IMPLEMENTATION, ( | . *)
132 "abc~Q"
133 # Invalid: too many params
134 "abc~5Q"
135 # Valid: FORMAT-TABULATE, (i() i() c() | . *)
136 "abc~v,v,vT"
137 # Invalid: too many params
138 "abc~v,v,v,5T"
139 # Valid: FORMAT-GOTO absolute, (* r c | . *)
140 "abc~S~F~S~2@*~C"
141 # Invalid: type incompatibility
142 "abc~S~F~S~1@*~C"
143 # Valid: FORMAT-GOTO backward, (* c r | . *)
144 "abc~S~S~F~2:*~C"
145 # Invalid: type incompatibility
146 "abc~S~S~F~1:*~C"
147 # Invalid: too many params
148 "abc~v,4*"
149 # Valid: FORMAT-GOTO with large number
150 "abc~S~F~S~1000000@*~C"
151 # Valid: FORMAT-INDIRECTION, (~ ( | . *) | . *)
152 "abc~?"
153 # Valid: FORMAT-INDIRECTION, (~ | . *)
154 "abc~@?"
155 # Invalid: too many params
156 "abc~4?"
157 # Valid: FORMAT-INDIRECTION, (~ ( | . *) | . *)
158 "abc~K"
159 # Valid: FORMAT-INDIRECTION, (~ | . *)
160 "abc~@K"
161 # Invalid: too many params
162 "abc~4K"
163 # Valid: FORMAT-CASE-CONVERSION, (* | . *)
164 "abc~(~S~)"
165 # Invalid: too many params
166 "abc~4(~S~)"
167 # Invalid: too many params
168 "abc~(~S~4)"
169 # Invalid: unterminated
170 "abc~(~S"
171 # Invalid: separator
172 "abc~(~S~;~S~)"
173 # Valid: FORMAT-CONDITIONAL, (i() c | . *)
174 "abc~@[~D~]~C"
175 # Valid: FORMAT-CONDITIONAL, (i() | . *)
176 "abc~@[~D~D~]~C"
177 # Invalid: separator
178 "abc~@[~D~;~D~]~C"
179 # Valid: FORMAT-CONDITIONAL, (* i c | . *)
180 "abc~:[~X~;~D~]~C"
181 # Invalid: missing separator
182 "abc~:[~D~]~C"
183 # Invalid: too many separators
184 "abc~:[~X~;~D~;~E~]~C"
185 # Valid: FORMAT-CONDITIONAL, (* | . *)
186 "abc~[~D~;~X~]~C"
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
192 "abc~4@[~D~]"
193 # Invalid: too many params
194 "abc~@[~D~4]"
195 # Invalid: too many params
196 "abc~4:[~D~;~X~]"
197 # Invalid: too many params
198 "abc~:[~D~4;~X~]"
199 # Invalid: too many params
200 "abc~:[~D~;~X~4]"
201 # Valid: FORMAT-CONDITIONAL, one param, without colon or atsign
202 "abc~4[~D~;~X~]"
203 # Invalid: too many params
204 "abc~4,4[~D~;~X~]"
205 # Invalid: too many params
206 "abc~[~D~4;~X~]"
207 # Invalid: too many params
208 "abc~[~D~;~X~4]"
209 # Valid: FORMAT-ITERATION, (( | . *) | . *)
210 "abc~{~~~}"
211 # Valid: FORMAT-ITERATION, (( | . ( | . *)) | . *)
212 "abc~:{~~~}"
213 # Valid: FORMAT-ITERATION, ( | . *)
214 "abc~@{~~~}"
215 # Valid: FORMAT-ITERATION, ( | . ( | . *))
216 "abc~:@{~~~}"
217 # Valid: FORMAT-ITERATION with indirection, (~ ( | . *) | . *)
218 "abc~{~}"
219 # Valid: FORMAT-ITERATION with indirection, (~ ( | . ( | . *)) | . *)
220 "abc~:{~}"
221 # Valid: FORMAT-ITERATION with indirection, (~ | . *)
222 "abc~@{~}"
223 # Valid: FORMAT-ITERATION with indirection, (~ | . ( | . *))
224 "abc~:@{~}"
225 # Valid: FORMAT-ITERATION with loop, (( | . i c) | . *)
226 "abc~{~D ~C~}"
227 # Valid: FORMAT-ITERATION with loop, (( | . (i c | . *)) | . *)
228 "abc~:{~D ~C~}"
229 # Valid: FORMAT-ITERATION with loop, ( | . i c)
230 "abc~@{~D ~C~}"
231 # Valid: FORMAT-ITERATION with loop, ( | . (i c | . *))
232 "abc~:@{~D ~C~}"
233 # Valid: FORMAT-ITERATION with variable-advance loop, (( | . *) | . *)
234 "abc~{~[~D~]~}"
235 # Valid: FORMAT-ITERATION with variable-advance loop, (( | . (* | . *)) | . *)
236 "abc~:{~[~D~]~}"
237 # Valid: FORMAT-ITERATION with variable-advance loop, ( | . *)
238 "abc~@{~[~D~]~}"
239 # Valid: FORMAT-ITERATION with variable-advance loop, ( | . (* | . *))
240 "abc~:@{~[~D~]~}"
241 # Invalid: separator
242 "abc~{~D~;~C~}"
243 # Invalid: wrongly nested
244 "abc~{~(~}~)"
245 # Valid: any number of arguments
246 "abc~v,v,v,v,v!"
247 # Invalid: type incompatibility between integer and list
248 "abc~D~:*~{~D~}"
249 # Invalid: type incompatibility between real and list
250 "abc~{~S~}~:*~F"
251 # Valid: list must be empty
252 "abc~{~C~}~:*~{~D~}"
253 EOF
254
255 : ${XGETTEXT=xgettext}
256 n=0
257 while read comment; do
258   read string
259   n=`expr $n + 1`
260   cat <<EOF > f-sc-1-$n.in
261 (gettext ${string})
262 EOF
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
265   fail=
266   if echo "$comment" | grep 'Valid:' > /dev/null; then
267     if grep scheme-format f-sc-1-$n.po > /dev/null; then
268       :
269     else
270       fail=yes
271     fi
272   else
273     if grep scheme-format f-sc-1-$n.po > /dev/null; then
274       fail=yes
275     else
276       :
277     fi
278   fi
279   if test -n "$fail"; then
280     echo "Format string recognition error:" 1>&2
281     cat f-sc-1-$n.in 1>&2
282     echo "Got:" 1>&2
283     cat f-sc-1-$n.po 1>&2
284     exit 1
285   fi
286   rm -f f-sc-1-$n.in f-sc-1-$n.po
287 done < f-sc-1.data
288
289 exit 0