pos_format.pass.cpp revision 83e2c4d877fe2d7793868b1c6a5d9525a7c4d431
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// <locale> 11 12// class moneypunct_byname<charT, International> 13 14// pattern pos_format() const; 15 16#include <locale> 17#include <limits> 18#include <cassert> 19 20#include "platform_support.h" // locale name macros 21 22class Fnf 23 : public std::moneypunct_byname<char, false> 24{ 25public: 26 explicit Fnf(const std::string& nm, std::size_t refs = 0) 27 : std::moneypunct_byname<char, false>(nm, refs) {} 28}; 29 30class Fnt 31 : public std::moneypunct_byname<char, true> 32{ 33public: 34 explicit Fnt(const std::string& nm, std::size_t refs = 0) 35 : std::moneypunct_byname<char, true>(nm, refs) {} 36}; 37 38class Fwf 39 : public std::moneypunct_byname<wchar_t, false> 40{ 41public: 42 explicit Fwf(const std::string& nm, std::size_t refs = 0) 43 : std::moneypunct_byname<wchar_t, false>(nm, refs) {} 44}; 45 46class Fwt 47 : public std::moneypunct_byname<wchar_t, true> 48{ 49public: 50 explicit Fwt(const std::string& nm, std::size_t refs = 0) 51 : std::moneypunct_byname<wchar_t, true>(nm, refs) {} 52}; 53 54int main() 55{ 56 { 57 Fnf f("C", 1); 58 std::money_base::pattern p = f.pos_format(); 59 assert(p.field[0] == std::money_base::symbol); 60 assert(p.field[1] == std::money_base::sign); 61 assert(p.field[2] == std::money_base::none); 62 assert(p.field[3] == std::money_base::value); 63 } 64 { 65 Fnt f("C", 1); 66 std::money_base::pattern p = f.pos_format(); 67 assert(p.field[0] == std::money_base::symbol); 68 assert(p.field[1] == std::money_base::sign); 69 assert(p.field[2] == std::money_base::none); 70 assert(p.field[3] == std::money_base::value); 71 } 72 { 73 Fwf f("C", 1); 74 std::money_base::pattern p = f.pos_format(); 75 assert(p.field[0] == std::money_base::symbol); 76 assert(p.field[1] == std::money_base::sign); 77 assert(p.field[2] == std::money_base::none); 78 assert(p.field[3] == std::money_base::value); 79 } 80 { 81 Fwt f("C", 1); 82 std::money_base::pattern p = f.pos_format(); 83 assert(p.field[0] == std::money_base::symbol); 84 assert(p.field[1] == std::money_base::sign); 85 assert(p.field[2] == std::money_base::none); 86 assert(p.field[3] == std::money_base::value); 87 } 88 89 { 90 Fnf f(LOCALE_en_US_UTF_8, 1); 91 std::money_base::pattern p = f.pos_format(); 92 assert(p.field[0] == std::money_base::sign); 93 assert(p.field[1] == std::money_base::symbol); 94 assert(p.field[2] == std::money_base::none); 95 assert(p.field[3] == std::money_base::value); 96 } 97 { 98 Fnt f(LOCALE_en_US_UTF_8, 1); 99 std::money_base::pattern p = f.pos_format(); 100 assert(p.field[0] == std::money_base::sign); 101 assert(p.field[1] == std::money_base::symbol); 102 assert(p.field[2] == std::money_base::none); 103 assert(p.field[3] == std::money_base::value); 104 } 105 { 106 Fwf f(LOCALE_en_US_UTF_8, 1); 107 std::money_base::pattern p = f.pos_format(); 108 assert(p.field[0] == std::money_base::sign); 109 assert(p.field[1] == std::money_base::symbol); 110 assert(p.field[2] == std::money_base::none); 111 assert(p.field[3] == std::money_base::value); 112 } 113 { 114 Fwt f(LOCALE_en_US_UTF_8, 1); 115 std::money_base::pattern p = f.pos_format(); 116 assert(p.field[0] == std::money_base::sign); 117 assert(p.field[1] == std::money_base::symbol); 118 assert(p.field[2] == std::money_base::none); 119 assert(p.field[3] == std::money_base::value); 120 } 121 122 { 123 Fnf f(LOCALE_fr_FR_UTF_8, 1); 124 std::money_base::pattern p = f.pos_format(); 125 assert(p.field[0] == std::money_base::sign); 126 assert(p.field[1] == std::money_base::value); 127 assert(p.field[2] == std::money_base::none); 128 assert(p.field[3] == std::money_base::symbol); 129 } 130 { 131 Fnt f(LOCALE_fr_FR_UTF_8, 1); 132 std::money_base::pattern p = f.pos_format(); 133 assert(p.field[0] == std::money_base::sign); 134 assert(p.field[1] == std::money_base::value); 135 assert(p.field[2] == std::money_base::none); 136 assert(p.field[3] == std::money_base::symbol); 137 } 138 { 139 Fwf f(LOCALE_fr_FR_UTF_8, 1); 140 std::money_base::pattern p = f.pos_format(); 141 assert(p.field[0] == std::money_base::sign); 142 assert(p.field[1] == std::money_base::value); 143 assert(p.field[2] == std::money_base::none); 144 assert(p.field[3] == std::money_base::symbol); 145 } 146 { 147 Fwt f(LOCALE_fr_FR_UTF_8, 1); 148 std::money_base::pattern p = f.pos_format(); 149 assert(p.field[0] == std::money_base::sign); 150 assert(p.field[1] == std::money_base::value); 151 assert(p.field[2] == std::money_base::none); 152 assert(p.field[3] == std::money_base::symbol); 153 } 154 155 { 156 Fnf f(LOCALE_ru_RU_UTF_8, 1); 157 std::money_base::pattern p = f.pos_format(); 158 assert(p.field[0] == std::money_base::sign); 159 assert(p.field[1] == std::money_base::value); 160 assert(p.field[2] == std::money_base::none); 161 assert(p.field[3] == std::money_base::symbol); 162 } 163 { 164 Fnt f(LOCALE_ru_RU_UTF_8, 1); 165 std::money_base::pattern p = f.pos_format(); 166 assert(p.field[0] == std::money_base::sign); 167 assert(p.field[1] == std::money_base::value); 168 assert(p.field[2] == std::money_base::none); 169 assert(p.field[3] == std::money_base::symbol); 170 } 171 { 172 Fwf f(LOCALE_ru_RU_UTF_8, 1); 173 std::money_base::pattern p = f.pos_format(); 174 assert(p.field[0] == std::money_base::sign); 175 assert(p.field[1] == std::money_base::value); 176 assert(p.field[2] == std::money_base::none); 177 assert(p.field[3] == std::money_base::symbol); 178 } 179 { 180 Fwt f(LOCALE_ru_RU_UTF_8, 1); 181 std::money_base::pattern p = f.pos_format(); 182 assert(p.field[0] == std::money_base::sign); 183 assert(p.field[1] == std::money_base::value); 184 assert(p.field[2] == std::money_base::none); 185 assert(p.field[3] == std::money_base::symbol); 186 } 187 188 { 189 Fnf f(LOCALE_zh_CN_UTF_8, 1); 190 std::money_base::pattern p = f.pos_format(); 191 assert(p.field[0] == std::money_base::symbol); 192 assert(p.field[1] == std::money_base::sign); 193 assert(p.field[2] == std::money_base::none); 194 assert(p.field[3] == std::money_base::value); 195 } 196 { 197 Fnt f(LOCALE_zh_CN_UTF_8, 1); 198 std::money_base::pattern p = f.pos_format(); 199 assert(p.field[0] == std::money_base::sign); 200 assert(p.field[1] == std::money_base::symbol); 201 assert(p.field[2] == std::money_base::none); 202 assert(p.field[3] == std::money_base::value); 203 } 204 { 205 Fwf f(LOCALE_zh_CN_UTF_8, 1); 206 std::money_base::pattern p = f.pos_format(); 207 assert(p.field[0] == std::money_base::symbol); 208 assert(p.field[1] == std::money_base::sign); 209 assert(p.field[2] == std::money_base::none); 210 assert(p.field[3] == std::money_base::value); 211 } 212 { 213 Fwt f(LOCALE_zh_CN_UTF_8, 1); 214 std::money_base::pattern p = f.pos_format(); 215 assert(p.field[0] == std::money_base::sign); 216 assert(p.field[1] == std::money_base::symbol); 217 assert(p.field[2] == std::money_base::none); 218 assert(p.field[3] == std::money_base::value); 219 } 220} 221