diff options
author | Bruno Haible <bruno@clisp.org> | 2003-02-14 14:38:41 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2009-06-23 12:09:44 +0200 |
commit | b943205b69a6e2cd00613260654533aa048b59d8 (patch) | |
tree | 319c47f94e7830a40087dc24ac7a5999d6d77bd3 /gettext-tools/tests/lang-c++ | |
parent | 516394a5a6b666eb5fca13e378ca682d3b2dc49d (diff) | |
download | external_gettext-b943205b69a6e2cd00613260654533aa048b59d8.zip external_gettext-b943205b69a6e2cd00613260654533aa048b59d8.tar.gz external_gettext-b943205b69a6e2cd00613260654533aa048b59d8.tar.bz2 |
Move tests/lang-c++ to gettext-tools/tests/lang-c++.
Diffstat (limited to 'gettext-tools/tests/lang-c++')
-rwxr-xr-x | gettext-tools/tests/lang-c++ | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/gettext-tools/tests/lang-c++ b/gettext-tools/tests/lang-c++ new file mode 100755 index 0000000..3750ea3 --- /dev/null +++ b/gettext-tools/tests/lang-c++ @@ -0,0 +1,148 @@ +#! /bin/sh + +# Test of gettext facilities in the C++ language. +# Assumes an fr_FR locale is installed. +# Assumes the following packages are installed: gcc g++. + +tmpfiles="" +trap 'rm -fr $tmpfiles' 1 2 3 15 + +# Test whether a C++ compiler is found. +if test "${CXX}" = ":"; then + echo "SKIP: lang-c++"; exit 77 +fi + +tmpfiles="$tmpfiles prog.cc" +cat <<\EOF > prog.cc +#include "config.h" + +/* Avoid deprecation warnings from g++ 3.1 or newer. */ +#if defined __GNUG__ && defined __DEPRECATED +# include <iostream> +using namespace std; +#else +# include <iostream.h> +#endif + +#include <libintl.h> +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> +#include "xsetenv.h" +#include "autosprintf.h" +using gnu::autosprintf; +#define _(string) gettext (string) + +int main (int argc, char *argv[]) +{ + int n = atoi (argv[2]); + + xsetenv ("LC_ALL", argv[1], 1); + if (setlocale (LC_ALL, "") == NULL) + { + cerr << "Couldn't set locale." << endl; + exit (77); + } + + textdomain ("prog"); + bindtextdomain ("prog", "."); + + cout << _("'Your command, please?', asked the waiter.") << endl; + + cout << autosprintf (ngettext ("a piece of cake", "%d pieces of cake", n), n) + << endl; + + cout << autosprintf (_("%s is replaced by %s."), "FF", "EUR") << endl; +} +EOF + +# Variable needed by LTLIBINTL. +top_builddir=.. + +tmpfiles="$tmpfiles prog.${OBJEXT} prog${EXEEXT}" +# Compile in two steps from .cc to .o and from .o to 'prog'. This way, +# relinking is faster because doesn't need to redo the first step. +${CXX} ${CXXFLAGS} ${CPPFLAGS} -c prog.cc -I.. -I$top_srcdir/libasprintf -I$top_srcdir/lib -I../intl \ + || exit 1 +${LIBTOOL} --quiet --mode=link ${CXX} ${CXXFLAGS} ${LDFLAGS} -o prog prog.${OBJEXT} ../libasprintf/libasprintf.la ../lib/libgettextlib.la ${LTLIBINTL} \ + || exit 1 + +tmpfiles="$tmpfiles prog.pot" +: ${XGETTEXT=xgettext} +${XGETTEXT} -o prog.pot --omit-header --no-location -k_ prog.cc + +tmpfiles="$tmpfiles prog.ok" +cat <<EOF > prog.ok +msgid "'Your command, please?', asked the waiter." +msgstr "" + +#, c-format +msgid "a piece of cake" +msgid_plural "%d pieces of cake" +msgstr[0] "" +msgstr[1] "" + +#, c-format +msgid "%s is replaced by %s." +msgstr "" +EOF + +: ${DIFF=diff} +${DIFF} prog.ok prog.pot || exit 1 + +tmpfiles="$tmpfiles fr.po" +cat <<\EOF > fr.po +msgid "" +msgstr "" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +msgid "'Your command, please?', asked the waiter." +msgstr "«Votre commande, s'il vous plait», dit le garçon." + +# 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" + +# Reverse the arguments. +#, c-format +msgid "%s is replaced by %s." +msgstr "%2$s remplace %1$s." +EOF + +tmpfiles="$tmpfiles fr.po.new" +: ${MSGMERGE=msgmerge} +${MSGMERGE} -q -o fr.po.new fr.po prog.pot + +: ${DIFF=diff} +${DIFF} fr.po fr.po.new || exit 1 + +tmpfiles="$tmpfiles fr" +test -d fr || mkdir fr +test -d fr/LC_MESSAGES || mkdir fr/LC_MESSAGES + +: ${MSGFMT=msgfmt} +${MSGFMT} -o fr/LC_MESSAGES/prog.mo fr.po + +tmpfiles="$tmpfiles prog.ok prog.out" +: ${DIFF=diff} +cat <<\EOF > prog.ok +«Votre commande, s'il vous plait», dit le garçon. +2 morceaux de gateau +EUR remplace FF. +EOF + +LANGUAGE= ./prog fr_FR 2 > prog.out +case $? in + 0) ;; + 77) echo "SKIP: lang-c++"; rm -fr $tmpfiles; exit 77;; + *) exit 1;; +esac +${DIFF} prog.ok prog.out || exit 1 + +rm -fr $tmpfiles + +exit 0 |