is_1.pass.cpp revision 86698890db516536b963cf978369c9aa6a2c836f
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// <locale>
11
12// template <class charT> class ctype_byname;
13
14// bool is(mask m, charT c) const;
15
16#include <locale>
17#include <type_traits>
18#include <cassert>
19
20int main()
21{
22    {
23        std::locale l("en_US.UTF-8");
24        {
25            typedef std::ctype<wchar_t> F;
26            const F& f = std::use_facet<F>(l);
27
28            assert(f.is(F::space, L' '));
29            assert(!f.is(F::space, L'A'));
30
31            assert(f.is(F::print, L' '));
32            assert(!f.is(F::print, L'\x07'));
33
34            assert(f.is(F::cntrl, L'\x07'));
35            assert(!f.is(F::cntrl, L' '));
36
37            assert(f.is(F::upper, L'A'));
38            assert(!f.is(F::upper, L'a'));
39
40            assert(f.is(F::lower, L'a'));
41            assert(!f.is(F::lower, L'A'));
42
43            assert(f.is(F::alpha, L'a'));
44            assert(!f.is(F::alpha, L'1'));
45
46            assert(f.is(F::digit, L'1'));
47            assert(!f.is(F::digit, L'a'));
48
49            assert(f.is(F::punct, L'.'));
50            assert(!f.is(F::punct, L'a'));
51
52            assert(f.is(F::xdigit, L'a'));
53            assert(!f.is(F::xdigit, L'g'));
54
55            assert(f.is(F::alnum, L'a'));
56            assert(!f.is(F::alnum, L'.'));
57
58            assert(f.is(F::graph, L'.'));
59            assert(!f.is(F::graph,  L'\x07'));
60
61            assert(f.is(F::alpha, L'\x00DA'));
62            assert(f.is(F::upper, L'\x00DA'));
63        }
64    }
65    {
66        std::locale l("C");
67        {
68            typedef std::ctype<wchar_t> F;
69            const F& f = std::use_facet<F>(l);
70
71            assert(f.is(F::space, L' '));
72            assert(!f.is(F::space, L'A'));
73
74            assert(f.is(F::print, L' '));
75            assert(!f.is(F::print, L'\x07'));
76
77            assert(f.is(F::cntrl, L'\x07'));
78            assert(!f.is(F::cntrl, L' '));
79
80            assert(f.is(F::upper, L'A'));
81            assert(!f.is(F::upper, L'a'));
82
83            assert(f.is(F::lower, L'a'));
84            assert(!f.is(F::lower, L'A'));
85
86            assert(f.is(F::alpha, L'a'));
87            assert(!f.is(F::alpha, L'1'));
88
89            assert(f.is(F::digit, L'1'));
90            assert(!f.is(F::digit, L'a'));
91
92            assert(f.is(F::punct, L'.'));
93            assert(!f.is(F::punct, L'a'));
94
95            assert(f.is(F::xdigit, L'a'));
96            assert(!f.is(F::xdigit, L'g'));
97
98            assert(f.is(F::alnum, L'a'));
99            assert(!f.is(F::alnum, L'.'));
100
101            assert(f.is(F::graph, L'.'));
102            assert(!f.is(F::graph,  L'\x07'));
103
104            assert(!f.is(F::alpha, L'\x00DA'));
105            assert(!f.is(F::upper, L'\x00DA'));
106        }
107    }
108}
109