OSDN Git Service

2005-08-17 Kelley Cook <kcook@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / 22_locale / moneypunct / members / wchar_t / 1.cc
1 // 2001-08-23 Benjamin Kosnik  <bkoz@redhat.com>
2
3 // Copyright (C) 2001, 2002, 2003 Free Software Foundation
4 //
5 // This file is part of the GNU ISO C++ Library.  This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 2, or (at your option)
9 // any later version.
10
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 // GNU General Public License for more details.
15
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING.  If not, write to the Free
18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
19 // USA.
20
21 // 22.2.6.3.1 moneypunct members
22
23 #include <locale>
24 #include <string>
25 #include <testsuite_hooks.h>
26
27 void test01()
28 {
29   using namespace std;
30   typedef money_base::part part;
31   typedef money_base::pattern pattern;
32
33   bool test __attribute__((unused)) = true;
34
35   // basic construction
36   locale loc_c = locale::classic();
37
38   // cache the moneypunct facets
39   typedef moneypunct<wchar_t, true> __money_true;
40   typedef moneypunct<wchar_t, false> __money_false;
41   const __money_true& monp_c_t = use_facet<__money_true>(loc_c); 
42   const __money_false& monp_c_f = use_facet<__money_false>(loc_c); 
43
44   // quick sanity check for data.
45   wchar_t q1 = monp_c_t.decimal_point();
46   wchar_t q2 = monp_c_t.thousands_sep();
47   wchar_t q3 = monp_c_f.decimal_point();
48   wchar_t q4 = monp_c_f.thousands_sep();
49   string g1 = monp_c_t.grouping();
50   string g2 = monp_c_f.grouping();
51   wstring cs1 = monp_c_t.curr_symbol();
52   wstring cs2 = monp_c_f.curr_symbol();
53   wstring ps1 = monp_c_t.positive_sign();
54   wstring ns1 = monp_c_t.negative_sign();
55   wstring ps2 = monp_c_f.positive_sign();
56   wstring ns2 = monp_c_f.negative_sign();
57   int fd1 = monp_c_t.frac_digits();
58   int fd2 = monp_c_f.frac_digits();
59   pattern pos1 = monp_c_t.pos_format();
60   pattern neg1 = monp_c_t.neg_format();
61   pattern pos2 = monp_c_f.pos_format();
62   pattern neg2 = monp_c_f.neg_format();
63
64   VERIFY( q1 == L'.' );
65   VERIFY( q3 == L'.' );
66   VERIFY( q2 == L',' );
67   VERIFY( q4 == L',' );
68   VERIFY( g1 == "" );
69   VERIFY( g2 == "" );
70   VERIFY( cs1 == L"" );
71   VERIFY( cs2 == L"" );
72   VERIFY( ps1 == L"" );
73   VERIFY( ps2 == L"" );
74   VERIFY( ns1 == L"" );
75   VERIFY( ns2 == L"" );
76   VERIFY( fd1 == 0 );
77   VERIFY( fd2 == 0 );
78
79   VERIFY(static_cast<part>(pos1.field[0]) == static_cast<part>(pos2.field[0]));
80   VERIFY(static_cast<part>(pos1.field[1]) == static_cast<part>(pos2.field[1]));
81   VERIFY(static_cast<part>(pos1.field[2]) == static_cast<part>(pos2.field[2]));
82   VERIFY(static_cast<part>(pos1.field[3]) == static_cast<part>(pos2.field[3]));
83
84 #if 0
85   VERIFY( pos1[0] == money_base::_S_default_pattern[0] );
86   VERIFY( pos1[1] == money_base::_S_default_pattern[1] );
87   VERIFY( pos1[2] == money_base::_S_default_pattern[2] );
88   VERIFY( pos1[3] == money_base::_S_default_pattern[3] );
89   VERIFY( pos2 == money_base::_S_default_pattern );
90   VERIFY( neg1 == money_base::_S_default_pattern );
91   VERIFY( neg2 == money_base::_S_default_pattern );
92 #endif
93 }
94
95 int main()
96 {
97   test01();
98   return 0;
99 }