(root)/
glibc-2.38/
wctype/
test_wctype.c
       1  /* Copyright (C) 1996-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #include <ctype.h>
      19  #include <stdio.h>
      20  #include <stdlib.h>
      21  #include <wctype.h>
      22  
      23  int
      24  main (int argc, char *argv[])
      25  {
      26    int result = 0;
      27    wctype_t bit_alnum = wctype ("alnum");
      28    wctype_t bit_alpha = wctype ("alpha");
      29    wctype_t bit_cntrl = wctype ("cntrl");
      30    wctype_t bit_digit = wctype ("digit");
      31    wctype_t bit_graph = wctype ("graph");
      32    wctype_t bit_lower = wctype ("lower");
      33    wctype_t bit_print = wctype ("print");
      34    wctype_t bit_punct = wctype ("punct");
      35    wctype_t bit_space = wctype ("space");
      36    wctype_t bit_upper = wctype ("upper");
      37    wctype_t bit_xdigit = wctype ("xdigit");
      38    int ch;
      39  
      40    if (wctype ("does not exist") != 0)
      41      {
      42        puts ("wctype return value != 0 for non existing property");
      43        result = 1;
      44      }
      45  
      46    for (ch = 0; ch < 256; ++ch)
      47      {
      48  #define TEST(test) \
      49        do								      \
      50  	{								      \
      51  	  if ((is##test (ch) == 0) != (iswctype (ch, bit_##test) == 0))	      \
      52  	    {								      \
      53  	      printf ("`iswctype' class `%s' test "			      \
      54  		      "for character \\%o failed\n", #test, ch);	      \
      55  	      result = 1;						      \
      56  	    }								      \
      57  	  if ((is##test (ch) == 0) != (isw##test (ch) == 0))		      \
      58  	    {								      \
      59  	      printf ("`isw%s' test for character \\%o failed\n",	      \
      60  		      #test, ch);					      \
      61  	      result = 1;						      \
      62  	    }								      \
      63  	 }								      \
      64        while (0)
      65  
      66        TEST (alnum);
      67        TEST (alpha);
      68        TEST (cntrl);
      69        TEST (digit);
      70        TEST (graph);
      71        TEST (lower);
      72        TEST (print);
      73        TEST (punct);
      74        TEST (space);
      75        TEST (upper);
      76        TEST (xdigit);
      77      }
      78  
      79    if (result == 0)
      80      puts ("All test successful!");
      81    return result;
      82  }