#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

: ${XGETTEXT=xgettext}
${XGETTEXT} -o plural-1-cake.tmp --omit-header --no-location "$wabs_srcdir"/plural-1-prg.c || Exit 1
LC_ALL=C tr -d '\r' < plural-1-cake.tmp > plural-1-cake.pot || Exit 1

cat <<EOF > plural-1-cake.ok
#, c-format
msgid "a piece of cake"
msgid_plural "%d pieces of cake"
msgstr[0] ""
msgstr[1] ""
EOF

: ${DIFF=diff}
${DIFF} plural-1-cake.ok plural-1-cake.pot || Exit 1

cat <<EOF > plural-1-fr.po
# Les gateaux allemands sont les meilleurs du monde.
#, c-format
msgid "a piece of cake"
msgid_plural "%d pieces of cake"
msgstr[0] "un morceau de gateau"
msgstr[1] "%d morceaux de gateau"
EOF

: ${MSGMERGE=msgmerge}
${MSGMERGE} -q -o plural-1-fr.po.tmp plural-1-fr.po plural-1-cake.pot || Exit 1
LC_ALL=C tr -d '\r' < plural-1-fr.po.tmp > plural-1-fr.po.new || Exit 1

: ${DIFF=diff}
${DIFF} plural-1-fr.po plural-1-fr.po.new || Exit 1

test -d plural-1-dir || mkdir plural-1-dir
test -d plural-1-dir/fr || mkdir plural-1-dir/fr
test -d plural-1-dir/fr/LC_MESSAGES || mkdir plural-1-dir/fr/LC_MESSAGES

: ${MSGFMT=msgfmt}
${MSGFMT} -o plural-1-dir/fr/LC_MESSAGES/cake.mo plural-1-fr.po

: ${MSGUNFMT=msgunfmt}
${MSGUNFMT} -o plural-1-fr.po.tmp plural-1-dir/fr/LC_MESSAGES/cake.mo || Exit 1
LC_ALL=C tr -d '\r' < plural-1-fr.po.tmp > plural-1-fr.po.un || Exit 1

sed 1,2d < plural-1-fr.po > plural-1-fr.po.strip

: ${DIFF=diff}
${DIFF} plural-1-fr.po.strip plural-1-fr.po.un || Exit 1

func_do_test ()
{
  echo 'un morceau de gateau' > plural-1-cake.ok
  LANGUAGE= ../cake "$1" 1 > plural-1-cake.tmp || Exit 1
  LC_ALL=C tr -d '\r' < plural-1-cake.tmp > cake.out || Exit 1
  ${DIFF} plural-1-cake.ok cake.out || Exit 1
  echo '2 morceaux de gateau' > plural-1-cake.ok
  LANGUAGE= ../cake "$1" 2 > plural-1-cake.tmp || Exit 1
  LC_ALL=C tr -d '\r' < plural-1-cake.tmp > cake.out || Exit 1
  ${DIFF} plural-1-cake.ok cake.out || Exit 1
  echo '10 morceaux de gateau' > plural-1-cake.ok
  LANGUAGE= ../cake "$1" 10 > plural-1-cake.tmp || Exit 1
  LC_ALL=C tr -d '\r' < plural-1-cake.tmp > cake.out || Exit 1
  ${DIFF} plural-1-cake.ok cake.out || Exit 1
}

if test -z "$USE_SYSTEM_LIBINTL"; then
  # In the tests/ dir: Rely on a fake setlocale, so that we can exercise
  # the test on all platforms.

  func_do_test fr

else
  # In the system-tests/ dir: Don't use a fake setlocale.

  : ${LOCALE_FR=fr_FR}
  : ${LOCALE_FR_UTF8=fr_FR.UTF-8}
  if test $LOCALE_FR != none; then
    prepare_locale_ plural-1-dir/fr plural-1-dir/$LOCALE_FR
    func_do_test $LOCALE_FR
  fi
  if test $LOCALE_FR_UTF8 != none; then
    prepare_locale_ plural-1-dir/fr plural-1-dir/$LOCALE_FR_UTF8
    func_do_test $LOCALE_FR_UTF8
  fi
  if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then
    if test -f /usr/bin/localedef; then
      echo "Skipping test: no french locale is installed"
    else
      echo "Skipping test: no french locale is supported"
    fi
    Exit 77
  fi

fi

Exit 0
