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