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