Imported Upstream version 0.19.7
[platform/upstream/gettext.git] / gettext-tools / tests / format-lisp-1
1 #! /bin/sh
2 . "${srcdir=.}/init.sh"; path_prepend_ . ../src
3
4 # Test recognition of Lisp format strings.
5
6 cat <<\EOF > f-l-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-WRITE, (* | . *)
50 "abc~W"
51 # Invalid: too many params
52 "abc~3W"
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 # Invalid: too many params
82 "abc~4C"
83 # Valid: FORMAT-FIXED-FLOAT, (i() i() i() c() c() r | . *)
84 "abc~v,v,v,v,vF"
85 # Invalid: too many params
86 "abc~v,v,v,v,v,5F"
87 # Valid: FORMAT-EXPONENTIAL-FLOAT, (i() i() i() i() c() c() c() r | . *)
88 "abc~v,v,v,v,v,v,vE"
89 # Invalid: too many params
90 "abc~v,v,v,v,v,v,v,5E"
91 # Valid: FORMAT-GENERAL-FLOAT, (i() i() i() i() c() c() c() r | . *)
92 "abc~v,v,v,v,v,v,vG"
93 # Invalid: too many params
94 "abc~v,v,v,v,v,v,v,5G"
95 # Valid: FORMAT-DOLLARS-FLOAT, (i() i() i() c() r | . *)
96 "abc~v,v,v,v$"
97 # Invalid: too many params
98 "abc~v,v,v,v,5$"
99 # Valid: FORMAT-TERPRI, (i() | . *)
100 "abc~v%"
101 # Invalid: too many params
102 "abc~v,5%"
103 # Valid: FORMAT-FRESH-LINE, (i() | . *)
104 "abc~v&"
105 # Invalid: too many params
106 "abc~v,5&"
107 # Valid: FORMAT-PAGE, (i() | . *)
108 "abc~v|"
109 # Invalid: too many params
110 "abc~v,5|"
111 # Valid: FORMAT-TILDE, (i() | . *)
112 "abc~v~"
113 # Invalid: too many params
114 "abc~v,5~"
115 # Valid: underscore, ( | . *)
116 "abc~_"
117 # Invalid: too many params
118 "abc~5_"
119 # Valid: FORMAT-TABULATE, (i() i() | . *)
120 "abc~v,vT"
121 # Invalid: too many params
122 "abc~v,v,5T"
123 # Valid: FORMAT-GOTO absolute, (* r c | . *)
124 "abc~S~F~S~2@*~C"
125 # Invalid: type incompatibility
126 "abc~S~F~S~1@*~C"
127 # Valid: FORMAT-GOTO backward, (* c r | . *)
128 "abc~S~S~F~2:*~C"
129 # Invalid: type incompatibility
130 "abc~S~S~F~1:*~C"
131 # Invalid: too many params
132 "abc~v,4*"
133 # Valid: FORMAT-GOTO with large number
134 "abc~S~F~S~1000000@*~C"
135 # Valid: FORMAT-INDIRECTION, (~ ( | . *) | . *)
136 "abc~?"
137 # Valid: FORMAT-INDIRECTION, (~ | . *)
138 "abc~@?"
139 # Invalid: too many params
140 "abc~4?"
141 # Valid: FORMAT-CALL-USER-FUNCTION, (* | . *)
142 "abc~/FOOBAR/"
143 # Invalid: too many params
144 "abc~4/FOOBAR/"
145 # Invalid: unterminated
146 "abc~/FOOB"
147 # Invalid: nesting mismatch
148 "abc~(~/FOOB~)/"
149 # Valid: FORMAT-CASE-CONVERSION, (* | . *)
150 "abc~(~S~)"
151 # Invalid: too many params
152 "abc~4(~S~)"
153 # Invalid: too many params
154 "abc~(~S~4)"
155 # Invalid: unterminated
156 "abc~(~S"
157 # Invalid: separator
158 "abc~(~S~;~S~)"
159 # Valid: FORMAT-CONDITIONAL, (i() c | . *)
160 "abc~@[~D~]~C"
161 # Valid: FORMAT-CONDITIONAL, (i() | . *)
162 "abc~@[~D~D~]~C"
163 # Invalid: separator
164 "abc~@[~D~;~D~]~C"
165 # Valid: FORMAT-CONDITIONAL, (* i c | . *)
166 "abc~:[~X~;~D~]~C"
167 # Invalid: missing separator
168 "abc~:[~D~]~C"
169 # Invalid: too many separators
170 "abc~:[~X~;~D~;~E~]~C"
171 # Valid: FORMAT-CONDITIONAL, (* | . *)
172 "abc~[~D~;~X~]~C"
173 # Valid: FORMAT-CONDITIONAL, (* i c | . *)
174 "abc~[~D~;~X~:;~R~]~C"
175 # Invalid: default clause not last
176 "abc~[~D~;~X~:;~R~;~R~]~C"
177 # Invalid: too many params
178 "abc~4@[~D~]"
179 # Invalid: too many params
180 "abc~@[~D~4]"
181 # Invalid: too many params
182 "abc~4:[~D~;~X~]"
183 # Invalid: too many params
184 "abc~:[~D~4;~X~]"
185 # Invalid: too many params
186 "abc~:[~D~;~X~4]"
187 # Valid: FORMAT-CONDITIONAL, one param, without colon or atsign
188 "abc~4[~D~;~X~]"
189 # Invalid: too many params
190 "abc~4,4[~D~;~X~]"
191 # Invalid: too many params
192 "abc~[~D~4;~X~]"
193 # Invalid: too many params
194 "abc~[~D~;~X~4]"
195 # Valid: FORMAT-ITERATION, (( | . *) | . *)
196 "abc~{~~~}"
197 # Valid: FORMAT-ITERATION, (( | . ( | . *)) | . *)
198 "abc~:{~~~}"
199 # Valid: FORMAT-ITERATION, ( | . *)
200 "abc~@{~~~}"
201 # Valid: FORMAT-ITERATION, ( | . ( | . *))
202 "abc~:@{~~~}"
203 # Valid: FORMAT-ITERATION with indirection, (~ ( | . *) | . *)
204 "abc~{~}"
205 # Valid: FORMAT-ITERATION with indirection, (~ ( | . ( | . *)) | . *)
206 "abc~:{~}"
207 # Valid: FORMAT-ITERATION with indirection, (~ | . *)
208 "abc~@{~}"
209 # Valid: FORMAT-ITERATION with indirection, (~ | . ( | . *))
210 "abc~:@{~}"
211 # Valid: FORMAT-ITERATION with loop, (( | . i c) | . *)
212 "abc~{~D ~C~}"
213 # Valid: FORMAT-ITERATION with loop, (( | . (i c | . *)) | . *)
214 "abc~:{~D ~C~}"
215 # Valid: FORMAT-ITERATION with loop, ( | . i c)
216 "abc~@{~D ~C~}"
217 # Valid: FORMAT-ITERATION with loop, ( | . (i c | . *))
218 "abc~:@{~D ~C~}"
219 # Valid: FORMAT-ITERATION with variable-advance loop, (( | . *) | . *)
220 "abc~{~[~D~]~}"
221 # Valid: FORMAT-ITERATION with variable-advance loop, (( | . (* | . *)) | . *)
222 "abc~:{~[~D~]~}"
223 # Valid: FORMAT-ITERATION with variable-advance loop, ( | . *)
224 "abc~@{~[~D~]~}"
225 # Valid: FORMAT-ITERATION with variable-advance loop, ( | . (* | . *))
226 "abc~:@{~[~D~]~}"
227 # Invalid: separator
228 "abc~{~D~;~C~}"
229 # Valid: FORMAT-JUSTIFICATION, (i() i() i() c() i | . *)
230 "abc~v,v,v,v<~D~>"
231 # Invalid: too many params
232 "abc~v,v,v,v,4<~D~>"
233 # Valid: separators
234 "abc~<~D~;~X~;def~>"
235 # Invalid: wrongly nested
236 "abc~<~(~>~)"
237 # Invalid: wrongly nested
238 "abc~{~(~}~)"
239 # Invalid: wrongly nested
240 "abc~{~<~}~>"
241 # Valid: FORMAT-CALL, (f * | . *)
242 "abc~!"
243 # Valid: any number of arguments
244 "abc~v,v,v,v,v!"
245 # Invalid: type incompatibility between integer and list
246 "abc~D~:*~{~D~}"
247 # Invalid: type incompatibility between real and list
248 "abc~{~S~}~:*~F"
249 # Valid: list must be empty
250 "abc~{~C~}~:*~{~D~}"
251 EOF
252
253 : ${XGETTEXT=xgettext}
254 n=0
255 while read comment; do
256   read string
257   n=`expr $n + 1`
258   cat <<EOF > f-l-1-$n.in
259 (gettext ${string})
260 EOF
261   ${XGETTEXT} -L Lisp -o f-l-1-$n.po f-l-1-$n.in || exit 1
262   test -f f-l-1-$n.po || exit 1
263   fail=
264   if echo "$comment" | grep 'Valid:' > /dev/null; then
265     if grep lisp-format f-l-1-$n.po > /dev/null; then
266       :
267     else
268       fail=yes
269     fi
270   else
271     if grep lisp-format f-l-1-$n.po > /dev/null; then
272       fail=yes
273     else
274       :
275     fi
276   fi
277   if test -n "$fail"; then
278     echo "Format string recognition error:" 1>&2
279     cat f-l-1-$n.in 1>&2
280     echo "Got:" 1>&2
281     cat f-l-1-$n.po 1>&2
282     exit 1
283   fi
284   rm -f f-l-1-$n.in f-l-1-$n.po
285 done < f-l-1.data
286
287 exit 0