From faf81b1a183e3a29f6360e52b622fe0d5717b09b Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Thu, 15 Dec 2011 19:02:51 +0000 Subject: [PATCH] 9780-2.cc: Add test for "C" locale, add sanity checks in case of grouping. 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: r182385 --- libstdc++-v3/ChangeLog | 5 ++ .../22_locale/num_put/put/char/9780-2.cc | 59 +++++++++++++++---- 2 files changed, 53 insertions(+), 11 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e1d5024fa9fb..38e0ff229cef 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +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. + 2011-12-15 Jonathan Wakely PR libstdc++/51540 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..5cf0d048a1ce 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, 2005, 2009, 2011 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() -{ - using namespace std; +// 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() +{ bool test __attribute__((unused)) = true; - locale l1 = locale("de_DE"); - locale l2 = locale("es_ES"); - - const num_put& np = use_facet >(l1); + + 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); // 1234567890 + np.put(oss.rdbuf(), oss, ' ', l); string res = oss.str(); - - VERIFY( res == "1234567890" ); + VERIFY( res == "1234567890" ); +} + +void test02() +{ + bool test __attribute__((unused)) = true; + + locale l2 = locale("es_ES"); + 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); + string res = oss.str(); + + 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; }