Home | History | Annotate | Download | only in locale.moneypunct.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 // REQUIRES: locale.en_US.UTF-8
     11 // REQUIRES: locale.fr_FR.UTF-8
     12 // REQUIRES: locale.ru_RU.UTF-8
     13 // REQUIRES: locale.zh_CN.UTF-8
     14 
     15 // Russia uses ',' for the decimal separator. GLIBC returns '.'
     16 // XFAIL: linux
     17 
     18 // <locale>
     19 
     20 // class moneypunct_byname<charT, International>
     21 
     22 // charT decimal_point() const;
     23 
     24 #include <locale>
     25 #include <limits>
     26 #include <cassert>
     27 
     28 #include "platform_support.h" // locale name macros
     29 
     30 class Fnf
     31     : public std::moneypunct_byname<char, false>
     32 {
     33 public:
     34     explicit Fnf(const std::string& nm, std::size_t refs = 0)
     35         : std::moneypunct_byname<char, false>(nm, refs) {}
     36 };
     37 
     38 class Fnt
     39     : public std::moneypunct_byname<char, true>
     40 {
     41 public:
     42     explicit Fnt(const std::string& nm, std::size_t refs = 0)
     43         : std::moneypunct_byname<char, true>(nm, refs) {}
     44 };
     45 
     46 class Fwf
     47     : public std::moneypunct_byname<wchar_t, false>
     48 {
     49 public:
     50     explicit Fwf(const std::string& nm, std::size_t refs = 0)
     51         : std::moneypunct_byname<wchar_t, false>(nm, refs) {}
     52 };
     53 
     54 class Fwt
     55     : public std::moneypunct_byname<wchar_t, true>
     56 {
     57 public:
     58     explicit Fwt(const std::string& nm, std::size_t refs = 0)
     59         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
     60 };
     61 
     62 int main()
     63 {
     64     {
     65         Fnf f("C", 1);
     66         assert(f.decimal_point() == std::numeric_limits<char>::max());
     67     }
     68     {
     69         Fnt f("C", 1);
     70         assert(f.decimal_point() == std::numeric_limits<char>::max());
     71     }
     72     {
     73         Fwf f("C", 1);
     74         assert(f.decimal_point() == std::numeric_limits<wchar_t>::max());
     75     }
     76     {
     77         Fwt f("C", 1);
     78         assert(f.decimal_point() == std::numeric_limits<wchar_t>::max());
     79     }
     80 
     81     {
     82         Fnf f(LOCALE_en_US_UTF_8, 1);
     83         assert(f.decimal_point() == '.');
     84     }
     85     {
     86         Fnt f(LOCALE_en_US_UTF_8, 1);
     87         assert(f.decimal_point() == '.');
     88     }
     89     {
     90         Fwf f(LOCALE_en_US_UTF_8, 1);
     91         assert(f.decimal_point() == L'.');
     92     }
     93     {
     94         Fwt f(LOCALE_en_US_UTF_8, 1);
     95         assert(f.decimal_point() == L'.');
     96     }
     97 
     98     {
     99         Fnf f(LOCALE_fr_FR_UTF_8, 1);
    100         assert(f.decimal_point() == ',');
    101     }
    102     {
    103         Fnt f(LOCALE_fr_FR_UTF_8, 1);
    104         assert(f.decimal_point() == ',');
    105     }
    106     {
    107         Fwf f(LOCALE_fr_FR_UTF_8, 1);
    108         assert(f.decimal_point() == L',');
    109     }
    110     {
    111         Fwt f(LOCALE_fr_FR_UTF_8, 1);
    112         assert(f.decimal_point() == L',');
    113     }
    114 
    115     {
    116         Fnf f(LOCALE_ru_RU_UTF_8, 1);
    117         assert(f.decimal_point() == ',');
    118     }
    119     {
    120         Fnt f(LOCALE_ru_RU_UTF_8, 1);
    121         assert(f.decimal_point() == ',');
    122     }
    123     {
    124         Fwf f(LOCALE_ru_RU_UTF_8, 1);
    125         assert(f.decimal_point() == L',');
    126     }
    127     {
    128         Fwt f(LOCALE_ru_RU_UTF_8, 1);
    129         assert(f.decimal_point() == L',');
    130     }
    131 
    132     {
    133         Fnf f(LOCALE_zh_CN_UTF_8, 1);
    134         assert(f.decimal_point() == '.');
    135     }
    136     {
    137         Fnt f(LOCALE_zh_CN_UTF_8, 1);
    138         assert(f.decimal_point() == '.');
    139     }
    140     {
    141         Fwf f(LOCALE_zh_CN_UTF_8, 1);
    142         assert(f.decimal_point() == L'.');
    143     }
    144     {
    145         Fwt f(LOCALE_zh_CN_UTF_8, 1);
    146         assert(f.decimal_point() == L'.');
    147     }
    148 }
    149