Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / libc++ / trunk / test / localization / locale.categories / category.monetary / locale.moneypunct.byname / decimal_point.pass.cpp
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 // REQUIRES: locale.en_US.UTF-8
11 // REQUIRES: locale.fr_FR.UTF-8
12 // REQUIRES: locale.ru_RU.UTF-8
13 // REQUIRES: locale.zh_CN.UTF-8
14
15 // Russia uses ',' for the decimal separator. GLIBC returns '.'
16 // XFAIL: linux
17
18 // <locale>
19
20 // class moneypunct_byname<charT, International>
21
22 // charT decimal_point() const;
23
24 #include <locale>
25 #include <limits>
26 #include <cassert>
27
28 #include "platform_support.h" // locale name macros
29
30 class Fnf
31     : public std::moneypunct_byname<char, false>
32 {
33 public:
34     explicit Fnf(const std::string& nm, std::size_t refs = 0)
35         : std::moneypunct_byname<char, false>(nm, refs) {}
36 };
37
38 class Fnt
39     : public std::moneypunct_byname<char, true>
40 {
41 public:
42     explicit Fnt(const std::string& nm, std::size_t refs = 0)
43         : std::moneypunct_byname<char, true>(nm, refs) {}
44 };
45
46 class Fwf
47     : public std::moneypunct_byname<wchar_t, false>
48 {
49 public:
50     explicit Fwf(const std::string& nm, std::size_t refs = 0)
51         : std::moneypunct_byname<wchar_t, false>(nm, refs) {}
52 };
53
54 class Fwt
55     : public std::moneypunct_byname<wchar_t, true>
56 {
57 public:
58     explicit Fwt(const std::string& nm, std::size_t refs = 0)
59         : std::moneypunct_byname<wchar_t, true>(nm, refs) {}
60 };
61
62 int main()
63 {
64     {
65         Fnf f("C", 1);
66         assert(f.decimal_point() == std::numeric_limits<char>::max());
67     }
68     {
69         Fnt f("C", 1);
70         assert(f.decimal_point() == std::numeric_limits<char>::max());
71     }
72     {
73         Fwf f("C", 1);
74         assert(f.decimal_point() == std::numeric_limits<wchar_t>::max());
75     }
76     {
77         Fwt f("C", 1);
78         assert(f.decimal_point() == std::numeric_limits<wchar_t>::max());
79     }
80
81     {
82         Fnf f(LOCALE_en_US_UTF_8, 1);
83         assert(f.decimal_point() == '.');
84     }
85     {
86         Fnt f(LOCALE_en_US_UTF_8, 1);
87         assert(f.decimal_point() == '.');
88     }
89     {
90         Fwf f(LOCALE_en_US_UTF_8, 1);
91         assert(f.decimal_point() == L'.');
92     }
93     {
94         Fwt f(LOCALE_en_US_UTF_8, 1);
95         assert(f.decimal_point() == L'.');
96     }
97
98     {
99         Fnf f(LOCALE_fr_FR_UTF_8, 1);
100         assert(f.decimal_point() == ',');
101     }
102     {
103         Fnt f(LOCALE_fr_FR_UTF_8, 1);
104         assert(f.decimal_point() == ',');
105     }
106     {
107         Fwf f(LOCALE_fr_FR_UTF_8, 1);
108         assert(f.decimal_point() == L',');
109     }
110     {
111         Fwt f(LOCALE_fr_FR_UTF_8, 1);
112         assert(f.decimal_point() == L',');
113     }
114
115     {
116         Fnf f(LOCALE_ru_RU_UTF_8, 1);
117         assert(f.decimal_point() == ',');
118     }
119     {
120         Fnt f(LOCALE_ru_RU_UTF_8, 1);
121         assert(f.decimal_point() == ',');
122     }
123     {
124         Fwf f(LOCALE_ru_RU_UTF_8, 1);
125         assert(f.decimal_point() == L',');
126     }
127     {
128         Fwt f(LOCALE_ru_RU_UTF_8, 1);
129         assert(f.decimal_point() == L',');
130     }
131
132     {
133         Fnf f(LOCALE_zh_CN_UTF_8, 1);
134         assert(f.decimal_point() == '.');
135     }
136     {
137         Fnt f(LOCALE_zh_CN_UTF_8, 1);
138         assert(f.decimal_point() == '.');
139     }
140     {
141         Fwf f(LOCALE_zh_CN_UTF_8, 1);
142         assert(f.decimal_point() == L'.');
143     }
144     {
145         Fwt f(LOCALE_zh_CN_UTF_8, 1);
146         assert(f.decimal_point() == L'.');
147     }
148 }