1// { dg-require-namedlocale "" }
2
3// 2001-11-21 Benjamin Kosnik  <bkoz@redhat.com>
4
5// Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation
6//
7// This file is part of the GNU ISO C++ Library.  This library is free
8// software; you can redistribute it and/or modify it under the
9// terms of the GNU General Public License as published by the
10// Free Software Foundation; either version 3, or (at your option)
11// any later version.
12
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16// GNU General Public License for more details.
17
18// You should have received a copy of the GNU General Public License along
19// with this library; see the file COPYING3.  If not see
20// <http://www.gnu.org/licenses/>.
21
22// 22.2.2.1.1  num_get members
23
24#include <locale>
25#include <sstream>
26#include <testsuite_hooks.h>
27
28// Testing the correct parsing of grouped hexadecimals and octals.
29void test05()
30{
31  using namespace std;
32
33  bool test __attribute__((unused)) = true;
34
35  unsigned long ul;
36
37  wistringstream iss;
38
39  // A locale that expects grouping
40  locale loc_de = locale("de_DE");
41  iss.imbue(loc_de);
42
43  const num_get<wchar_t>& ng = use_facet<num_get<wchar_t> >(iss.getloc());
44  const ios_base::iostate goodbit = ios_base::goodbit;
45  ios_base::iostate err = ios_base::goodbit;
46
47  iss.setf(ios::hex, ios::basefield);
48  iss.str(L"0xbf.fff.74c ");
49  err = goodbit;
50  ng.get(iss.rdbuf(), 0, iss, err, ul);
51  VERIFY( err == goodbit );
52  VERIFY( ul == 0xbffff74c );
53
54  iss.str(L"0Xf.fff ");
55  err = goodbit;
56  ng.get(iss.rdbuf(), 0, iss, err, ul);
57  VERIFY( err == goodbit );
58  VERIFY( ul == 0xffff );
59
60  iss.str(L"ffe ");
61  err = goodbit;
62  ng.get(iss.rdbuf(), 0, iss, err, ul);
63  VERIFY( err == goodbit );
64  VERIFY( ul == 0xffe );
65
66  iss.setf(ios::oct, ios::basefield);
67  iss.str(L"07.654.321 ");
68  err = goodbit;
69  ng.get(iss.rdbuf(), 0, iss, err, ul);
70  VERIFY( err == goodbit );
71  VERIFY( ul == 07654321 );
72
73  iss.str(L"07.777 ");
74  err = goodbit;
75  ng.get(iss.rdbuf(), 0, iss, err, ul);
76  VERIFY( err == goodbit );
77  VERIFY( ul == 07777 );
78
79  iss.str(L"776 ");
80  err = goodbit;
81  ng.get(iss.rdbuf(), 0, iss, err, ul);
82  VERIFY( err == goodbit );
83  VERIFY( ul == 0776 );
84}
85
86int main()
87{
88  test05();
89  return 0;
90}
91
92
93// Kathleen Hannah, humanitarian, woman, art-thief
94