Imported Upstream version 0.18.1.1
[platform/upstream/gettext.git] / gettext-tools / tests / format-pascal-1
1 #! /bin/sh
2
3 # Test recognition of Object Pascal format strings.
4
5 tmpfiles=""
6 trap 'rm -fr $tmpfiles' 1 2 3 15
7
8 tmpfiles="$tmpfiles f-op-1.data"
9 cat <<\EOF > f-op-1.data
10 # Valid: no argument
11 "abc%%"
12 # Valid: one string argument
13 "abc%s"
14 # Valid: one integer argument
15 "abc%d"
16 # Valid: one integer argument
17 "abc%X"
18 # Valid: one floating-point argument
19 "abc%e"
20 # Valid: one floating-point argument
21 "abc%f"
22 # Valid: one floating-point argument
23 "abc%g"
24 # Valid: one floating-point argument
25 "abc%n"
26 # Valid: one floating-point argument
27 "abc%m"
28 # Valid: one pointer argument
29 "abc%p"
30 # Valid: one argument with flags
31 "abc%-g"
32 # Valid: one argument with width
33 "abc%2g"
34 # Valid: one argument with width
35 "abc%*g"
36 # Valid: one argument with precision
37 "abc%.4g"
38 # Valid: one argument with precision
39 "abc%.*g"
40 # Valid: one argument with width and precision
41 "abc%14.4g"
42 # Valid: one argument with width and precision
43 "abc%14.*g"
44 # Valid: one argument with width and precision
45 "abc%*.4g"
46 # Valid: one argument with width and precision
47 "abc%*.*g"
48 # Invalid: unterminated
49 "abc%"
50 # Invalid: unknown format specifier
51 "abc%y"
52 # Invalid: flags after width
53 "abc%*-g"
54 # Invalid: twice precision
55 "abc%.4.2g"
56 # Valid: three arguments
57 "abc%d%x%x"
58 # Valid: a numbered argument
59 "abc%0:d"
60 # Valid: a numbered argument with omitted number
61 "abc%:d"
62 # Valid: two-digit numbered arguments
63 "abc%10:def%9:dgh%8:dij%7:dkl%6:dmn%5:dop%4:dqr%3:dst%2:duv%1:dwx%0:dyz"
64 # Invalid: unterminated number
65 "abc%1"
66 # Invalid: flags before number
67 "abc%-0:d"
68 # Valid: three arguments, two with same number
69 "abc%0:4e,%1:p,%0:g"
70 # Invalid: argument with conflicting types
71 "abc%0:4x,%1:p,%0:s"
72 # Invalid: argument with conflicting types
73 "abc%0:4e,%1:p,%0:d"
74 # Valid: argument with different but not conflicting types
75 "abc%0:4x,%1:p,%0:d"
76 # Valid: mixing of numbered and unnumbered arguments
77 "abc%d%1:x"
78 # Valid: numbered argument with constant precision
79 "abc%0:.9x"
80 # Valid: mixing of numbered and unnumbered arguments
81 "abc%3:.*x"
82 # Valid: missing non-final argument
83 "abc%1:x%3:s"
84 # Valid: permutation
85 "abc%1:ddef%0:d"
86 # Valid: multiple uses of same argument
87 "abc%2:xdef%1:pghi%2:x"
88 # Valid: one argument with width
89 "abc%1:*g"
90 # Valid: one argument with width and precision
91 "abc%2:*.*g"
92 EOF
93
94 : ${XGETTEXT=xgettext}
95 n=0
96 while read comment; do
97   read string
98   n=`expr $n + 1`
99   tmpfiles="$tmpfiles f-op-1-$n.in f-op-1-$n.po"
100   echo "x.y=${string}" | sed -e "s/\"/'/g" > f-op-1-$n.in
101   ${XGETTEXT} -L RST -o f-op-1-$n.po f-op-1-$n.in || exit 1
102   test -f f-op-1-$n.po || exit 1
103   fail=
104   if echo "$comment" | grep 'Valid:' > /dev/null; then
105     if grep object-pascal-format f-op-1-$n.po > /dev/null; then
106       :
107     else
108       fail=yes
109     fi
110   else
111     if grep object-pascal-format f-op-1-$n.po > /dev/null; then
112       fail=yes
113     else
114       :
115     fi
116   fi
117   if test -n "$fail"; then
118     echo "Format string recognition error:" 1>&2
119     cat f-op-1-$n.in 1>&2
120     echo "Got:" 1>&2
121     cat f-op-1-$n.po 1>&2
122     exit 1
123   fi
124   rm -f f-op-1-$n.in f-op-1-$n.po
125 done < f-op-1.data
126
127 rm -fr $tmpfiles
128
129 exit 0