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