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