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