pos_format.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
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
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.pos_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.pos_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.pos_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.pos_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", 1);
89        std::money_base::pattern p = f.pos_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", 1);
97        std::money_base::pattern p = f.pos_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", 1);
105        std::money_base::pattern p = f.pos_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", 1);
113        std::money_base::pattern p = f.pos_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", 1);
122        std::money_base::pattern p = f.pos_format();
123        assert(p.field[0] == std::money_base::sign);
124        assert(p.field[1] == std::money_base::value);
125        assert(p.field[2] == std::money_base::space);
126        assert(p.field[3] == std::money_base::symbol);
127    }
128    {
129        Fnt f("fr_FR", 1);
130        std::money_base::pattern p = f.pos_format();
131        assert(p.field[0] == std::money_base::sign);
132        assert(p.field[1] == std::money_base::value);
133        assert(p.field[2] == std::money_base::space);
134        assert(p.field[3] == std::money_base::symbol);
135    }
136    {
137        Fwf f("fr_FR", 1);
138        std::money_base::pattern p = f.pos_format();
139        assert(p.field[0] == std::money_base::sign);
140        assert(p.field[1] == std::money_base::value);
141        assert(p.field[2] == std::money_base::space);
142        assert(p.field[3] == std::money_base::symbol);
143    }
144    {
145        Fwt f("fr_FR", 1);
146        std::money_base::pattern p = f.pos_format();
147        assert(p.field[0] == std::money_base::sign);
148        assert(p.field[1] == std::money_base::value);
149        assert(p.field[2] == std::money_base::space);
150        assert(p.field[3] == std::money_base::symbol);
151    }
152
153    {
154        Fnf f("ru_RU", 1);
155        std::money_base::pattern p = f.pos_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", 1);
163        std::money_base::pattern p = f.pos_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", 1);
171        std::money_base::pattern p = f.pos_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", 1);
179        std::money_base::pattern p = f.pos_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", 1);
188        std::money_base::pattern p = f.pos_format();
189        assert(p.field[0] == std::money_base::sign);
190        assert(p.field[1] == std::money_base::symbol);
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", 1);
196        std::money_base::pattern p = f.pos_format();
197        assert(p.field[0] == std::money_base::sign);
198        assert(p.field[1] == std::money_base::symbol);
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", 1);
204        std::money_base::pattern p = f.pos_format();
205        assert(p.field[0] == std::money_base::sign);
206        assert(p.field[1] == std::money_base::symbol);
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", 1);
212        std::money_base::pattern p = f.pos_format();
213        assert(p.field[0] == std::money_base::sign);
214        assert(p.field[1] == std::money_base::symbol);
215        assert(p.field[2] == std::money_base::none);
216        assert(p.field[3] == std::money_base::value);
217    }
218}
219