1 //===----------------------------------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // <ctype.h>
11
12 #include <ctype.h>
13 #include <type_traits>
14 #include <cassert>
15
16 #ifdef isalnum
17 #error isalnum defined
18 #endif
19
20 #ifdef isalpha
21 #error isalpha defined
22 #endif
23
24 #ifdef isblank
25 #error isblank defined
26 #endif
27
28 #ifdef iscntrl
29 #error iscntrl defined
30 #endif
31
32 #ifdef isdigit
33 #error isdigit defined
34 #endif
35
36 #ifdef isgraph
37 #error isgraph defined
38 #endif
39
40 #ifdef islower
41 #error islower defined
42 #endif
43
44 #ifdef isprint
45 #error isprint defined
46 #endif
47
48 #ifdef ispunct
49 #error ispunct defined
50 #endif
51
52 #ifdef isspace
53 #error isspace defined
54 #endif
55
56 #ifdef isupper
57 #error isupper defined
58 #endif
59
60 #ifdef isxdigit
61 #error isxdigit defined
62 #endif
63
64 #ifdef tolower
65 #error tolower defined
66 #endif
67
68 #ifdef toupper
69 #error toupper defined
70 #endif
71
main()72 int main()
73 {
74 static_assert((std::is_same<decltype(isalnum(0)), int>::value), "");
75 static_assert((std::is_same<decltype(isalpha(0)), int>::value), "");
76 static_assert((std::is_same<decltype(isblank(0)), int>::value), "");
77 static_assert((std::is_same<decltype(iscntrl(0)), int>::value), "");
78 static_assert((std::is_same<decltype(isdigit(0)), int>::value), "");
79 static_assert((std::is_same<decltype(isgraph(0)), int>::value), "");
80 static_assert((std::is_same<decltype(islower(0)), int>::value), "");
81 static_assert((std::is_same<decltype(isprint(0)), int>::value), "");
82 static_assert((std::is_same<decltype(ispunct(0)), int>::value), "");
83 static_assert((std::is_same<decltype(isspace(0)), int>::value), "");
84 static_assert((std::is_same<decltype(isupper(0)), int>::value), "");
85 static_assert((std::is_same<decltype(isxdigit(0)), int>::value), "");
86 static_assert((std::is_same<decltype(tolower(0)), int>::value), "");
87 static_assert((std::is_same<decltype(toupper(0)), int>::value), "");
88
89 assert(isalnum('a'));
90 assert(isalpha('a'));
91 assert(isblank(' '));
92 assert(!iscntrl(' '));
93 assert(!isdigit('a'));
94 assert(isgraph('a'));
95 assert(islower('a'));
96 assert(isprint('a'));
97 assert(!ispunct('a'));
98 assert(!isspace('a'));
99 assert(!isupper('a'));
100 assert(isxdigit('a'));
101 assert(tolower('A') == 'a');
102 assert(toupper('a') == 'A');
103 }
104