summaryrefslogtreecommitdiff
path: root/gnu/dist/gettext/gettext-tools/tests/lang-java
diff options
context:
space:
mode:
authorchristos <christos@NetBSD.org>2005-04-29 15:05:03 +0000
committerchristos <christos@NetBSD.org>2005-04-29 15:05:03 +0000
commite770a46755c75e4364863231cbfdf0f8011ce123 (patch)
tree3210fd527fdd42504ad2ccf38cefaffbbca680de /gnu/dist/gettext/gettext-tools/tests/lang-java
parentfd90a881be576b95b45b1ca8323616a346d9cbe7 (diff)
ftp ftp.gnu.org
Diffstat (limited to 'gnu/dist/gettext/gettext-tools/tests/lang-java')
-rw-r--r--gnu/dist/gettext/gettext-tools/tests/lang-java174
1 files changed, 174 insertions, 0 deletions
diff --git a/gnu/dist/gettext/gettext-tools/tests/lang-java b/gnu/dist/gettext/gettext-tools/tests/lang-java
new file mode 100644
index 00000000000..68ece1976cb
--- /dev/null
+++ b/gnu/dist/gettext/gettext-tools/tests/lang-java
@@ -0,0 +1,174 @@
+#! /bin/sh
+
+# Test of gettext facilities in the Java language.
+# Assumes an fr_FR locale is installed.
+# Assumes the following packages are installed: java.
+
+# Note: This test fails when using gcj from GCC 3.1 and GCC 3.2, due to a bug
+# (libgcj/6576). It is fixed in GCC 3.3.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+# Test whether we can build and test Java programs.
+test "${TESTJAVA}" = yes || exit 77
+
+tmpfiles="$tmpfiles Program.java"
+cat <<\EOF > Program.java
+import java.util.*;
+import java.io.*;
+import java.text.*;
+import gnu.gettext.*;
+
+public class Program {
+ public static void main (String[] args) {
+ // Some systems (like Solaris) don't set Locale.getDefault()
+ // as specified by LC_ALL. So set it by hand.
+ Locale.setDefault(new Locale("fr","FR"));
+EOF
+case "$host_os" in
+ darwin[56]*)
+cat <<\EOF >> Program.java
+ // Some systems (like MacOS X) don't set System.out's character encoding
+ // to ISO-8859-1, which is what we need for comparison purposes.
+ try {
+ System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out),
+ true, "ISO-8859-1"));
+ } catch (UnsupportedEncodingException e) {
+ }
+EOF
+ ;;
+ darwin*)
+cat <<\EOF >> Program.java
+ // Some systems (like MacOS X) don't set System.out's character encoding
+ // to UTF-8, which is what we need for comparison purposes.
+ try {
+ System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out),
+ true, "UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ }
+EOF
+ ;;
+esac
+cat <<\EOF >> Program.java
+ int n = Integer.parseInt(args[0]);
+ ResourceBundle catalog = ResourceBundle.getBundle("prog");
+ System.out.println(GettextResource.gettext(catalog,"'Your command, please?', asked the waiter."));
+ System.out.println(MessageFormat.format(GettextResource.ngettext(catalog,"a piece of cake","{0,number} pieces of cake",n), new Object[] { new Integer(n) }));
+ System.out.println(MessageFormat.format(GettextResource.gettext(catalog,"{0} is replaced by {1}."), new Object[] { "FF", "EUR" }));
+ }
+}
+EOF
+
+tmpfiles="$tmpfiles Program.class"
+: ${JAVACOMP="/bin/sh ../lib/javacomp.sh"}
+CLASSPATH=../../gettext-runtime/intl-java/libintl.jar ${JAVACOMP} -d . Program.java || exit 1
+
+tmpfiles="$tmpfiles prog.pot"
+: ${XGETTEXT=xgettext}
+${XGETTEXT} -o prog.pot --omit-header --no-location Program.java
+
+tmpfiles="$tmpfiles prog.ok"
+cat <<EOF > prog.ok
+msgid "'Your command, please?', asked the waiter."
+msgstr ""
+
+#, java-format
+msgid "a piece of cake"
+msgid_plural "{0,number} pieces of cake"
+msgstr[0] ""
+msgstr[1] ""
+
+#, java-format
+msgid "{0} is replaced by {1}."
+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.
+#, java-format
+msgid "a piece of cake"
+msgid_plural "{0,number} pieces of cake"
+msgstr[0] "un morceau de gateau"
+msgstr[1] "{0,number} morceaux de gateau"
+
+# Reverse the arguments.
+#, java-format
+msgid "{0} is replaced by {1}."
+msgstr "{1} remplace {0}."
+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 prog_fr.class"
+: ${MSGFMT=msgfmt}
+${MSGFMT} -j -d . -r prog -l fr fr.po || exit 1
+
+# Test which of the fr_FR locales are installed.
+: ${LOCALE_FR=fr_FR}
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+if test $LOCALE_FR != none; then
+ LC_ALL=$LOCALE_FR ./testlocale
+ case $? in
+ 0) ;;
+ 77) LOCALE_FR=none;;
+ *) exit 1;;
+ esac
+fi
+if test $LOCALE_FR_UTF8 != none; then
+ LC_ALL=$LOCALE_FR_UTF8 ./testlocale
+ case $? in
+ 0) ;;
+ 77) LOCALE_FR_UTF8=none;;
+ *) exit 1;;
+ esac
+fi
+if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then
+ rm -fr $tmpfiles; exit 77
+fi
+
+tmpfiles="$tmpfiles prog.ok prog.oku 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
+cat <<\EOF > prog.oku
+«Votre commande, s'il vous plait», dit le garçon.
+2 morceaux de gateau
+EUR remplace FF.
+EOF
+
+: ${LOCALE_FR=fr_FR}
+: ${LOCALE_FR_UTF8=fr_FR.UTF-8}
+: ${JAVAEXEC="/bin/sh ../lib/javaexec.sh"}
+if test $LOCALE_FR != none; then
+ LANGUAGE= LC_ALL=$LOCALE_FR CLASSPATH=.:../../gettext-runtime/intl-java/libintl.jar ${JAVAEXEC} Program 2 > prog.out || exit 1
+ ${DIFF} prog.ok prog.out || exit 1
+fi
+if test $LOCALE_FR_UTF8 != none; then
+ LANGUAGE= LC_ALL=$LOCALE_FR_UTF8 CLASSPATH=.:../../gettext-runtime/intl-java/libintl.jar ${JAVAEXEC} Program 2 > prog.out || exit 1
+ ${DIFF} prog.oku prog.out || exit 1
+fi
+
+rm -fr $tmpfiles
+
+exit 0