xref: /netbsd-src/external/gpl2/gettext/dist/gettext-tools/tests/format-java-1 (revision 946379e7b37692fc43f68eb0d1c10daa0a7f3b6c)
1*946379e7Schristos#! /bin/sh
2*946379e7Schristos
3*946379e7Schristos# Test recognition of Java format strings.
4*946379e7Schristos
5*946379e7Schristostmpfiles=""
6*946379e7Schristostrap 'rm -fr $tmpfiles' 1 2 3 15
7*946379e7Schristos
8*946379e7Schristostmpfiles="$tmpfiles f-j-1.data"
9*946379e7Schristoscat <<\EOF > f-j-1.data
10*946379e7Schristos# Valid: one argument
11*946379e7Schristos"abc{0}def"
12*946379e7Schristos# Valid: ten arguments
13*946379e7Schristos"abc{9}def"
14*946379e7Schristos# Valid: two-digit argument numbers
15*946379e7Schristos"abc{00}def"
16*946379e7Schristos# Valid: huge argument numbers
17*946379e7Schristos"abc{500000000}def"
18*946379e7Schristos# Invalid: unterminated
19*946379e7Schristos"abc{"
20*946379e7Schristos# Invalid: unterminated
21*946379e7Schristos"abc{0"
22*946379e7Schristos# Invalid: missing number
23*946379e7Schristos"abc{}def"
24*946379e7Schristos# Invalid: non-digit
25*946379e7Schristos"abc{number}def"
26*946379e7Schristos# Invalid: non-digit
27*946379e7Schristos"abc{-0}def"
28*946379e7Schristos# Valid: two arguments
29*946379e7Schristos"abc{1}def{0}"
30*946379e7Schristos# Valid: multiple uses of same argument
31*946379e7Schristos"abc{1}def{0}ghi{1}"
32*946379e7Schristos# Invalid: broken elementFormat
33*946379e7Schristos"abc{0,}def"
34*946379e7Schristos# Invalid: invalid elementFormat
35*946379e7Schristos"abc{1,string}def"
36*946379e7Schristos# Valid: elementFormat of length 1
37*946379e7Schristos"abc{1,number}def"
38*946379e7Schristos# Valid: elementFormat of length 1
39*946379e7Schristos"abc{1,date}def"
40*946379e7Schristos# Valid: elementFormat of length 1
41*946379e7Schristos"abc{1,time}def"
42*946379e7Schristos# Valid: elementFormat of length 1
43*946379e7Schristos"abc{1,choice}def"
44*946379e7Schristos# Invalid: broken elementFormat
45*946379e7Schristos"abc{1,number,}def"
46*946379e7Schristos# Valid: builtin numberStyle
47*946379e7Schristos"abc{1,number,currency}def"
48*946379e7Schristos# Valid: builtin numberStyle
49*946379e7Schristos"abc{1,number,percent}def"
50*946379e7Schristos# Valid: builtin numberStyle
51*946379e7Schristos"abc{1,number,integer}def"
52*946379e7Schristos# Valid: builtin datetimeStyle
53*946379e7Schristos"abc{1,date,short}def"
54*946379e7Schristos# Valid: builtin datetimeStyle
55*946379e7Schristos"abc{1,date,medium}def"
56*946379e7Schristos# Valid: builtin datetimeStyle
57*946379e7Schristos"abc{1,date,long}def"
58*946379e7Schristos# Valid: builtin datetimeStyle
59*946379e7Schristos"abc{1,date,full}def"
60*946379e7Schristos# Valid: builtin datetimeStyle
61*946379e7Schristos"abc{1,time,short}def"
62*946379e7Schristos# Valid: builtin datetimeStyle
63*946379e7Schristos"abc{1,time,medium}def"
64*946379e7Schristos# Valid: builtin datetimeStyle
65*946379e7Schristos"abc{1,time,long}def"
66*946379e7Schristos# Valid: builtin datetimeStyle
67*946379e7Schristos"abc{1,time,full}def"
68*946379e7Schristos# Valid: dateFormatPattern
69*946379e7Schristos"abc{1,date,foobar}"
70*946379e7Schristos# Valid: dateFormatPattern
71*946379e7Schristos"abc{1,time,foobar}"
72*946379e7Schristos# Valid: dateFormatPattern with comma
73*946379e7Schristos"abc{1,date,foo,bar}"
74*946379e7Schristos# Valid: numberFormatPattern
75*946379e7Schristos"abc{1,number,###,##0}def"
76*946379e7Schristos# Invalid: numberFormatPattern
77*946379e7Schristos"abc{1,number,foobar}"
78*946379e7Schristos# Valid: empty choiceFormatPattern
79*946379e7Schristos"abc{1,choice,}def"
80*946379e7Schristos# Valid: choiceFormatPattern
81*946379e7Schristos"abc{1,choice,0#zero|1#one|2#many}def"
82*946379e7Schristos# Invalid: empty clause in choiceFormatPattern
83*946379e7Schristos"abc{1,choice,|0#zero|1#one|2#many}def"
84*946379e7Schristos# Valid: empty clause at end of choiceFormatPattern
85*946379e7Schristos"abc{1,choice,0#zero|1#one|2#many|}def"
86*946379e7Schristos# Invalid: short clause in choiceFormatPattern
87*946379e7Schristos"abc{1,choice,-1|0#zero|1#one|2#many}def"
88*946379e7Schristos# Valid: short clause at end of choiceFormatPattern
89*946379e7Schristos"abc{1,choice,0#zero|1#one|2#many|3}def"
90*946379e7Schristos# Valid: choiceFormatPattern with different argument
91*946379e7Schristos"abc{1,choice,1#one|2#{0,date}}def"
92*946379e7Schristos# Valid: choiceFormatPattern with same argument
93*946379e7Schristos"abc{1,choice,1#one|2#{1}}def"
94*946379e7Schristos# Valid: choiceFormatPattern with same argument
95*946379e7Schristos"abc{1,choice,1#one|2#{1,number}}def"
96*946379e7Schristos# Invalid: choiceFormatPattern with same argument, type conflict
97*946379e7Schristos"abc{1,choice,1#one|2#{1,date}}def"
98*946379e7Schristos# Invalid: missing opening brace
99*946379e7Schristos"abc1}def{0}"
100*946379e7Schristos# Valid: quoted brace
101*946379e7Schristos"abc1'}'def{0}"
102*946379e7Schristos# Invalid: quoted brace
103*946379e7Schristos"abc{1'}'def"
104*946379e7Schristos# Valid: unterminated quote
105*946379e7Schristos"abc{0}1'}"
106*946379e7Schristos# Valid: quoted brace, '' counts as a single quote
107*946379e7Schristos"abc''1'}'def{0}"
108*946379e7Schristos# Invalid: '' counts as a single quote
109*946379e7Schristos"abc{1''}def"
110*946379e7Schristos# Valid: quote inside elementFormat is hidden
111*946379e7Schristos"abc{1,date,x'y}def"
112*946379e7Schristos# Valid: numberFormatPattern with quote
113*946379e7Schristos"abc{1,number,#0';'}def"
114*946379e7Schristos# Invalid: numberFormatPattern with wrong number syntax
115*946379e7Schristos"abc{1,number,#0;}def"
116*946379e7Schristos# Valid: numberFormatPattern with quote
117*946379e7Schristos"abc{1,number,0.##'E}def"
118*946379e7Schristos# Valid: numberFormatPattern without quote
119*946379e7Schristos"abc{1,number,0.##E}def"
120*946379e7SchristosEOF
121*946379e7Schristos
122*946379e7Schristos: ${XGETTEXT=xgettext}
123*946379e7Schristosn=0
124*946379e7Schristoswhile read comment; do
125*946379e7Schristos  read string
126*946379e7Schristos  n=`expr $n + 1`
127*946379e7Schristos  tmpfiles="$tmpfiles f-j-1-$n.in f-j-1-$n.po"
128*946379e7Schristos  cat <<EOF > f-j-1-$n.in
129*946379e7Schristosgettext(${string});
130*946379e7SchristosEOF
131*946379e7Schristos  ${XGETTEXT} -L Java -o f-j-1-$n.po f-j-1-$n.in || exit 1
132*946379e7Schristos  test -f f-j-1-$n.po || exit 1
133*946379e7Schristos  fail=
134*946379e7Schristos  if echo "$comment" | grep 'Valid:' > /dev/null; then
135*946379e7Schristos    if grep java-format f-j-1-$n.po > /dev/null; then
136*946379e7Schristos      :
137*946379e7Schristos    else
138*946379e7Schristos      fail=yes
139*946379e7Schristos    fi
140*946379e7Schristos  else
141*946379e7Schristos    if grep java-format f-j-1-$n.po > /dev/null; then
142*946379e7Schristos      fail=yes
143*946379e7Schristos    else
144*946379e7Schristos      :
145*946379e7Schristos    fi
146*946379e7Schristos  fi
147*946379e7Schristos  if test -n "$fail"; then
148*946379e7Schristos    echo "Format string recognition error:" 1>&2
149*946379e7Schristos    cat f-j-1-$n.in 1>&2
150*946379e7Schristos    echo "Got:" 1>&2
151*946379e7Schristos    cat f-j-1-$n.po 1>&2
152*946379e7Schristos    exit 1
153*946379e7Schristos  fi
154*946379e7Schristos  rm -f f-j-1-$n.in f-j-1-$n.po
155*946379e7Schristosdone < f-j-1.data
156*946379e7Schristos
157*946379e7Schristosrm -fr $tmpfiles
158*946379e7Schristos
159*946379e7Schristosexit 0
160