toupper_1.pass.cpp revision 63d8f7e341d98bdd7e8d9b52945db01f4708fa3a
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// charT toupper(charT) const;
15
16#include <locale>
17#include <cassert>
18
19#include "platform_support.h" // locale name macros
20
21int main()
22{
23    {
24        std::locale l(LOCALE_en_US_UTF_8);
25        {
26            typedef std::ctype<char> F;
27            const F& f = std::use_facet<F>(l);
28
29            assert(f.toupper(' ') == ' ');
30            assert(f.toupper('A') == 'A');
31            assert(f.toupper('\x07') == '\x07');
32            assert(f.toupper('.') == '.');
33            assert(f.toupper('a') == 'A');
34            assert(f.toupper('1') == '1');
35            assert(f.toupper('\xDA') == '\xDA');
36            assert(f.toupper('\xFA') == '\xDA');
37        }
38    }
39    {
40        std::locale l("C");
41        {
42            typedef std::ctype<char> F;
43            const F& f = std::use_facet<F>(l);
44
45            assert(f.toupper(' ') == ' ');
46            assert(f.toupper('A') == 'A');
47            assert(f.toupper('\x07') == '\x07');
48            assert(f.toupper('.') == '.');
49            assert(f.toupper('a') == 'A');
50            assert(f.toupper('1') == '1');
51            assert(f.toupper('\xDA') == '\xDA');
52            assert(f.toupper('\xFA') == '\xFA');
53        }
54    }
55    {
56        std::locale l(LOCALE_en_US_UTF_8);
57        {
58            typedef std::ctype<wchar_t> F;
59            const F& f = std::use_facet<F>(l);
60
61            assert(f.toupper(L' ') == L' ');
62            assert(f.toupper(L'A') == L'A');
63            assert(f.toupper(L'\x07') == L'\x07');
64            assert(f.toupper(L'.') == L'.');
65            assert(f.toupper(L'a') == L'A');
66            assert(f.toupper(L'1') == L'1');
67            assert(f.toupper(L'\xDA') == L'\xDA');
68            assert(f.toupper(L'\xFA') == L'\xDA');
69        }
70    }
71    {
72        std::locale l("C");
73        {
74            typedef std::ctype<wchar_t> F;
75            const F& f = std::use_facet<F>(l);
76
77            assert(f.toupper(L' ') == L' ');
78            assert(f.toupper(L'A') == L'A');
79            assert(f.toupper(L'\x07') == L'\x07');
80            assert(f.toupper(L'.') == L'.');
81            assert(f.toupper(L'a') == L'A');
82            assert(f.toupper(L'1') == L'1');
83            assert(f.toupper(L'\xDA') == L'\xDA');
84            assert(f.toupper(L'\xFA') == L'\xFA');
85        }
86    }
87}
88