1100969Siwasaki#! /bin/sh
2100969Siwasaki
3100969Siwasakitmpfiles=""
4100969Siwasakitrap 'rm -fr $tmpfiles' 1 2 3 15
5100969Siwasaki
6100969Siwasakitmpfiles="$tmpfiles ll ll.po dataout"
7100969Siwasaki: ${MSGFMT=msgfmt}
8100969Siwasakitest -d ll || mkdir ll
9100969Siwasakitest -d ll/LC_MESSAGES || mkdir ll/LC_MESSAGES
10100969Siwasaki
11100969Siwasakitmpfiles="$tmpfiles plural-2.data"
12100969Siwasakicat <<EOF > plural-2.data
13100969Siwasakija
14100969Siwasaki0
15100969Siwasaki00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
16100969Siwasakide
17100969Siwasakin != 1
18100969Siwasaki10111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
19100969Siwasakifr
20100969Siwasakin>1
21100969Siwasaki00111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
22100969Siwasakigd
23100969Siwasakin==1 ? 0 : n==2 ? 1 : 2
24100969Siwasaki20122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
25100969Siwasakiro
26100969Siwasakin==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2
27100969Siwasaki10111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222
28100969Siwasakilt
29100969Siwasakin%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2
30100969Siwasaki20111111112222222222201111111120111111112011111111201111111120111111112011111111201111111120111111112011111111222222222220111111112011111111201111111120111111112011111111201111111120111111112011111111
31100969Siwasakiru-gettext
32100969Siwasakin%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2
33100969Siwasaki20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222
34100969Siwasakiru-glibc
35100969Siwasakin%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1
36100969Siwasaki20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222
37167814Sjkimsk
38100969Siwasaki(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2
39100969Siwasaki20111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
40100969Siwasakipl
41100969Siwasakin==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2
42100969Siwasaki20111222222222222222221112222222111222222211122222221112222222111222222211122222221112222222111222222211122222222222222222111222222211122222221112222222111222222211122222221112222222111222222211122222
43100969Siwasakisl
44100969Siwasakin%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3
45100969Siwasaki30122333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333012233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
46100969SiwasakiEOF
47100969Siwasakiwhile read lang; do
48100969Siwasaki  read formula
49167814Sjkim  read dataok
50167814Sjkim  cat > ll.po <<EOF
51167814Sjkimmsgid ""
52167814Sjkimmsgstr ""
53100969Siwasaki"MIME-Version: 1.0\n"
54100969Siwasaki"Content-Type: text/plain; charset=ASCII\n"
55100969Siwasaki"Content-Transfer-Encoding: 8bit\n"
56167814Sjkim"Plural-Forms: nplurals=10; plural=${formula};\n"
57167814Sjkim
58205713Smarcelmsgid "X"
59205713Smarcelmsgid_plural "Y"
60100969Siwasakimsgstr[0] "0"
61167814Sjkimmsgstr[1] "1"
62100969Siwasakimsgstr[2] "2"
63254300Sjkimmsgstr[3] "3"
64254300Sjkimmsgstr[4] "4"
65254300Sjkimmsgstr[5] "5"
66167814Sjkimmsgstr[6] "6"
67167814Sjkimmsgstr[7] "7"
68167814Sjkimmsgstr[8] "8"
69167814Sjkimmsgstr[9] "9"
70167814SjkimEOF
71167814Sjkim  ${MSGFMT} -o ll/LC_MESSAGES/plural.mo ll.po || exit 1
72100969Siwasaki  (for i in '' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do
73252280Sjkim     LANGUAGE= TEXTDOMAIN=plural TEXTDOMAINDIR=. \
74252280Sjkim       $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
75100969Siwasaki   done) > dataout
76100969Siwasaki  test "$dataok" = `cat dataout` || {
77100969Siwasaki    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  }
84done < plural-2.data
85
86rm -fr $tmpfiles
87
88exit 0
89