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 pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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.pos_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