1// Copyright (C) 2004 Free Software Foundation
2//
3// This file is part of the GNU ISO C++ Library.  This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 2, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING.  If not, write to the Free
16// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
17// USA.
18
19// 22.2.2.2.1  num_put members
20
21#include <locale>
22#include <sstream>
23#include <testsuite_hooks.h>
24
25// libstdc++/15565
26void test01()
27{
28  using namespace std;
29  bool test __attribute__((unused)) = true;
30
31  // basic construction
32  locale loc_c = locale::classic();
33
34  // sanity check the data is correct.
35  const string empty;
36
37  // cache the num_put facet
38  ostringstream oss;
39  oss.imbue(loc_c);
40  const num_put<char>& np = use_facet<num_put<char> >(oss.getloc());
41
42  unsigned long ul1 = 42UL;
43  oss.str(empty);
44  oss.clear();
45  oss.setf(ios_base::showpos);
46  np.put(oss.rdbuf(), oss, ' ', ul1);
47  VERIFY( oss.str() == "42" );
48
49#ifdef _GLIBCXX_USE_LONG_LONG
50  unsigned long long ull1 = 31ULL;
51  oss.str(empty);
52  oss.clear();
53  oss.setf(ios_base::showpos);
54  np.put(oss.rdbuf(), oss, ' ', ull1);
55  VERIFY( oss.str() == "31" );
56#endif
57}
58
59int main()
60{
61  test01();
62  return 0;
63}
64