1// { dg-require-namedlocale "" }
2
3// 2001-11-19 Benjamin Kosnik  <bkoz@redhat.com>
4
5// Copyright (C) 2001, 2002, 2003, 2005 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 2, 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 COPYING.  If not, write to the Free
20// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
21// USA.
22
23// 22.2.2.2.1  num_put members
24
25#include <locale>
26#include <sstream>
27#include <testsuite_hooks.h>
28
29// Make sure that, in a locale that expects grouping, when showbase
30// is true, an hexadecimal or octal zero is correctly output (the case
31// of zero is special since there is no 0x, 0 respectively, prefix)
32void test05()
33{
34  using namespace std;
35  bool test __attribute__((unused)) = true;
36
37  // A locale that expects grouping.
38  locale loc_de = locale("de_DE");
39
40  const wstring empty;
41  wstring result;
42
43  wostringstream oss;
44  oss.imbue(loc_de);
45  const num_put<wchar_t>& np = use_facet<num_put<wchar_t> >(oss.getloc());
46
47  long l = 0;
48
49  oss.str(empty);
50  oss.clear();
51  oss.setf(ios::showbase);
52  oss.setf(ios::hex, ios::basefield);
53  np.put(oss.rdbuf(), oss, L'+', l);
54  result = oss.str();
55  VERIFY( result == L"0" );
56
57  oss.str(empty);
58  oss.clear();
59  oss.setf(ios::showbase);
60  oss.setf(ios::oct, ios::basefield);
61  np.put(oss.rdbuf(), oss, L'+', l);
62  result = oss.str();
63  VERIFY( result == L"0" );
64}
65
66int main()
67{
68  test05();
69  return 0;
70}
71