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 // pattern neg_format() 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         std::money_base::pattern p = f.neg_format();
     61         assert(p.field[0] == std::money_base::symbol);
     62         assert(p.field[1] == std::money_base::sign);
     63         assert(p.field[2] == std::money_base::none);
     64         assert(p.field[3] == std::money_base::value);
     65     }
     66     {
     67         Fnt f("C", 1);
     68         std::money_base::pattern p = f.neg_format();
     69         assert(p.field[0] == std::money_base::symbol);
     70         assert(p.field[1] == std::money_base::sign);
     71         assert(p.field[2] == std::money_base::none);
     72         assert(p.field[3] == std::money_base::value);
     73     }
     74     {
     75         Fwf f("C", 1);
     76         std::money_base::pattern p = f.neg_format();
     77         assert(p.field[0] == std::money_base::symbol);
     78         assert(p.field[1] == std::money_base::sign);
     79         assert(p.field[2] == std::money_base::none);
     80         assert(p.field[3] == std::money_base::value);
     81     }
     82     {
     83         Fwt f("C", 1);
     84         std::money_base::pattern p = f.neg_format();
     85         assert(p.field[0] == std::money_base::symbol);
     86         assert(p.field[1] == std::money_base::sign);
     87         assert(p.field[2] == std::money_base::none);
     88         assert(p.field[3] == std::money_base::value);
     89     }
     90 
     91     {
     92         Fnf f(LOCALE_en_US_UTF_8, 1);
     93         std::money_base::pattern p = f.neg_format();
     94         assert(p.field[0] == std::money_base::sign);
     95         assert(p.field[1] == std::money_base::symbol);
     96         assert(p.field[2] == std::money_base::none);
     97         assert(p.field[3] == std::money_base::value);
     98     }
     99     {
    100         Fnt f(LOCALE_en_US_UTF_8, 1);
    101         std::money_base::pattern p = f.neg_format();
    102         assert(p.field[0] == std::money_base::sign);
    103         assert(p.field[1] == std::money_base::symbol);
    104         assert(p.field[2] == std::money_base::none);
    105         assert(p.field[3] == std::money_base::value);
    106     }
    107     {
    108         Fwf f(LOCALE_en_US_UTF_8, 1);
    109         std::money_base::pattern p = f.neg_format();
    110         assert(p.field[0] == std::money_base::sign);
    111         assert(p.field[1] == std::money_base::symbol);
    112         assert(p.field[2] == std::money_base::none);
    113         assert(p.field[3] == std::money_base::value);
    114     }
    115     {
    116         Fwt f(LOCALE_en_US_UTF_8, 1);
    117         std::money_base::pattern p = f.neg_format();
    118         assert(p.field[0] == std::money_base::sign);
    119         assert(p.field[1] == std::money_base::symbol);
    120         assert(p.field[2] == std::money_base::none);
    121         assert(p.field[3] == std::money_base::value);
    122     }
    123 
    124     {
    125         Fnf f(LOCALE_fr_FR_UTF_8, 1);
    126         std::money_base::pattern p = f.neg_format();
    127         assert(p.field[0] == std::money_base::sign);
    128         assert(p.field[1] == std::money_base::value);
    129         assert(p.field[2] == std::money_base::none);
    130         assert(p.field[3] == std::money_base::symbol);
    131     }
    132     {
    133         Fnt f(LOCALE_fr_FR_UTF_8, 1);
    134         std::money_base::pattern p = f.neg_format();
    135         assert(p.field[0] == std::money_base::sign);
    136         assert(p.field[1] == std::money_base::value);
    137         assert(p.field[2] == std::money_base::none);
    138         assert(p.field[3] == std::money_base::symbol);
    139     }
    140     {
    141         Fwf f(LOCALE_fr_FR_UTF_8, 1);
    142         std::money_base::pattern p = f.neg_format();
    143         assert(p.field[0] == std::money_base::sign);
    144         assert(p.field[1] == std::money_base::value);
    145         assert(p.field[2] == std::money_base::none);
    146         assert(p.field[3] == std::money_base::symbol);
    147     }
    148     {
    149         Fwt f(LOCALE_fr_FR_UTF_8, 1);
    150         std::money_base::pattern p = f.neg_format();
    151         assert(p.field[0] == std::money_base::sign);
    152         assert(p.field[1] == std::money_base::value);
    153         assert(p.field[2] == std::money_base::none);
    154         assert(p.field[3] == std::money_base::symbol);
    155     }
    156 
    157     {
    158         Fnf f(LOCALE_ru_RU_UTF_8, 1);
    159         std::money_base::pattern p = f.neg_format();
    160         assert(p.field[0] == std::money_base::sign);
    161         assert(p.field[1] == std::money_base::value);
    162         assert(p.field[2] == std::money_base::none);
    163         assert(p.field[3] == std::money_base::symbol);
    164     }
    165     {
    166         Fnt f(LOCALE_ru_RU_UTF_8, 1);
    167         std::money_base::pattern p = f.neg_format();
    168         assert(p.field[0] == std::money_base::sign);
    169         assert(p.field[1] == std::money_base::value);
    170         assert(p.field[2] == std::money_base::none);
    171         assert(p.field[3] == std::money_base::symbol);
    172     }
    173     {
    174         Fwf f(LOCALE_ru_RU_UTF_8, 1);
    175         std::money_base::pattern p = f.neg_format();
    176         assert(p.field[0] == std::money_base::sign);
    177         assert(p.field[1] == std::money_base::value);
    178         assert(p.field[2] == std::money_base::none);
    179         assert(p.field[3] == std::money_base::symbol);
    180     }
    181     {
    182         Fwt f(LOCALE_ru_RU_UTF_8, 1);
    183         std::money_base::pattern p = f.neg_format();
    184         assert(p.field[0] == std::money_base::sign);
    185         assert(p.field[1] == std::money_base::value);
    186         assert(p.field[2] == std::money_base::none);
    187         assert(p.field[3] == std::money_base::symbol);
    188     }
    189 
    190     {
    191         Fnf f(LOCALE_zh_CN_UTF_8, 1);
    192         std::money_base::pattern p = f.neg_format();
    193         assert(p.field[0] == std::money_base::symbol);
    194         assert(p.field[1] == std::money_base::sign);
    195         assert(p.field[2] == std::money_base::none);
    196         assert(p.field[3] == std::money_base::value);
    197     }
    198     {
    199         Fnt f(LOCALE_zh_CN_UTF_8, 1);
    200         std::money_base::pattern p = f.neg_format();
    201         assert(p.field[0] == std::money_base::sign);
    202         assert(p.field[1] == std::money_base::symbol);
    203         assert(p.field[2] == std::money_base::none);
    204         assert(p.field[3] == std::money_base::value);
    205     }
    206     {
    207         Fwf f(LOCALE_zh_CN_UTF_8, 1);
    208         std::money_base::pattern p = f.neg_format();
    209         assert(p.field[0] == std::money_base::symbol);
    210         assert(p.field[1] == std::money_base::sign);
    211         assert(p.field[2] == std::money_base::none);
    212         assert(p.field[3] == std::money_base::value);
    213     }
    214     {
    215         Fwt f(LOCALE_zh_CN_UTF_8, 1);
    216         std::money_base::pattern p = f.neg_format();
    217         assert(p.field[0] == std::money_base::sign);
    218         assert(p.field[1] == std::money_base::symbol);
    219         assert(p.field[2] == std::money_base::none);
    220         assert(p.field[3] == std::money_base::value);
    221     }
    222 }
    223