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