## Makefile for the gettext-tools/tests subdirectory of GNU gettext
-## Copyright (C) 1995-1997, 2001-2008 Free Software Foundation, Inc.
+## Copyright (C) 1995-1997, 2001-2009 Free Software Foundation, Inc.
##
## This program is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
format-perl-brace-1 format-perl-brace-2 \
format-perl-mixed-1 format-perl-mixed-2 \
format-qt-1 format-qt-2 \
+ format-qt-plural-1 format-qt-plural-2 \
format-scheme-1 format-scheme-2 \
format-sh-1 format-sh-2 \
format-tcl-1 format-tcl-2 \
--- /dev/null
+#! /bin/sh
+
+# Test recognition of Qt plural format strings.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles f-qtp-1.data"
+cat <<\EOF > f-qtp-1.data
+# Unrecognized: no argument
+"abcdef"
+# Unrecognized: unterminated
+"abcdef%"
+# Unrecognized: unterminated
+"abcdef%L"
+# Valid: one argument
+"abc%ndef"
+# Valid: unterminated
+"abc%ndef%"
+# Valid: unterminated
+"abc%ndef%L"
+# Valid: multiple uses of same argument
+"abc%ndef%nghi"
+# Valid: an argument with locale-dependency flag
+"abc%Lndef"
+EOF
+
+: ${XGETTEXT=xgettext}
+n=0
+while read comment; do
+ read string
+ n=`expr $n + 1`
+ tmpfiles="$tmpfiles f-qtp-1-$n.in f-qtp-1-$n.po"
+ cat <<EOF > f-qtp-1-$n.in
+_(${string});
+EOF
+ ${XGETTEXT} -L C++ --qt -k_ -o f-qtp-1-$n.po f-qtp-1-$n.in || exit 1
+ test -f f-qtp-1-$n.po || exit 1
+ fail=
+ if echo "$comment" | grep 'Valid:' > /dev/null; then
+ if grep qt-plural-format f-qtp-1-$n.po > /dev/null; then
+ :
+ else
+ fail=yes
+ fi
+ else
+ if grep qt-plural-format f-qtp-1-$n.po > /dev/null; then
+ fail=yes
+ else
+ :
+ fi
+ fi
+ if test -n "$fail"; then
+ echo "Format string recognition error:" 1>&2
+ cat f-qtp-1-$n.in 1>&2
+ echo "Got:" 1>&2
+ cat f-qtp-1-$n.po 1>&2
+ exit 1
+ fi
+ rm -f f-qtp-1-$n.in f-qtp-1-$n.po
+done < f-qtp-1.data
+
+rm -fr $tmpfiles
+
+exit 0
--- /dev/null
+#! /bin/sh
+
+# Test checking of Qt plural format strings.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles f-qtp-2.data"
+cat <<\EOF > f-qtp-2.data
+# Valid: %1 doesn't count
+msgid "abc%1def"
+msgstr "xyz"
+# Valid: same arguments
+msgid "abc%ndef"
+msgstr "xyz%n"
+# Valid: same arguments, L option is ignored
+msgid "abc%Lndef"
+msgstr "xyz%n"
+# Valid: same arguments, L option is ignored
+msgid "abc%ndef"
+msgstr "xyz%Ln"
+# Valid: repetition of an argument in the translation
+msgid "abc%ndef"
+msgstr "xyz%nuvw%n"
+# Valid: removing repeated argument in the translation
+msgid "abc%ndef%n"
+msgstr "xyz%nuvw"
+# Invalid: too few arguments
+msgid "abc%ndef"
+msgstr "xyz"
+# Invalid: too many arguments
+msgid "abcdef"
+msgstr "xyz%nuvw"
+EOF
+
+: ${MSGFMT=msgfmt}
+n=0
+while read comment; do
+ read msgid_line
+ read msgstr_line
+ n=`expr $n + 1`
+ tmpfiles="$tmpfiles f-qtp-2-$n.po f-qtp-2-$n.mo"
+ cat <<EOF > f-qtp-2-$n.po
+#, qt-plural-format
+${msgid_line}
+${msgstr_line}
+EOF
+ fail=
+ if echo "$comment" | grep 'Valid:' > /dev/null; then
+ if ${MSGFMT} --check-format -o f-qtp-2-$n.mo f-qtp-2-$n.po; then
+ :
+ else
+ fail=yes
+ fi
+ else
+ ${MSGFMT} --check-format -o f-qtp-2-$n.mo f-qtp-2-$n.po 2> /dev/null
+ if test $? = 1; then
+ :
+ else
+ fail=yes
+ fi
+ fi
+ if test -n "$fail"; then
+ echo "Format string checking error:" 1>&2
+ cat f-qtp-2-$n.po 1>&2
+ exit 1
+ fi
+ rm -f f-qtp-2-$n.po f-qtp-2-$n.mo
+done < f-qtp-2.data
+
+rm -fr $tmpfiles
+
+exit 0