Home | History | Annotate | Line # | Download | only in tests
      1 #! /bin/sh
      2 
      3 tmpfiles=""
      4 trap 'rm -fr $tmpfiles' 1 2 3 15
      5 
      6 tmpfiles="$tmpfiles ll ll.po dataout"
      7 : ${MSGFMT=msgfmt}
      8 test -d ll || mkdir ll
      9 test -d ll/LC_MESSAGES || mkdir ll/LC_MESSAGES
     10 
     11 tmpfiles="$tmpfiles plural-2.data"
     12 cat <<EOF > plural-2.data
     13 ja
     14 0
     15 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
     16 de
     17 n != 1
     18 10111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
     19 fr
     20 n>1
     21 00111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
     22 gd
     23 n==1 ? 0 : n==2 ? 1 : 2
     24 20122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
     25 ro
     26 n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2
     27 10111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222
     28 lt
     29 n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2
     30 20111111112222222222201111111120111111112011111111201111111120111111112011111111201111111120111111112011111111222222222220111111112011111111201111111120111111112011111111201111111120111111112011111111
     31 ru-gettext
     32 n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2
     33 20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222
     34 ru-glibc
     35 n%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1
     36 20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222
     37 sk
     38 (n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2
     39 20111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
     40 pl
     41 n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2
     42 20111222222222222222221112222222111222222211122222221112222222111222222211122222221112222222111222222211122222222222222222111222222211122222221112222222111222222211122222221112222222111222222211122222
     43 sl
     44 n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3
     45 30122333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333012233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
     46 EOF
     47 while read lang; do
     48   read formula
     49   read dataok
     50   cat > ll.po <<EOF
     51 msgid ""
     52 msgstr ""
     53 "MIME-Version: 1.0\n"
     54 "Content-Type: text/plain; charset=ASCII\n"
     55 "Content-Transfer-Encoding: 8bit\n"
     56 "Plural-Forms: nplurals=10; plural=${formula};\n"
     57 
     58 msgid "X"
     59 msgid_plural "Y"
     60 msgstr[0] "0"
     61 msgstr[1] "1"
     62 msgstr[2] "2"
     63 msgstr[3] "3"
     64 msgstr[4] "4"
     65 msgstr[5] "5"
     66 msgstr[6] "6"
     67 msgstr[7] "7"
     68 msgstr[8] "8"
     69 msgstr[9] "9"
     70 EOF
     71   ${MSGFMT} -o ll/LC_MESSAGES/plural.mo ll.po || exit 1
     72   (for i in '' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do
     73      LANGUAGE= TEXTDOMAIN=plural TEXTDOMAINDIR=. \
     74        $NGETTEXT --env LC_ALL=ll X Y ${i}0 ${i}1 ${i}2 ${i}3 ${i}4 ${i}5 ${i}6 ${i}7 ${i}8 ${i}9
     75    done) > dataout
     76   test "$dataok" = `cat dataout` || {
     77     echo "Formula evaluation error for language $lang" 1>&2
     78     echo "plural=${formula}" 1>&2
     79     echo "Expected: $dataok" 1>&2
     80     echo "Got:      "`cat dataout` 1>&2
     81     rm -fr $tmpfiles
     82     exit 1
     83   }
     84 done < plural-2.data
     85 
     86 rm -fr $tmpfiles
     87 
     88 exit 0
     89