LTP GCOV extension - code coverage report
Current view: directory - lib/gltests - test-c-ctype.c
Test: GNU Libidn
Date: 2009-01-23 Instrumented lines: 206
Code covered: 100.0 % Executed lines: 206
Legend: not executed executed converted-only

       1                 : /* Test of character handling in C locale.
       2                 :    Copyright (C) 2005, 2007-2008 Free Software Foundation, Inc.
       3                 : 
       4                 :    This program is free software: you can redistribute it and/or modify
       5                 :    it under the terms of the GNU General Public License as published by
       6                 :    the Free Software Foundation; either version 3 of the License, or
       7                 :    (at your option) any later version.
       8                 : 
       9                 :    This program 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
      12                 :    GNU General Public License for more details.
      13                 : 
      14                 :    You should have received a copy of the GNU General Public License
      15                 :    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
      16                 : 
      17                 : /* Written by Bruno Haible <bruno@clisp.org>, 2005.  */
      18                 : 
      19                 : #include <config.h>
      20                 : 
      21                 : #include "c-ctype.h"
      22                 : 
      23                 : #include <locale.h>
      24                 : #include <stdio.h>
      25                 : #include <stdlib.h>
      26                 : 
      27                 : #define ASSERT(expr) \
      28                 :   do                                                                         \
      29                 :     {                                                                        \
      30                 :       if (!(expr))                                                           \
      31                 :         {                                                                    \
      32                 :           fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
      33                 :           fflush (stderr);                                                   \
      34                 :           abort ();                                                          \
      35                 :         }                                                                    \
      36                 :     }                                                                        \
      37                 :   while (0)
      38                 : 
      39                 : static void
      40                 : test_all (void)
      41               3 : {
      42                 :   int c;
      43                 : 
      44            1155 :   for (c = -0x80; c < 0x100; c++)
      45                 :     {
      46            1152 :       ASSERT (c_isascii (c) == (c >= 0 && c < 0x80));
      47                 : 
      48            1152 :       switch (c)
      49                 :         {
      50                 :         case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
      51                 :         case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
      52                 :         case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
      53                 :         case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
      54                 :         case 'Y': case 'Z':
      55                 :         case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
      56                 :         case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
      57                 :         case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
      58                 :         case 's': case 't': case 'u': case 'v': case 'w': case 'x':
      59                 :         case 'y': case 'z':
      60                 :         case '0': case '1': case '2': case '3': case '4': case '5':
      61                 :         case '6': case '7': case '8': case '9':
      62             186 :           ASSERT (c_isalnum (c) == 1);
      63             186 :           break;
      64                 :         default:
      65             966 :           ASSERT (c_isalnum (c) == 0);
      66                 :           break;
      67                 :         }
      68                 : 
      69            1152 :       switch (c)
      70                 :         {
      71                 :         case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
      72                 :         case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
      73                 :         case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
      74                 :         case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
      75                 :         case 'Y': case 'Z':
      76                 :         case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
      77                 :         case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
      78                 :         case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
      79                 :         case 's': case 't': case 'u': case 'v': case 'w': case 'x':
      80                 :         case 'y': case 'z':
      81             156 :           ASSERT (c_isalpha (c) == 1);
      82             156 :           break;
      83                 :         default:
      84             996 :           ASSERT (c_isalpha (c) == 0);
      85                 :           break;
      86                 :         }
      87                 : 
      88            1152 :       switch (c)
      89                 :         {
      90                 :         case '\t': case ' ':
      91               6 :           ASSERT (c_isblank (c) == 1);
      92               6 :           break;
      93                 :         default:
      94            1146 :           ASSERT (c_isblank (c) == 0);
      95                 :           break;
      96                 :         }
      97                 : 
      98            1152 :       ASSERT (c_iscntrl (c) == ((c >= 0 && c < 0x20) || c == 0x7f));
      99                 : 
     100            1152 :       switch (c)
     101                 :         {
     102                 :         case '0': case '1': case '2': case '3': case '4': case '5':
     103                 :         case '6': case '7': case '8': case '9':
     104              30 :           ASSERT (c_isdigit (c) == 1);
     105              30 :           break;
     106                 :         default:
     107            1122 :           ASSERT (c_isdigit (c) == 0);
     108                 :           break;
     109                 :         }
     110                 : 
     111            1152 :       switch (c)
     112                 :         {
     113                 :         case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
     114                 :         case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
     115                 :         case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
     116                 :         case 's': case 't': case 'u': case 'v': case 'w': case 'x':
     117                 :         case 'y': case 'z':
     118              78 :           ASSERT (c_islower (c) == 1);
     119              78 :           break;
     120                 :         default:
     121            1074 :           ASSERT (c_islower (c) == 0);
     122                 :           break;
     123                 :         }
     124                 : 
     125            1152 :       ASSERT (c_isgraph (c) == ((c >= 0x20 && c < 0x7f) && c != ' '));
     126                 : 
     127            1152 :       ASSERT (c_isprint (c) == (c >= 0x20 && c < 0x7f));
     128                 : 
     129            1152 :       ASSERT (c_ispunct (c) == (c_isgraph (c) && !c_isalnum (c)));
     130                 : 
     131            1152 :       switch (c)
     132                 :         {
     133                 :         case ' ': case '\t': case '\n': case '\v': case '\f': case '\r':
     134              18 :           ASSERT (c_isspace (c) == 1);
     135              18 :           break;
     136                 :         default:
     137            1134 :           ASSERT (c_isspace (c) == 0);
     138                 :           break;
     139                 :         }
     140                 : 
     141            1152 :       switch (c)
     142                 :         {
     143                 :         case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
     144                 :         case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
     145                 :         case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
     146                 :         case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
     147                 :         case 'Y': case 'Z':
     148              78 :           ASSERT (c_isupper (c) == 1);
     149              78 :           break;
     150                 :         default:
     151            1074 :           ASSERT (c_isupper (c) == 0);
     152                 :           break;
     153                 :         }
     154                 : 
     155            1152 :       switch (c)
     156                 :         {
     157                 :         case '0': case '1': case '2': case '3': case '4': case '5':
     158                 :         case '6': case '7': case '8': case '9':
     159                 :         case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
     160                 :         case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
     161              66 :           ASSERT (c_isxdigit (c) == 1);
     162              66 :           break;
     163                 :         default:
     164            1086 :           ASSERT (c_isxdigit (c) == 0);
     165                 :           break;
     166                 :         }
     167                 : 
     168            1152 :       switch (c)
     169                 :         {
     170                 :         case 'A':
     171               3 :           ASSERT (c_tolower (c) == 'a');
     172               3 :           ASSERT (c_toupper (c) == c);
     173               3 :           break;
     174                 :         case 'B':
     175               3 :           ASSERT (c_tolower (c) == 'b');
     176               3 :           ASSERT (c_toupper (c) == c);
     177               3 :           break;
     178                 :         case 'C':
     179               3 :           ASSERT (c_tolower (c) == 'c');
     180               3 :           ASSERT (c_toupper (c) == c);
     181               3 :           break;
     182                 :         case 'D':
     183               3 :           ASSERT (c_tolower (c) == 'd');
     184               3 :           ASSERT (c_toupper (c) == c);
     185               3 :           break;
     186                 :         case 'E':
     187               3 :           ASSERT (c_tolower (c) == 'e');
     188               3 :           ASSERT (c_toupper (c) == c);
     189               3 :           break;
     190                 :         case 'F':
     191               3 :           ASSERT (c_tolower (c) == 'f');
     192               3 :           ASSERT (c_toupper (c) == c);
     193               3 :           break;
     194                 :         case 'G':
     195               3 :           ASSERT (c_tolower (c) == 'g');
     196               3 :           ASSERT (c_toupper (c) == c);
     197               3 :           break;
     198                 :         case 'H':
     199               3 :           ASSERT (c_tolower (c) == 'h');
     200               3 :           ASSERT (c_toupper (c) == c);
     201               3 :           break;
     202                 :         case 'I':
     203               3 :           ASSERT (c_tolower (c) == 'i');
     204               3 :           ASSERT (c_toupper (c) == c);
     205               3 :           break;
     206                 :         case 'J':
     207               3 :           ASSERT (c_tolower (c) == 'j');
     208               3 :           ASSERT (c_toupper (c) == c);
     209               3 :           break;
     210                 :         case 'K':
     211               3 :           ASSERT (c_tolower (c) == 'k');
     212               3 :           ASSERT (c_toupper (c) == c);
     213               3 :           break;
     214                 :         case 'L':
     215               3 :           ASSERT (c_tolower (c) == 'l');
     216               3 :           ASSERT (c_toupper (c) == c);
     217               3 :           break;
     218                 :         case 'M':
     219               3 :           ASSERT (c_tolower (c) == 'm');
     220               3 :           ASSERT (c_toupper (c) == c);
     221               3 :           break;
     222                 :         case 'N':
     223               3 :           ASSERT (c_tolower (c) == 'n');
     224               3 :           ASSERT (c_toupper (c) == c);
     225               3 :           break;
     226                 :         case 'O':
     227               3 :           ASSERT (c_tolower (c) == 'o');
     228               3 :           ASSERT (c_toupper (c) == c);
     229               3 :           break;
     230                 :         case 'P':
     231               3 :           ASSERT (c_tolower (c) == 'p');
     232               3 :           ASSERT (c_toupper (c) == c);
     233               3 :           break;
     234                 :         case 'Q':
     235               3 :           ASSERT (c_tolower (c) == 'q');
     236               3 :           ASSERT (c_toupper (c) == c);
     237               3 :           break;
     238                 :         case 'R':
     239               3 :           ASSERT (c_tolower (c) == 'r');
     240               3 :           ASSERT (c_toupper (c) == c);
     241               3 :           break;
     242                 :         case 'S':
     243               3 :           ASSERT (c_tolower (c) == 's');
     244               3 :           ASSERT (c_toupper (c) == c);
     245               3 :           break;
     246                 :         case 'T':
     247               3 :           ASSERT (c_tolower (c) == 't');
     248               3 :           ASSERT (c_toupper (c) == c);
     249               3 :           break;
     250                 :         case 'U':
     251               3 :           ASSERT (c_tolower (c) == 'u');
     252               3 :           ASSERT (c_toupper (c) == c);
     253               3 :           break;
     254                 :         case 'V':
     255               3 :           ASSERT (c_tolower (c) == 'v');
     256               3 :           ASSERT (c_toupper (c) == c);
     257               3 :           break;
     258                 :         case 'W':
     259               3 :           ASSERT (c_tolower (c) == 'w');
     260               3 :           ASSERT (c_toupper (c) == c);
     261               3 :           break;
     262                 :         case 'X':
     263               3 :           ASSERT (c_tolower (c) == 'x');
     264               3 :           ASSERT (c_toupper (c) == c);
     265               3 :           break;
     266                 :         case 'Y':
     267               3 :           ASSERT (c_tolower (c) == 'y');
     268               3 :           ASSERT (c_toupper (c) == c);
     269               3 :           break;
     270                 :         case 'Z':
     271               3 :           ASSERT (c_tolower (c) == 'z');
     272               3 :           ASSERT (c_toupper (c) == c);
     273               3 :           break;
     274                 :         case 'a':
     275               3 :           ASSERT (c_tolower (c) == c);
     276               3 :           ASSERT (c_toupper (c) == 'A');
     277               3 :           break;
     278                 :         case 'b':
     279               3 :           ASSERT (c_tolower (c) == c);
     280               3 :           ASSERT (c_toupper (c) == 'B');
     281               3 :           break;
     282                 :         case 'c':
     283               3 :           ASSERT (c_tolower (c) == c);
     284               3 :           ASSERT (c_toupper (c) == 'C');
     285               3 :           break;
     286                 :         case 'd':
     287               3 :           ASSERT (c_tolower (c) == c);
     288               3 :           ASSERT (c_toupper (c) == 'D');
     289               3 :           break;
     290                 :         case 'e':
     291               3 :           ASSERT (c_tolower (c) == c);
     292               3 :           ASSERT (c_toupper (c) == 'E');
     293               3 :           break;
     294                 :         case 'f':
     295               3 :           ASSERT (c_tolower (c) == c);
     296               3 :           ASSERT (c_toupper (c) == 'F');
     297               3 :           break;
     298                 :         case 'g':
     299               3 :           ASSERT (c_tolower (c) == c);
     300               3 :           ASSERT (c_toupper (c) == 'G');
     301               3 :           break;
     302                 :         case 'h':
     303               3 :           ASSERT (c_tolower (c) == c);
     304               3 :           ASSERT (c_toupper (c) == 'H');
     305               3 :           break;
     306                 :         case 'i':
     307               3 :           ASSERT (c_tolower (c) == c);
     308               3 :           ASSERT (c_toupper (c) == 'I');
     309               3 :           break;
     310                 :         case 'j':
     311               3 :           ASSERT (c_tolower (c) == c);
     312               3 :           ASSERT (c_toupper (c) == 'J');
     313               3 :           break;
     314                 :         case 'k':
     315               3 :           ASSERT (c_tolower (c) == c);
     316               3 :           ASSERT (c_toupper (c) == 'K');
     317               3 :           break;
     318                 :         case 'l':
     319               3 :           ASSERT (c_tolower (c) == c);
     320               3 :           ASSERT (c_toupper (c) == 'L');
     321               3 :           break;
     322                 :         case 'm':
     323               3 :           ASSERT (c_tolower (c) == c);
     324               3 :           ASSERT (c_toupper (c) == 'M');
     325               3 :           break;
     326                 :         case 'n':
     327               3 :           ASSERT (c_tolower (c) == c);
     328               3 :           ASSERT (c_toupper (c) == 'N');
     329               3 :           break;
     330                 :         case 'o':
     331               3 :           ASSERT (c_tolower (c) == c);
     332               3 :           ASSERT (c_toupper (c) == 'O');
     333               3 :           break;
     334                 :         case 'p':
     335               3 :           ASSERT (c_tolower (c) == c);
     336               3 :           ASSERT (c_toupper (c) == 'P');
     337               3 :           break;
     338                 :         case 'q':
     339               3 :           ASSERT (c_tolower (c) == c);
     340               3 :           ASSERT (c_toupper (c) == 'Q');
     341               3 :           break;
     342                 :         case 'r':
     343               3 :           ASSERT (c_tolower (c) == c);
     344               3 :           ASSERT (c_toupper (c) == 'R');
     345               3 :           break;
     346                 :         case 's':
     347               3 :           ASSERT (c_tolower (c) == c);
     348               3 :           ASSERT (c_toupper (c) == 'S');
     349               3 :           break;
     350                 :         case 't':
     351               3 :           ASSERT (c_tolower (c) == c);
     352               3 :           ASSERT (c_toupper (c) == 'T');
     353               3 :           break;
     354                 :         case 'u':
     355               3 :           ASSERT (c_tolower (c) == c);
     356               3 :           ASSERT (c_toupper (c) == 'U');
     357               3 :           break;
     358                 :         case 'v':
     359               3 :           ASSERT (c_tolower (c) == c);
     360               3 :           ASSERT (c_toupper (c) == 'V');
     361               3 :           break;
     362                 :         case 'w':
     363               3 :           ASSERT (c_tolower (c) == c);
     364               3 :           ASSERT (c_toupper (c) == 'W');
     365               3 :           break;
     366                 :         case 'x':
     367               3 :           ASSERT (c_tolower (c) == c);
     368               3 :           ASSERT (c_toupper (c) == 'X');
     369               3 :           break;
     370                 :         case 'y':
     371               3 :           ASSERT (c_tolower (c) == c);
     372               3 :           ASSERT (c_toupper (c) == 'Y');
     373               3 :           break;
     374                 :         case 'z':
     375               3 :           ASSERT (c_tolower (c) == c);
     376               3 :           ASSERT (c_toupper (c) == 'Z');
     377               3 :           break;
     378                 :         default:
     379             996 :           ASSERT (c_tolower (c) == c);
     380             996 :           ASSERT (c_toupper (c) == c);
     381                 :           break;
     382                 :         }
     383                 :     }
     384               3 : }
     385                 : 
     386                 : int
     387                 : main ()
     388               1 : {
     389               1 :   test_all ();
     390                 : 
     391               1 :   setlocale (LC_ALL, "de_DE");
     392               1 :   test_all ();
     393                 : 
     394               1 :   setlocale (LC_ALL, "ja_JP.EUC-JP");
     395               1 :   test_all ();
     396                 : 
     397               1 :   return 0;
     398                 : }

Generated by: LTP GCOV extension version 1.6