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 // <locale>
     11 
     12 // class moneypunct_byname<charT, International>
     13 
     14 // pattern neg_format() const;
     15 
     16 #include <locale>
     17 #include <limits>
     18 #include <cassert>
     19 
     20 #include "platform_support.h" // locale name macros
     21 
     22 class Fnf
     23     : public std::moneypunct_byname<char, false>
     24 {
     25 public:
     26     explicit Fnf(const std::string& nm, std::size_t refs = 0)
     27         : std::moneypunct_byname<char, false>(nm, refs) {}
     28 };
     29 
     30 class Fnt
     31     : public std::moneypunct_byname<char, true>
     32 {
     33 public:
     34     explicit Fnt(const std::string& nm, std::size_t refs = 0)
     35         : std::moneypunct_byname<char, true>(nm, refs) {}
     36 };
     37 
     38 class Fwf
     39     : public std::moneypunct_byname<wchar_t, false>
     40 {
     41 public:
     42     explicit Fwf(const std::string& nm, std::size_t refs = 0)
     43         : std::moneypunct_byname<wchar_t, false>(nm, refs) {}
     44 };
     45 
     46 class Fwt
     47     : public std::moneypunct_byname<wchar_t, true>
     48 {
     49 public:
     50     explicit Fwt(const std::string& nm, std::size_t refs = 0)
     51         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
     52 };
     53 
     54 int main()
     55 {
     56     {
     57         Fnf f("C", 1);
     58         std::money_base::pattern p = f.neg_format();
     59         assert(p.field[0] == std::money_base::symbol);
     60         assert(p.field[1] == std::money_base::sign);
     61         assert(p.field[2] == std::money_base::none);
     62         assert(p.field[3] == std::money_base::value);
     63     }
     64     {
     65         Fnt f("C", 1);
     66         std::money_base::pattern p = f.neg_format();
     67         assert(p.field[0] == std::money_base::symbol);
     68         assert(p.field[1] == std::money_base::sign);
     69         assert(p.field[2] == std::money_base::none);
     70         assert(p.field[3] == std::money_base::value);
     71     }
     72     {
     73         Fwf f("C", 1);
     74         std::money_base::pattern p = f.neg_format();
     75         assert(p.field[0] == std::money_base::symbol);
     76         assert(p.field[1] == std::money_base::sign);
     77         assert(p.field[2] == std::money_base::none);
     78         assert(p.field[3] == std::money_base::value);
     79     }
     80     {
     81         Fwt f("C", 1);
     82         std::money_base::pattern p = f.neg_format();
     83         assert(p.field[0] == std::money_base::symbol);
     84         assert(p.field[1] == std::money_base::sign);
     85         assert(p.field[2] == std::money_base::none);
     86         assert(p.field[3] == std::money_base::value);
     87     }
     88 
     89     {
     90         Fnf f(LOCALE_en_US_UTF_8, 1);
     91         std::money_base::pattern p = f.neg_format();
     92         assert(p.field[0] == std::money_base::sign);
     93         assert(p.field[1] == std::money_base::symbol);
     94         assert(p.field[2] == std::money_base::none);
     95         assert(p.field[3] == std::money_base::value);
     96     }
     97     {
     98         Fnt f(LOCALE_en_US_UTF_8, 1);
     99         std::money_base::pattern p = f.neg_format();
    100         assert(p.field[0] == std::money_base::sign);
    101         assert(p.field[1] == std::money_base::symbol);
    102         assert(p.field[2] == std::money_base::none);
    103         assert(p.field[3] == std::money_base::value);
    104     }
    105     {
    106         Fwf f(LOCALE_en_US_UTF_8, 1);
    107         std::money_base::pattern p = f.neg_format();
    108         assert(p.field[0] == std::money_base::sign);
    109         assert(p.field[1] == std::money_base::symbol);
    110         assert(p.field[2] == std::money_base::none);
    111         assert(p.field[3] == std::money_base::value);
    112     }
    113     {
    114         Fwt f(LOCALE_en_US_UTF_8, 1);
    115         std::money_base::pattern p = f.neg_format();
    116         assert(p.field[0] == std::money_base::sign);
    117         assert(p.field[1] == std::money_base::symbol);
    118         assert(p.field[2] == std::money_base::none);
    119         assert(p.field[3] == std::money_base::value);
    120     }
    121 
    122     {
    123         Fnf f(LOCALE_fr_FR_UTF_8, 1);
    124         std::money_base::pattern p = f.neg_format();
    125         assert(p.field[0] == std::money_base::sign);
    126         assert(p.field[1] == std::money_base::value);
    127         assert(p.field[2] == std::money_base::none);
    128         assert(p.field[3] == std::money_base::symbol);
    129     }
    130     {
    131         Fnt f(LOCALE_fr_FR_UTF_8, 1);
    132         std::money_base::pattern p = f.neg_format();
    133         assert(p.field[0] == std::money_base::sign);
    134         assert(p.field[1] == std::money_base::value);
    135         assert(p.field[2] == std::money_base::none);
    136         assert(p.field[3] == std::money_base::symbol);
    137     }
    138     {
    139         Fwf f(LOCALE_fr_FR_UTF_8, 1);
    140         std::money_base::pattern p = f.neg_format();
    141         assert(p.field[0] == std::money_base::sign);
    142         assert(p.field[1] == std::money_base::value);
    143         assert(p.field[2] == std::money_base::none);
    144         assert(p.field[3] == std::money_base::symbol);
    145     }
    146     {
    147         Fwt f(LOCALE_fr_FR_UTF_8, 1);
    148         std::money_base::pattern p = f.neg_format();
    149         assert(p.field[0] == std::money_base::sign);
    150         assert(p.field[1] == std::money_base::value);
    151         assert(p.field[2] == std::money_base::none);
    152         assert(p.field[3] == std::money_base::symbol);
    153     }
    154 
    155     {
    156         Fnf f(LOCALE_ru_RU_UTF_8, 1);
    157         std::money_base::pattern p = f.neg_format();
    158         assert(p.field[0] == std::money_base::sign);
    159         assert(p.field[1] == std::money_base::value);
    160         assert(p.field[2] == std::money_base::none);
    161         assert(p.field[3] == std::money_base::symbol);
    162     }
    163     {
    164         Fnt f(LOCALE_ru_RU_UTF_8, 1);
    165         std::money_base::pattern p = f.neg_format();
    166         assert(p.field[0] == std::money_base::sign);
    167         assert(p.field[1] == std::money_base::value);
    168         assert(p.field[2] == std::money_base::none);
    169         assert(p.field[3] == std::money_base::symbol);
    170     }
    171     {
    172         Fwf f(LOCALE_ru_RU_UTF_8, 1);
    173         std::money_base::pattern p = f.neg_format();
    174         assert(p.field[0] == std::money_base::sign);
    175         assert(p.field[1] == std::money_base::value);
    176         assert(p.field[2] == std::money_base::none);
    177         assert(p.field[3] == std::money_base::symbol);
    178     }
    179     {
    180         Fwt f(LOCALE_ru_RU_UTF_8, 1);
    181         std::money_base::pattern p = f.neg_format();
    182         assert(p.field[0] == std::money_base::sign);
    183         assert(p.field[1] == std::money_base::value);
    184         assert(p.field[2] == std::money_base::none);
    185         assert(p.field[3] == std::money_base::symbol);
    186     }
    187 
    188     {
    189         Fnf f(LOCALE_zh_CN_UTF_8, 1);
    190         std::money_base::pattern p = f.neg_format();
    191         assert(p.field[0] == std::money_base::symbol);
    192         assert(p.field[1] == std::money_base::sign);
    193         assert(p.field[2] == std::money_base::none);
    194         assert(p.field[3] == std::money_base::value);
    195     }
    196     {
    197         Fnt f(LOCALE_zh_CN_UTF_8, 1);
    198         std::money_base::pattern p = f.neg_format();
    199         assert(p.field[0] == std::money_base::sign);
    200         assert(p.field[1] == std::money_base::symbol);
    201         assert(p.field[2] == std::money_base::none);
    202         assert(p.field[3] == std::money_base::value);
    203     }
    204     {
    205         Fwf f(LOCALE_zh_CN_UTF_8, 1);
    206         std::money_base::pattern p = f.neg_format();
    207         assert(p.field[0] == std::money_base::symbol);
    208         assert(p.field[1] == std::money_base::sign);
    209         assert(p.field[2] == std::money_base::none);
    210         assert(p.field[3] == std::money_base::value);
    211     }
    212     {
    213         Fwt f(LOCALE_zh_CN_UTF_8, 1);
    214         std::money_base::pattern p = f.neg_format();
    215         assert(p.field[0] == std::money_base::sign);
    216         assert(p.field[1] == std::money_base::symbol);
    217         assert(p.field[2] == std::money_base::none);
    218         assert(p.field[3] == std::money_base::value);
    219     }
    220 }
    221