(root)/
glibc-2.38/
wctype/
test_wcfuncs.c
       1  /* Copyright (C) 1999-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 <stdio.h>
      19  #include <stdlib.h>
      20  #include <wctype.h>
      21  
      22  int
      23  main (int argc, char *argv[])
      24  {
      25    int result = 0;
      26    wint_t ch;
      27  
      28  
      29    for (ch = 0; ch < 128; ++ch)
      30      {
      31        if (iswlower (ch))
      32  	{
      33  	  /* Get corresponding upper case character.  */
      34  	  wint_t up = towupper (ch);
      35  	  /* This should have no effect.  */
      36  	  wint_t low  = towlower (ch);
      37  
      38  	  if ((ch != low) || (up == ch) || (up == low))
      39  	    {
      40  	      printf ("iswlower/towupper/towlower for character \\%x failed\n", ch);
      41  	      result++;
      42  	    }
      43  	}
      44        if (iswupper (ch))
      45  	{
      46  	  /* Get corresponding lower case character.  */
      47  	  wint_t low = towlower (ch);
      48  	  /* This should have no effect.  */
      49  	  wint_t up  = towupper (ch);
      50  
      51  	  if ((ch != up) || (low == ch) || (up == low))
      52  	    {
      53  	      printf ("iswupper/towlower/towupper for character \\%x failed\n", ch);
      54  	      result++;
      55  	    }
      56  	}
      57      }
      58  
      59    /* Finally some specific tests.  */
      60    ch = L'A';
      61    if (!iswupper (ch) || iswlower (ch))
      62      {
      63        printf ("!iswupper/iswlower (L'A') failed\n");
      64        result++;
      65  
      66      }
      67    ch = L'a';
      68    if (iswupper (ch) || !iswlower (ch))
      69      {
      70        printf ("iswupper/!iswlower (L'a') failed\n");
      71        result++;
      72      }
      73    if (towlower (L'A') != L'a')
      74      {
      75        printf ("towlower(L'A') failed\n");
      76        result++;
      77      }
      78    if (towupper (L'a') != L'A')
      79      {
      80        printf ("towupper(L'a') failed\n");
      81        result++;
      82      }
      83  
      84    if (result == 0)
      85      puts ("All test successful!");
      86    return result != 0;
      87  }