grouping.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// string grouping() 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 // Monetary grouping strings may be terminated with 0 or CHAR_MAX, defining 55 // how the grouping is repeated. 56 std::string s = std::string(1, CHAR_MAX); 57 { 58 Fnf f("C", 1); 59 assert(f.grouping() == s || f.grouping() == ""); 60 } 61 { 62 Fnt f("C", 1); 63 assert(f.grouping() == s || f.grouping() == ""); 64 } 65 { 66 Fwf f("C", 1); 67 assert(f.grouping() == s || f.grouping() == ""); 68 } 69 { 70 Fwt f("C", 1); 71 assert(f.grouping() == s || f.grouping() == ""); 72 } 73 74 { 75 Fnf f("en_US.UTF-8", 1); 76 assert(f.grouping() == "\3\3"); 77 } 78 { 79 Fnt f("en_US.UTF-8", 1); 80 assert(f.grouping() == "\3\3"); 81 } 82 { 83 Fwf f("en_US.UTF-8", 1); 84 assert(f.grouping() == "\3\3"); 85 } 86 { 87 Fwt f("en_US.UTF-8", 1); 88 assert(f.grouping() == "\3\3"); 89 } 90 91 { 92 Fnf f("fr_FR.UTF-8", 1); 93 assert(f.grouping() == "\3\3"); 94 } 95 { 96 Fnt f("fr_FR.UTF-8", 1); 97 assert(f.grouping() == "\3\3"); 98 } 99 { 100 Fwf f("fr_FR.UTF-8", 1); 101 assert(f.grouping() == "\3\3"); 102 } 103 { 104 Fwt f("fr_FR.UTF-8", 1); 105 assert(f.grouping() == "\3\3"); 106 } 107 108 { 109 Fnf f("ru_RU.UTF-8", 1); 110 assert(f.grouping() == "\3\3"); 111 } 112 { 113 Fnt f("ru_RU.UTF-8", 1); 114 assert(f.grouping() == "\3\3"); 115 } 116 { 117 Fwf f("ru_RU.UTF-8", 1); 118 assert(f.grouping() == "\3\3"); 119 } 120 { 121 Fwt f("ru_RU.UTF-8", 1); 122 assert(f.grouping() == "\3\3"); 123 } 124 125 { 126 Fnf f("zh_CN.UTF-8", 1); 127 assert(f.grouping() == "\3\3"); 128 } 129 { 130 Fnt f("zh_CN.UTF-8", 1); 131 assert(f.grouping() == "\3\3"); 132 } 133 { 134 Fwf f("zh_CN.UTF-8", 1); 135 assert(f.grouping() == "\3\3"); 136 } 137 { 138 Fwt f("zh_CN.UTF-8", 1); 139 assert(f.grouping() == "\3\3"); 140 } 141} 142