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