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