1 /* Test of the ngettext functions.
2    Copyright (C) 2000-2022 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9 
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14 
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <https://www.gnu.org/licenses/>.  */
18 
19 #include <langinfo.h>
20 #include <libintl.h>
21 #include <locale.h>
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include <string.h>
25 
26 
27 static int
do_test(void)28 do_test (void)
29 {
30   const char *strs[2] = { "singular", "plural" };
31   unsigned long int i;
32   int res = 0;
33 
34   /* We don't want any translation here.  */
35   setenv ("LANGUAGE", "C", 1);
36   unsetenv ("OUTPUT_CHARSET");
37 
38   for (i = 0; i < 30; ++i)
39     {
40       char *tr;
41 
42       tr = ngettext (strs[0], strs[1], i);
43 #define TEST \
44       do								      \
45 	if (tr != strs[i != 1])						      \
46 	  {								      \
47 	    if (strcmp (tr, strs[i != 1]) == 0)				      \
48 	      printf ("%lu: correct string, wrong pointer (%s)\n", i, tr);    \
49 	    else							      \
50 	      printf ("%lu: wrong result (%s)\n", i, tr);		      \
51 	    res = 1;							      \
52 	  }								      \
53       while (0)
54       TEST;
55 
56       tr = dngettext ("messages", strs[0], strs[1], i);
57       TEST;
58 
59       tr = dcngettext ("messages", strs[0], strs[1], i, LC_MESSAGES);
60       TEST;
61     }
62 
63   return res;
64 }
65 
66 #define TEST_FUNCTION do_test ()
67 #include "../test-skeleton.c"
68