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