1// { dg-require-namedlocale "de_DE" } 2// { dg-require-namedlocale "es_ES" } 3 4// Copyright (C) 2004-2015 Free Software Foundation, Inc. 5// 6// This file is part of the GNU ISO C++ Library. This library is free 7// software; you can redistribute it and/or modify it under the 8// terms of the GNU General Public License as published by the 9// Free Software Foundation; either version 3, or (at your option) 10// any later version. 11 12// This library is distributed in the hope that it will be useful, 13// but WITHOUT ANY WARRANTY; without even the implied warranty of 14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15// GNU General Public License for more details. 16 17// You should have received a copy of the GNU General Public License along 18// with this library; see the file COPYING3. If not see 19// <http://www.gnu.org/licenses/>. 20 21#include <sstream> 22#include <locale> 23#include <testsuite_hooks.h> 24 25// Make sure that formatted output uses the locale in the output stream. 26using namespace std; 27locale l1 = locale("de_DE"); 28const num_put<char>& np = use_facet<num_put<char> >(l1); 29const numpunct<char>& npunct = use_facet<numpunct<char> >(l1); 30 31void test01() 32{ 33 bool test __attribute__((unused)) = true; 34 35 locale l2 = locale("C"); 36 const numpunct<char>& npunct2 = use_facet<numpunct<char> >(l2); 37 char c __attribute__((unused)) = npunct2.thousands_sep(); 38 string s = npunct2.grouping(); 39 40 ostringstream oss; 41 oss.imbue(l2); 42 43 long l = 1234567890; 44 np.put(oss.rdbuf(), oss, ' ', l); 45 string res = oss.str(); 46 47 VERIFY( res == "1234567890" ); 48} 49 50void test02() 51{ 52 bool test __attribute__((unused)) = true; 53 54 locale l2 = locale("es_ES"); 55 const numpunct<char>& npunct3 = use_facet<numpunct<char> >(l2); 56 char c __attribute__((unused)) = npunct3.thousands_sep(); 57 string s = npunct3.grouping(); 58 59 ostringstream oss; 60 oss.imbue(l2); 61 62 long l = 1234567890; 63 np.put(oss.rdbuf(), oss, ' ', l); 64 string res = oss.str(); 65 66 if (!s.empty()) 67 VERIFY( res == "1.234.567.890" ); 68 else 69 VERIFY( res == "1234567890" ); 70} 71 72int main() 73{ 74 // Sanity check. 75 char c __attribute__((unused)) = npunct.thousands_sep(); 76 string s = npunct.grouping(); 77 78 test01(); 79 test02(); 80 return 0; 81} 82