1// Copyright (C) 2008-2015 Free Software Foundation, Inc.
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 3, 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 COPYING3.  If not see
16// <http://www.gnu.org/licenses/>.
17
18// 22.2.6.1.1 money_get members
19
20#include <locale>
21#include <sstream>
22#include <testsuite_hooks.h>
23
24class my_moneypunct : public std::moneypunct<wchar_t>
25{
26protected:
27  //this should disable fraction part of monetary value
28  int do_frac_digits() const { return 0; }
29};
30
31// libstdc++/38399
32void test01()
33{
34  using namespace std;
35  bool test __attribute__((unused)) = true;
36
37  locale loc(locale(), new my_moneypunct());
38  wstringstream ss(L"123.455");
39  ss.imbue(loc);
40  wstring digits;
41  ios_base::iostate err;
42  istreambuf_iterator<wchar_t> iter =
43    use_facet<money_get<wchar_t> >(loc).get(ss, 0, false, ss, err, digits);
44
45  wstring rest = wstring(iter, istreambuf_iterator<wchar_t>());
46  VERIFY( digits == L"123" );
47  VERIFY( rest == L".455" );
48}
49
50int main()
51{
52  test01();
53  return 0;
54}
55