curr_symbol.pass.cpp revision e2f2a15066552758a508e8a7325e0ccad4a5389b
1a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//===----------------------------------------------------------------------===// 2a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 3a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// The LLVM Compiler Infrastructure 4a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 5a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// This file is dual licensed under the MIT and the University of Illinois Open 6a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// Source Licenses. See LICENSE.TXT for details. 7a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 8a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//===----------------------------------------------------------------------===// 9a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 10a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// <locale> 11a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 12a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// class moneypunct_byname<charT, International> 13a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 14a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// string_type curr_symbol() const; 15a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 16a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include <locale> 17a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include <limits> 18a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include <cassert> 19a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 20a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass Fnf 21ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard : public std::moneypunct_byname<char, false> 22ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard{ 23a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardpublic: 24a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard explicit Fnf(const std::string& nm, std::size_t refs = 0) 25a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard : std::moneypunct_byname<char, false>(nm, refs) {} 26a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard}; 27a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 28a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass Fnt 29ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard : public std::moneypunct_byname<char, true> 30ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard{ 31ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellardpublic: 32ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard explicit Fnt(const std::string& nm, std::size_t refs = 0) 33ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard : std::moneypunct_byname<char, true>(nm, refs) {} 34ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard}; 35ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard 36a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass Fwf 37a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard : public std::moneypunct_byname<wchar_t, false> 38a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard{ 3971b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellardpublic: 4065917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard explicit Fwf(const std::string& nm, std::size_t refs = 0) 41a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard : std::moneypunct_byname<wchar_t, false>(nm, refs) {} 4271b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard}; 4365917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard 44a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass Fwt 4571b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard : public std::moneypunct_byname<wchar_t, true> 4665917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard{ 47a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardpublic: 4871b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard explicit Fwt(const std::string& nm, std::size_t refs = 0) 4965917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard : std::moneypunct_byname<wchar_t, true>(nm, refs) {} 50a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard}; 5171b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard 5265917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellardint main() 53a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard{ 5471b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard { 5565917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard Fnf f("C", 1); 56a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard assert(f.curr_symbol() == std::string()); 5771b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard } 5865917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard { 59a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard Fnt f("C", 1); 6071b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard assert(f.curr_symbol() == std::string()); 6165917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard } 62a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard { 6371b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard Fwf f("C", 1); 6465917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard assert(f.curr_symbol() == std::wstring()); 65a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard } 6671b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard { 67235318a578b3d7772a60590c7e76791ed6d1a78eTom Stellard Fwt f("C", 1); 68235318a578b3d7772a60590c7e76791ed6d1a78eTom Stellard assert(f.curr_symbol() == std::wstring()); 6971b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard } 70cd287301ec598d2811f3f85c03d23bae01be2359Tom Stellard 71cd287301ec598d2811f3f85c03d23bae01be2359Tom Stellard { 72a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard Fnf f("en_US.UTF-8", 1); 73a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard assert(f.curr_symbol() == "$"); 74f6ad8b45c2731075d91f43e92862847f2c26e95aTom Stellard } 75 { 76 Fnt f("en_US.UTF-8", 1); 77 assert(f.curr_symbol() == "USD "); 78 } 79 { 80 Fwf f("en_US.UTF-8", 1); 81 assert(f.curr_symbol() == L"$"); 82 } 83 { 84 Fwt f("en_US.UTF-8", 1); 85 assert(f.curr_symbol() == L"USD "); 86 } 87 88 { 89 Fnf f("fr_FR.UTF-8", 1); 90 assert(f.curr_symbol() == "Eu"); 91 } 92 { 93 Fnt f("fr_FR.UTF-8", 1); 94 assert(f.curr_symbol() == "EUR "); 95 } 96 { 97 Fwf f("fr_FR.UTF-8", 1); 98 assert(f.curr_symbol() == L"Eu"); 99 } 100 { 101 Fwt f("fr_FR.UTF-8", 1); 102 assert(f.curr_symbol() == L"EUR "); 103 } 104 105 { 106 Fnf f("ru_RU.UTF-8", 1); 107 assert(f.curr_symbol() == "\xD1\x80\xD1\x83\xD0\xB1""."); 108 } 109 { 110 Fnt f("ru_RU.UTF-8", 1); 111 assert(f.curr_symbol() == "RUB "); 112 } 113 { 114 Fwf f("ru_RU.UTF-8", 1); 115 assert(f.curr_symbol() == L"\x440\x443\x431""."); 116 } 117 { 118 Fwt f("ru_RU.UTF-8", 1); 119 assert(f.curr_symbol() == L"RUB "); 120 } 121 122 { 123 Fnf f("zh_CN.UTF-8", 1); 124 assert(f.curr_symbol() == "\xEF\xBF\xA5"); 125 } 126 { 127 Fnt f("zh_CN.UTF-8", 1); 128 assert(f.curr_symbol() == "CNY "); 129 } 130 { 131 Fwf f("zh_CN.UTF-8", 1); 132 assert(f.curr_symbol() == L"\xFFE5"); 133 } 134 { 135 Fwt f("zh_CN.UTF-8", 1); 136 assert(f.curr_symbol() == L"CNY "); 137 } 138} 139