]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/sanitizer_common/TestCases/ctype.c
Vendor import of compiler-rt trunk r351319 (just before the release_80
[FreeBSD/FreeBSD.git] / test / sanitizer_common / TestCases / ctype.c
1 // RUN: %clang %s -o %t && %run %t 2>&1 | FileCheck %s
2
3 #include <ctype.h>
4 #include <limits.h>
5 #include <locale.h>
6 #include <stddef.h>
7 #include <stdio.h>
8 #include <stdlib.h>
9
10 void check_ctype(void) {
11   unsigned char c;
12   volatile size_t i = 0; /* a dummy variable to prevent optimizing code out */
13
14   for (c = 0; c < UCHAR_MAX; c++)
15     i += !!isalpha(c);
16   for (c = 0; c < UCHAR_MAX; c++)
17     i += !!isascii(c);
18   for (c = 0; c < UCHAR_MAX; c++)
19     i += !!isblank(c);
20   for (c = 0; c < UCHAR_MAX; c++)
21     i += !!iscntrl(c);
22   for (c = 0; c < UCHAR_MAX; c++)
23     i += !!isdigit(c);
24   for (c = 0; c < UCHAR_MAX; c++)
25     i += !!isgraph(c);
26   for (c = 0; c < UCHAR_MAX; c++)
27     i += !!islower(c);
28   for (c = 0; c < UCHAR_MAX; c++)
29     i += !!isprint(c);
30   for (c = 0; c < UCHAR_MAX; c++)
31     i += !!ispunct(c);
32   for (c = 0; c < UCHAR_MAX; c++)
33     i += !!isspace(c);
34   for (c = 0; c < UCHAR_MAX; c++)
35     i += !!isupper(c);
36   for (c = 0; c < UCHAR_MAX; c++)
37     i += !!isxdigit(c);
38   for (c = 0; c < UCHAR_MAX; c++)
39     i += !!isalnum(c);
40
41   for (c = 0; c < UCHAR_MAX; c++)
42     i += !!tolower(c);
43   for (c = 0; c < UCHAR_MAX; c++)
44     i += !!toupper(c);
45
46   i += !!isalpha(EOF);
47   i += !!isascii(EOF);
48   i += !!isblank(EOF);
49   i += !!iscntrl(EOF);
50   i += !!isdigit(EOF);
51   i += !!isgraph(EOF);
52   i += !!islower(EOF);
53   i += !!isprint(EOF);
54   i += !!ispunct(EOF);
55   i += !!isspace(EOF);
56   i += !!isupper(EOF);
57   i += !!isxdigit(EOF);
58   i += !!isalnum(EOF);
59
60   i += !!tolower(EOF);
61   i += !!toupper(EOF);
62
63   if (i)
64     return;
65   else
66     return;
67 }
68
69 int main(int argc, char **argv) {
70   check_ctype();
71
72   setlocale(LC_ALL, "");
73
74   check_ctype();
75
76   setlocale(LC_ALL, "en_US.UTF-8");
77
78   check_ctype();
79
80   setlocale(LC_CTYPE, "pl_PL.UTF-8");
81
82   check_ctype();
83
84   printf("OK\n");
85
86   // CHECK: OK
87
88   return 0;
89 }