diff options
Diffstat (limited to 'intl/tst-gettext.c')
-rw-r--r-- | intl/tst-gettext.c | 368 |
1 files changed, 0 insertions, 368 deletions
diff --git a/intl/tst-gettext.c b/intl/tst-gettext.c deleted file mode 100644 index e8801ef0b3..0000000000 --- a/intl/tst-gettext.c +++ /dev/null @@ -1,368 +0,0 @@ -/* Test of the gettext functions. - Copyright (C) 2000-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <libintl.h> -#include <locale.h> -#include <mcheck.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <error.h> -#include <errno.h> - - -const struct -{ - const char *msgid; - const char *msgstr; -} msgs[] = -{ -#define INPUT(Str) { Str, -#define OUTPUT(Str) Str }, -#include TESTSTRS_H -}; - -const char *catname[] = -{ - [LC_MESSAGES] = "LC_MESSAGES", - [LC_TIME] = "LC_TIME", - [LC_NUMERIC] = "LC_NUMERIC" -}; - - -static int positive_gettext_test (void); -static int negative_gettext_test (void); -static int positive_dgettext_test (const char *domain); -static int positive_dcgettext_test (const char *domain, int category); -static int negative_dcgettext_test (const char *domain, int category); - - -#define check_setlocale(cat, name) do { \ - if (setlocale (cat, name) == NULL) \ - { \ - printf ("%s:%u: setlocale (%s, \"%s\"): %m\n", \ - __FILE__, __LINE__, #cat, name); \ - result = 1; \ - } \ - } while (0) - -int -main (int argc, char *argv[]) -{ - int result = 0; - - /* For debugging. */ - mtrace (); - - /* This is the place where the .mo files are placed. */ - if (argc > 1) - { - bindtextdomain ("existing-domain", argv[1]); - bindtextdomain ("existing-time-domain", argv[1]); - bindtextdomain ("non-existing-domain", argv[1]); - } - - /* The locale the catalog is created for is "existing-category". Now - set the various variables in question to this value and run the - test. */ - setenv ("LANGUAGE", "existing-locale", 1); - setenv ("LC_ALL", "non-existing-locale", 1); - setenv ("LC_MESSAGES", "non-existing-locale", 1); - setenv ("LC_CTYPE", "non-existing-locale", 1); - setenv ("LANG", "non-existing-locale", 1); - check_setlocale (LC_CTYPE, "de_DE.UTF-8"); - check_setlocale (LC_MESSAGES, "de_DE.UTF-8"); - unsetenv ("OUTPUT_CHARSET"); - /* This is the name of the existing domain with a catalog for the - LC_MESSAGES category. */ - textdomain ("existing-domain"); - puts ("test `gettext' with LANGUAGE set"); - if (positive_gettext_test () != 0) - { - puts ("FAILED"); - result = 1; - } - /* This is the name of a non-existing domain with a catalog for the - LC_MESSAGES category. We leave this value set for the `dgettext' - and `dcgettext' tests. */ - textdomain ("non-existing-domain"); - puts ("test `gettext' with LANGUAGE set"); - if (negative_gettext_test () != 0) - { - puts ("FAILED"); - result = 1; - } - puts ("test `dgettext' with LANGUAGE set"); - if (positive_dgettext_test ("existing-domain") != 0) - { - puts ("FAILED"); - result = 1; - } - - /* Now the same tests with LC_ALL deciding. */ - unsetenv ("LANGUAGE"); - setenv ("LC_ALL", "existing-locale", 1); - check_setlocale (LC_ALL, ""); - puts ("test `gettext' with LC_ALL set"); - /* This is the name of the existing domain with a catalog for the - LC_MESSAGES category. */ - textdomain ("existing-domain"); - if (positive_gettext_test () != 0) - { - puts ("FAILED"); - result = 1; - } - /* This is the name of a non-existing domain with a catalog for the - LC_MESSAGES category. We leave this value set for the `dgettext' - and `dcgettext' tests. */ - textdomain ("non-existing-domain"); - puts ("test `gettext' with LC_ALL deciding"); - if (negative_gettext_test () != 0) - { - puts ("FAILED"); - result = 1; - } - puts ("test `dgettext' with LC_ALL deciding"); - if (positive_dgettext_test ("existing-domain") != 0) - { - puts ("FAILED"); - result = 1; - } - - /* Now the same tests with LC_MESSAGES deciding. */ - unsetenv ("LC_ALL"); - setenv ("LC_MESSAGES", "existing-locale", 1); - check_setlocale (LC_MESSAGES, ""); - setenv ("LC_TIME", "existing-locale", 1); - check_setlocale (LC_TIME, ""); - setenv ("LC_NUMERIC", "non-existing-locale", 1); - char *what = setlocale (LC_NUMERIC, ""); - if (what != NULL) - { - printf ("setlocale succeeded (%s), expected failure\n", what); - result = 1; - } - - puts ("test `gettext' with LC_MESSAGES set"); - /* This is the name of the existing domain with a catalog for the - LC_MESSAGES category. */ - textdomain ("existing-domain"); - if (positive_gettext_test () != 0) - { - puts ("FAILED"); - result = 1; - } - /* This is the name of a non-existing domain with a catalog for the - LC_MESSAGES category. We leave this value set for the `dgettext' - and `dcgettext' tests. */ - textdomain ("non-existing-domain"); - puts ("test `gettext' with LC_MESSAGES deciding"); - if (negative_gettext_test () != 0) - { - puts ("FAILED"); - result = 1; - } - puts ("test `dgettext' with LC_MESSAGES deciding"); - if (positive_dgettext_test ("existing-domain") != 0) - { - puts ("FAILED"); - result = 1; - } - puts ("test `dcgettext' with category == LC_MESSAGES"); - if (positive_dcgettext_test ("existing-domain", LC_MESSAGES) != 0) - { - puts ("FAILED"); - result = 1; - } - /* Try a different category. For this we also switch the domain. */ - puts ("test `dcgettext' with LANGUAGE == LC_TIME"); - if (positive_dcgettext_test ("existing-time-domain", LC_TIME) != 0) - { - puts ("FAILED"); - result = 1; - } - /* This time use a category for which there is no catalog. */ - puts ("test `dcgettext' with LANGUAGE == LC_NUMERIC"); - if (negative_dcgettext_test ("existing-domain", LC_NUMERIC) != 0) - { - puts ("FAILED"); - result = 1; - } - - /* Now the same tests with LANG deciding. */ - unsetenv ("LC_MESSAGES"); - unsetenv ("LC_CTYPE"); - unsetenv ("LC_TIME"); - unsetenv ("LC_NUMERIC"); - setenv ("LANG", "existing-locale", 1); - check_setlocale (LC_ALL, ""); - /* This is the name of the existing domain with a catalog for the - LC_MESSAGES category. */ - textdomain ("existing-domain"); - puts ("test `gettext' with LANG set"); - if (positive_gettext_test () != 0) - { - puts ("FAILED"); - result = 1; - } - /* This is the name of a non-existing domain with a catalog for the - LC_MESSAGES category. We leave this value set for the `dgettext' - and `dcgettext' tests. */ - textdomain ("non-existing-domain"); - puts ("test `gettext' with LANG set"); - if (negative_gettext_test () != 0) - { - puts ("FAILED"); - result = 1; - } - puts ("test `dgettext' with LANG set"); - if (positive_dgettext_test ("existing-domain") != 0) - { - puts ("FAILED"); - result = 1; - } - - check_setlocale (LC_ALL, "C"); - - return result; -} - - -static int -positive_gettext_test (void) -{ - size_t cnt; - int result = 0; - - for (cnt = 0; cnt < sizeof (msgs) / sizeof (msgs[0]); ++cnt) - { - const char *found = gettext (msgs[cnt].msgid); - - if (found == NULL - || (msgs[cnt].msgstr[0] != '\0' - && strcmp (found, msgs[cnt].msgstr) != 0)) - { - /* Oops, shouldn't happen. */ - printf ("\ - gettext (\"%s\") failed, returned \"%s\", expected \"%s\"\n", - msgs[cnt].msgid, found, msgs[cnt].msgstr); - result = 1; - } - } - - return result; -} - - -static int -negative_gettext_test (void) -{ - size_t cnt; - int result = 0; - - for (cnt = 0; cnt < sizeof (msgs) / sizeof (msgs[0]); ++cnt) - { - const char *found = gettext (msgs[cnt].msgid); - - if (found != msgs[cnt].msgid) - { - /* Oops, shouldn't happen. */ - printf (" gettext (\"%s\") failed\n", msgs[cnt].msgid); - result = 1; - } - } - - return result; -} - - -static int -positive_dgettext_test (const char *domain) -{ - size_t cnt; - int result = 0; - - for (cnt = 0; cnt < sizeof (msgs) / sizeof (msgs[0]); ++cnt) - { - const char *found = dgettext (domain, msgs[cnt].msgid); - - if (found == NULL - || (msgs[cnt].msgstr[0] != '\0' - && strcmp (found, msgs[cnt].msgstr) != 0)) - { - /* Oops, shouldn't happen. */ - printf ("\ - dgettext (\"%s\", \"%s\") failed, returned \"%s\", expected \"%s\"\n", - domain, msgs[cnt].msgid, found, msgs[cnt].msgstr); - result = 1; - } - } - - return result; -} - - -static int -positive_dcgettext_test (const char *domain, int category) -{ - size_t cnt; - int result = 0; - - for (cnt = 0; cnt < sizeof (msgs) / sizeof (msgs[0]); ++cnt) - { - const char *found = dcgettext (domain, msgs[cnt].msgid, category); - - if (found == NULL - || (msgs[cnt].msgstr[0] != '\0' - && strcmp (found, msgs[cnt].msgstr) != 0)) - { - /* Oops, shouldn't happen. */ - printf ("\ - dcgettext (\"%s\", \"%s\", %s) failed, returned \"%s\", expected \"%s\"\n", - domain, msgs[cnt].msgid, catname[category], found, - msgs[cnt].msgstr); - result = 1; - } - } - - return result; -} - - -static int -negative_dcgettext_test (const char *domain, int category) -{ - size_t cnt; - int result = 0; - - for (cnt = 0; cnt < sizeof (msgs) / sizeof (msgs[0]); ++cnt) - { - const char *found = dcgettext (domain, msgs[cnt].msgid, category); - - if (found != msgs[cnt].msgid) - { - /* Oops, shouldn't happen. */ - printf (" dcgettext (\"%s\", \"%s\", %s) failed\n", - domain, msgs[cnt].msgid, catname[category]); - result = 1; - } - } - - return result; -} |