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