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 // XFAIL: apple-darwin
     11 
     12 // <locale>
     13 
     14 // class moneypunct_byname<charT, International>
     15 
     16 // string_type curr_symbol() const;
     17 
     18 #include <locale>
     19 #include <limits>
     20 #include <cassert>
     21 
     22 #include "platform_support.h" // locale name macros
     23 
     24 class Fnf
     25     : public std::moneypunct_byname<char, false>
     26 {
     27 public:
     28     explicit Fnf(const std::string& nm, std::size_t refs = 0)
     29         : std::moneypunct_byname<char, false>(nm, refs) {}
     30 };
     31 
     32 class Fnt
     33     : public std::moneypunct_byname<char, true>
     34 {
     35 public:
     36     explicit Fnt(const std::string& nm, std::size_t refs = 0)
     37         : std::moneypunct_byname<char, true>(nm, refs) {}
     38 };
     39 
     40 class Fwf
     41     : public std::moneypunct_byname<wchar_t, false>
     42 {
     43 public:
     44     explicit Fwf(const std::string& nm, std::size_t refs = 0)
     45         : std::moneypunct_byname<wchar_t, false>(nm, refs) {}
     46 };
     47 
     48 class Fwt
     49     : public std::moneypunct_byname<wchar_t, true>
     50 {
     51 public:
     52     explicit Fwt(const std::string& nm, std::size_t refs = 0)
     53         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
     54 };
     55 
     56 int main()
     57 {
     58     {
     59         Fnf f("C", 1);
     60         assert(f.curr_symbol() == std::string());
     61     }
     62     {
     63         Fnt f("C", 1);
     64         assert(f.curr_symbol() == std::string());
     65     }
     66     {
     67         Fwf f("C", 1);
     68         assert(f.curr_symbol() == std::wstring());
     69     }
     70     {
     71         Fwt f("C", 1);
     72         assert(f.curr_symbol() == std::wstring());
     73     }
     74 
     75     {
     76         Fnf f(LOCALE_en_US_UTF_8, 1);
     77         assert(f.curr_symbol() == "$");
     78     }
     79     {
     80         Fnt f(LOCALE_en_US_UTF_8, 1);
     81         assert(f.curr_symbol() == "USD ");
     82     }
     83     {
     84         Fwf f(LOCALE_en_US_UTF_8, 1);
     85         assert(f.curr_symbol() == L"$");
     86     }
     87     {
     88         Fwt f(LOCALE_en_US_UTF_8, 1);
     89         assert(f.curr_symbol() == L"USD ");
     90     }
     91 
     92     {
     93         Fnf f(LOCALE_fr_FR_UTF_8, 1);
     94         assert(f.curr_symbol() == " \u20ac");
     95     }
     96     {
     97         Fnt f(LOCALE_fr_FR_UTF_8, 1);
     98         assert(f.curr_symbol() == " EUR");
     99     }
    100     {
    101         Fwf f(LOCALE_fr_FR_UTF_8, 1);
    102         assert(f.curr_symbol() == L" \u20ac");
    103     }
    104     {
    105         Fwt f(LOCALE_fr_FR_UTF_8, 1);
    106         assert(f.curr_symbol() == L" EUR");
    107     }
    108 
    109     {
    110         Fnf f(LOCALE_ru_RU_UTF_8, 1);
    111         assert(f.curr_symbol() == " \xD1\x80\xD1\x83\xD0\xB1");
    112     }
    113     {
    114         Fnt f(LOCALE_ru_RU_UTF_8, 1);
    115         assert(f.curr_symbol() == " RUB");
    116     }
    117     {
    118         Fwf f(LOCALE_ru_RU_UTF_8, 1);
    119         assert(f.curr_symbol() == L" \x440\x443\x431");
    120     }
    121     {
    122         Fwt f(LOCALE_ru_RU_UTF_8, 1);
    123         assert(f.curr_symbol() == L" RUB");
    124     }
    125 
    126     {
    127         Fnf f(LOCALE_zh_CN_UTF_8, 1);
    128         assert(f.curr_symbol() == "\xEF\xBF\xA5");
    129     }
    130     {
    131         Fnt f(LOCALE_zh_CN_UTF_8, 1);
    132         assert(f.curr_symbol() == "CNY ");
    133     }
    134     {
    135         Fwf f(LOCALE_zh_CN_UTF_8, 1);
    136         assert(f.curr_symbol() == L"\xFFE5");
    137     }
    138     {
    139         Fwt f(LOCALE_zh_CN_UTF_8, 1);
    140         assert(f.curr_symbol() == L"CNY ");
    141     }
    142 }
    143