1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // <cctype>
10 
11 #include <cctype>
12 #include <type_traits>
13 #include <cassert>
14 
15 #include "test_macros.h"
16 
17 #ifdef isalnum
18 #error isalnum defined
19 #endif
20 
21 #ifdef isalpha
22 #error isalpha defined
23 #endif
24 
25 #ifdef isblank
26 #error isblank defined
27 #endif
28 
29 #ifdef iscntrl
30 #error iscntrl defined
31 #endif
32 
33 #ifdef isdigit
34 #error isdigit defined
35 #endif
36 
37 #ifdef isgraph
38 #error isgraph defined
39 #endif
40 
41 #ifdef islower
42 #error islower defined
43 #endif
44 
45 #ifdef isprint
46 #error isprint defined
47 #endif
48 
49 #ifdef ispunct
50 #error ispunct defined
51 #endif
52 
53 #ifdef isspace
54 #error isspace defined
55 #endif
56 
57 #ifdef isupper
58 #error isupper defined
59 #endif
60 
61 #ifdef isxdigit
62 #error isxdigit defined
63 #endif
64 
65 #ifdef tolower
66 #error tolower defined
67 #endif
68 
69 #ifdef toupper
70 #error toupper defined
71 #endif
72 
main(int,char **)73 int main(int, char**)
74 {
75 
76     ASSERT_SAME_TYPE(int, decltype(std::isalnum(0)));
77     ASSERT_SAME_TYPE(int, decltype(std::isalpha(0)));
78     ASSERT_SAME_TYPE(int, decltype(std::isblank(0)));
79     ASSERT_SAME_TYPE(int, decltype(std::iscntrl(0)));
80     ASSERT_SAME_TYPE(int, decltype(std::isdigit(0)));
81     ASSERT_SAME_TYPE(int, decltype(std::isgraph(0)));
82     ASSERT_SAME_TYPE(int, decltype(std::islower(0)));
83     ASSERT_SAME_TYPE(int, decltype(std::isprint(0)));
84     ASSERT_SAME_TYPE(int, decltype(std::ispunct(0)));
85     ASSERT_SAME_TYPE(int, decltype(std::isspace(0)));
86     ASSERT_SAME_TYPE(int, decltype(std::isupper(0)));
87     ASSERT_SAME_TYPE(int, decltype(std::isxdigit(0)));
88     ASSERT_SAME_TYPE(int, decltype(std::tolower(0)));
89     ASSERT_SAME_TYPE(int, decltype(std::toupper(0)));
90 
91     assert( std::isalnum('a'));
92     assert( std::isalpha('a'));
93     assert( std::isblank(' '));
94     assert(!std::iscntrl(' '));
95     assert(!std::isdigit('a'));
96     assert( std::isgraph('a'));
97     assert( std::islower('a'));
98     assert( std::isprint('a'));
99     assert(!std::ispunct('a'));
100     assert(!std::isspace('a'));
101     assert(!std::isupper('a'));
102     assert( std::isxdigit('a'));
103     assert( std::tolower('A') == 'a');
104     assert( std::toupper('a') == 'A');
105 
106   return 0;
107 }
108