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