1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant//                     The LLVM Compiler Infrastructure
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
943807c2fbad2eb788250dccfc4c61205efb6b7aaDaniel Dunbar//
1043807c2fbad2eb788250dccfc4c61205efb6b7aaDaniel Dunbar// XFAIL: apple-darwin
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <locale>
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// class moneypunct_byname<charT, International>
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// pattern neg_format() const;
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <locale>
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <limits>
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert>
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
2283e2c4d877fe2d7793868b1c6a5d9525a7c4d431Marshall Clow#include "platform_support.h" // locale name macros
23c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass Fnf
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    : public std::moneypunct_byname<char, false>
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic:
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    explicit Fnf(const std::string& nm, std::size_t refs = 0)
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        : std::moneypunct_byname<char, false>(nm, refs) {}
30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant};
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass Fnt
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    : public std::moneypunct_byname<char, true>
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic:
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    explicit Fnt(const std::string& nm, std::size_t refs = 0)
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        : std::moneypunct_byname<char, true>(nm, refs) {}
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant};
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass Fwf
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    : public std::moneypunct_byname<wchar_t, false>
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic:
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    explicit Fwf(const std::string& nm, std::size_t refs = 0)
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        : std::moneypunct_byname<wchar_t, false>(nm, refs) {}
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant};
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass Fwt
49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    : public std::moneypunct_byname<wchar_t, true>
50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic:
52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    explicit Fwt(const std::string& nm, std::size_t refs = 0)
53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant};
55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main()
57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        Fnf f("C", 1);
60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::symbol);
62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::sign);
63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        Fnt f("C", 1);
68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::symbol);
70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::sign);
71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        Fwf f("C", 1);
76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::symbol);
78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::sign);
79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        Fwt f("C", 1);
84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::symbol);
86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::sign);
87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
92c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fnf f(LOCALE_en_US_UTF_8, 1);
93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::sign);
95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::symbol);
96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
100c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fnt f(LOCALE_en_US_UTF_8, 1);
101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::sign);
103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::symbol);
104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
108c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fwf f(LOCALE_en_US_UTF_8, 1);
109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::sign);
111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::symbol);
112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
116c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fwt f(LOCALE_en_US_UTF_8, 1);
117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::sign);
119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::symbol);
120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
125c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fnf f(LOCALE_fr_FR_UTF_8, 1);
126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
127558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[0] == std::money_base::sign);
128558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[1] == std::money_base::value);
129558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[2] == std::money_base::none);
130558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[3] == std::money_base::symbol);
131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
133c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fnt f(LOCALE_fr_FR_UTF_8, 1);
134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
135558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[0] == std::money_base::sign);
136558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[1] == std::money_base::value);
137558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[2] == std::money_base::none);
138558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[3] == std::money_base::symbol);
139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
141c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fwf f(LOCALE_fr_FR_UTF_8, 1);
142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
143558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[0] == std::money_base::sign);
144558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[1] == std::money_base::value);
145558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[2] == std::money_base::none);
146558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[3] == std::money_base::symbol);
147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
149c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fwt f(LOCALE_fr_FR_UTF_8, 1);
150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
151558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[0] == std::money_base::sign);
152558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[1] == std::money_base::value);
153558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[2] == std::money_base::none);
154558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[3] == std::money_base::symbol);
155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
158c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fnf f(LOCALE_ru_RU_UTF_8, 1);
159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::sign);
161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::value);
162558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[2] == std::money_base::none);
163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::symbol);
164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
166c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fnt f(LOCALE_ru_RU_UTF_8, 1);
167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::sign);
169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::value);
170558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[2] == std::money_base::none);
171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::symbol);
172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
174c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fwf f(LOCALE_ru_RU_UTF_8, 1);
175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::sign);
177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::value);
178558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[2] == std::money_base::none);
179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::symbol);
180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
182c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fwt f(LOCALE_ru_RU_UTF_8, 1);
183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::sign);
185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::value);
186558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[2] == std::money_base::none);
187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::symbol);
188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
191c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fnf f(LOCALE_zh_CN_UTF_8, 1);
192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::symbol);
194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::sign);
195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
199c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fnt f(LOCALE_zh_CN_UTF_8, 1);
200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
201558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[0] == std::money_base::sign);
202558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[1] == std::money_base::symbol);
203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
207c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fwf f(LOCALE_zh_CN_UTF_8, 1);
208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[0] == std::money_base::symbol);
210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[1] == std::money_base::sign);
211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    {
215c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant        Fwt f(LOCALE_zh_CN_UTF_8, 1);
216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        std::money_base::pattern p = f.neg_format();
217558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[0] == std::money_base::sign);
218558ae17391455e18d3cc63ead57ba0b8aba49a3fJeffrey Yasskin        assert(p.field[1] == std::money_base::symbol);
219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[2] == std::money_base::none);
220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        assert(p.field[3] == std::money_base::value);
221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    }
222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
223