From: H.J. Lu Date: Thu, 27 Sep 2012 21:00:14 +0000 (+0000) Subject: Add test for "C" locale, add sanity checks in case of grouping X-Git-Tag: releases/gcc-4.6.4~348 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ae9ddefe26acd2eb92ff50314203ed145fb7314;p=thirdparty%2Fgcc.git Add test for "C" locale, add sanity checks in case of grouping 2012-09-27 H.J. Lu PR libstdc++/54228 Backport from mainline 2011-12-15 Benjamin Kosnik * testsuite/22_locale/num_put/put/char/9780-2.cc: Add test for "C" locale, add sanity checks in case of grouping. From-SVN: r191812 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index aa94768620eb..c73d796b51dc 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2012-09-27 H.J. Lu + + PR libstdc++/54228 + Backport from mainline + 2011-12-15 Benjamin Kosnik + + * testsuite/22_locale/num_put/put/char/9780-2.cc: Add test for "C" + locale, add sanity checks in case of grouping. + 2012-07-22 Jonathan Wakely PR libstdc++/53270 diff --git a/libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc b/libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc index 7993691e9169..a667c6b54a8b 100644 --- a/libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc +++ b/libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc @@ -1,7 +1,7 @@ // { dg-require-namedlocale "de_DE" } // { dg-require-namedlocale "es_ES" } -// Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. +// Copyright (C) 2004-2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -22,23 +22,60 @@ #include #include -int main() +// Make sure that formatted output uses the locale in the output stream. +using namespace std; +locale l1 = locale("de_DE"); +const num_put& np = use_facet >(l1); +const numpunct& npunct = use_facet >(l1); + +void test01() { - using namespace std; + bool test __attribute__((unused)) = true; + + locale l2 = locale("C"); + const numpunct& npunct2 = use_facet >(l2); + char c = npunct2.thousands_sep(); + string s = npunct2.grouping(); + + ostringstream oss; + oss.imbue(l2); + + long l = 1234567890; + np.put(oss.rdbuf(), oss, ' ', l); + string res = oss.str(); + + VERIFY( res == "1234567890" ); +} +void test02() +{ bool test __attribute__((unused)) = true; - locale l1 = locale("de_DE"); + locale l2 = locale("es_ES"); - - const num_put& np = use_facet >(l1); + const numpunct& npunct3 = use_facet >(l2); + char c = npunct3.thousands_sep(); + string s = npunct3.grouping(); + ostringstream oss; oss.imbue(l2); long l = 1234567890; - np.put(oss.rdbuf(), oss, ' ', l); // 1234567890 + np.put(oss.rdbuf(), oss, ' ', l); string res = oss.str(); - - VERIFY( res == "1234567890" ); + if (!s.empty()) + VERIFY( res == "1.234.567.890" ); + else + VERIFY( res == "1234567890" ); +} + +int main() +{ + // Sanity check. + char c = npunct.thousands_sep(); + string s = npunct.grouping(); + + test01(); + test02(); return 0; }