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