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