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 // XFAIL: no-wide-characters
10 
11 // <wctype.h>
12 
13 #include <wctype.h>
14 #include <type_traits>
15 
16 #include "test_macros.h"
17 
18 #ifndef WEOF
19 #error WEOF not defined
20 #endif
21 
22 #ifdef iswalnum
23 #error iswalnum defined
24 #endif
25 
26 #ifdef iswalpha
27 #error iswalpha defined
28 #endif
29 
30 #ifdef iswblank
31 #error iswblank defined
32 #endif
33 
34 #ifdef iswcntrl
35 #error iswcntrl defined
36 #endif
37 
38 #ifdef iswdigit
39 #error iswdigit defined
40 #endif
41 
42 #ifdef iswgraph
43 #error iswgraph defined
44 #endif
45 
46 #ifdef iswlower
47 #error iswlower defined
48 #endif
49 
50 #ifdef iswprint
51 #error iswprint defined
52 #endif
53 
54 #ifdef iswpunct
55 #error iswpunct defined
56 #endif
57 
58 #ifdef iswspace
59 #error iswspace defined
60 #endif
61 
62 #ifdef iswupper
63 #error iswupper defined
64 #endif
65 
66 #ifdef iswxdigit
67 #error iswxdigit defined
68 #endif
69 
70 #ifdef iswctype
71 #error iswctype defined
72 #endif
73 
74 #ifdef wctype
75 #error wctype defined
76 #endif
77 
78 #ifdef towlower
79 #error towlower defined
80 #endif
81 
82 #ifdef towupper
83 #error towupper defined
84 #endif
85 
86 #ifdef towctrans
87 #error towctrans defined
88 #endif
89 
90 #ifdef wctrans
91 #error wctrans defined
92 #endif
93 
main(int,char **)94 int main(int, char**)
95 {
96     wint_t w = 0;
97     wctrans_t wctr = 0;
98     wctype_t wct = 0;
99     static_assert((std::is_same<decltype(iswalnum(w)), int>::value), "");
100     static_assert((std::is_same<decltype(iswalpha(w)), int>::value), "");
101     static_assert((std::is_same<decltype(iswblank(w)), int>::value), "");
102     static_assert((std::is_same<decltype(iswcntrl(w)), int>::value), "");
103     static_assert((std::is_same<decltype(iswdigit(w)), int>::value), "");
104     static_assert((std::is_same<decltype(iswgraph(w)), int>::value), "");
105     static_assert((std::is_same<decltype(iswlower(w)), int>::value), "");
106     static_assert((std::is_same<decltype(iswprint(w)), int>::value), "");
107     static_assert((std::is_same<decltype(iswpunct(w)), int>::value), "");
108     static_assert((std::is_same<decltype(iswspace(w)), int>::value), "");
109     static_assert((std::is_same<decltype(iswupper(w)), int>::value), "");
110     static_assert((std::is_same<decltype(iswxdigit(w)), int>::value), "");
111     static_assert((std::is_same<decltype(iswctype(w, wct)), int>::value), "");
112     static_assert((std::is_same<decltype(wctype("")), wctype_t>::value), "");
113     static_assert((std::is_same<decltype(towlower(w)), wint_t>::value), "");
114     static_assert((std::is_same<decltype(towupper(w)), wint_t>::value), "");
115     static_assert((std::is_same<decltype(towctrans(w, wctr)), wint_t>::value), "");
116     static_assert((std::is_same<decltype(wctrans("")), wctrans_t>::value), "");
117 
118   return 0;
119 }
120