curr_symbol.pass.cpp revision e2f2a15066552758a508e8a7325e0ccad4a5389b
1a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//===----------------------------------------------------------------------===//
2a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//
3a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//                     The LLVM Compiler Infrastructure
4a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//
5a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// This file is dual licensed under the MIT and the University of Illinois Open
6a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// Source Licenses. See LICENSE.TXT for details.
7a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//
8a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//===----------------------------------------------------------------------===//
9a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard
10a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// <locale>
11a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard
12a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// class moneypunct_byname<charT, International>
13a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard
14a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// string_type curr_symbol() const;
15a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard
16a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include <locale>
17a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include <limits>
18a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include <cassert>
19a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard
20a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass Fnf
21ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard    : public std::moneypunct_byname<char, false>
22ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard{
23a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardpublic:
24a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard    explicit Fnf(const std::string& nm, std::size_t refs = 0)
25a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard        : std::moneypunct_byname<char, false>(nm, refs) {}
26a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard};
27a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard
28a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass Fnt
29ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard    : public std::moneypunct_byname<char, true>
30ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard{
31ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellardpublic:
32ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard    explicit Fnt(const std::string& nm, std::size_t refs = 0)
33ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard        : std::moneypunct_byname<char, true>(nm, refs) {}
34ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard};
35ddb4dac13341d5b33b9e129ecb0e2abec30a27b6Tom Stellard
36a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass Fwf
37a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard    : public std::moneypunct_byname<wchar_t, false>
38a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard{
3971b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellardpublic:
4065917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard    explicit Fwf(const std::string& nm, std::size_t refs = 0)
41a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard        : std::moneypunct_byname<wchar_t, false>(nm, refs) {}
4271b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard};
4365917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard
44a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardclass Fwt
4571b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard    : public std::moneypunct_byname<wchar_t, true>
4665917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard{
47a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardpublic:
4871b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard    explicit Fwt(const std::string& nm, std::size_t refs = 0)
4965917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard        : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
50a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard};
5171b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard
5265917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellardint main()
53a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard{
5471b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard    {
5565917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard        Fnf f("C", 1);
56a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard        assert(f.curr_symbol() == std::string());
5771b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard    }
5865917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard    {
59a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard        Fnt f("C", 1);
6071b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard        assert(f.curr_symbol() == std::string());
6165917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard    }
62a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard    {
6371b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard        Fwf f("C", 1);
6465917004d99ccb79f709e621f8f6cf66715ffdcaTom Stellard        assert(f.curr_symbol() == std::wstring());
65a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard    }
6671b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard    {
67235318a578b3d7772a60590c7e76791ed6d1a78eTom Stellard        Fwt f("C", 1);
68235318a578b3d7772a60590c7e76791ed6d1a78eTom Stellard        assert(f.curr_symbol() == std::wstring());
6971b5503164deee189df5ac4e2b8d2fcd09a8ec55Tom Stellard    }
70cd287301ec598d2811f3f85c03d23bae01be2359Tom Stellard
71cd287301ec598d2811f3f85c03d23bae01be2359Tom Stellard    {
72a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard        Fnf f("en_US.UTF-8", 1);
73a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard        assert(f.curr_symbol() == "$");
74f6ad8b45c2731075d91f43e92862847f2c26e95aTom Stellard    }
75    {
76        Fnt f("en_US.UTF-8", 1);
77        assert(f.curr_symbol() == "USD ");
78    }
79    {
80        Fwf f("en_US.UTF-8", 1);
81        assert(f.curr_symbol() == L"$");
82    }
83    {
84        Fwt f("en_US.UTF-8", 1);
85        assert(f.curr_symbol() == L"USD ");
86    }
87
88    {
89        Fnf f("fr_FR.UTF-8", 1);
90        assert(f.curr_symbol() == "Eu");
91    }
92    {
93        Fnt f("fr_FR.UTF-8", 1);
94        assert(f.curr_symbol() == "EUR ");
95    }
96    {
97        Fwf f("fr_FR.UTF-8", 1);
98        assert(f.curr_symbol() == L"Eu");
99    }
100    {
101        Fwt f("fr_FR.UTF-8", 1);
102        assert(f.curr_symbol() == L"EUR ");
103    }
104
105    {
106        Fnf f("ru_RU.UTF-8", 1);
107        assert(f.curr_symbol() == "\xD1\x80\xD1\x83\xD0\xB1"".");
108    }
109    {
110        Fnt f("ru_RU.UTF-8", 1);
111        assert(f.curr_symbol() == "RUB ");
112    }
113    {
114        Fwf f("ru_RU.UTF-8", 1);
115        assert(f.curr_symbol() == L"\x440\x443\x431"".");
116    }
117    {
118        Fwt f("ru_RU.UTF-8", 1);
119        assert(f.curr_symbol() == L"RUB ");
120    }
121
122    {
123        Fnf f("zh_CN.UTF-8", 1);
124        assert(f.curr_symbol() == "\xEF\xBF\xA5");
125    }
126    {
127        Fnt f("zh_CN.UTF-8", 1);
128        assert(f.curr_symbol() == "CNY ");
129    }
130    {
131        Fwf f("zh_CN.UTF-8", 1);
132        assert(f.curr_symbol() == L"\xFFE5");
133    }
134    {
135        Fwt f("zh_CN.UTF-8", 1);
136        assert(f.curr_symbol() == L"CNY ");
137    }
138}
139