Home | History | Annotate | Download | only in locale.ctype.byname
      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