1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "locale_test.h" 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS) 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include <locale> 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include <sstream> 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include <stdexcept> 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include "complete_digits.h" 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottusing namespace std; 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct ref_locale { 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char *name; 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char *decimal_point; 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char *thousands_sep; 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstatic const ref_locale tested_locales[] = { 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//{ name, decimal_point, thousands_sepy_thousands_sep}, 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS) 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { "fr_FR", ",", "\xa0"}, 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { "ru_RU.koi8r", ",", "."}, 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { "en_GB", ".", ","}, 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { "en_US", ".", ","}, 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { "C", ".", ","}, 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// tests implementation 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid LocaleTest::_num_put_get( const locale& loc, const ref_locale* prl ) { 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const ref_locale& rl = *prl; 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( has_facet<numpunct<char> >(loc) ); 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott numpunct<char> const& npct = use_facet<numpunct<char> >(loc); 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( npct.decimal_point() == *rl.decimal_point ); 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott float val = 1234.56f; 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ostringstream fostr; 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr.imbue(loc); 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr << val; 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott string ref = "1"; 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (!npct.grouping().empty()) { 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += npct.thousands_sep(); 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += "234"; 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += npct.decimal_point(); 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += "56"; 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //cout << "In " << loc.name() << " 1234.56 is written: " << fostr.str() << endl; 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( fostr.str() == ref ); 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott val = 12345678.9f; 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref = "1"; 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += npct.decimal_point(); 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += "23457e+"; 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott string digits = "7"; 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott complete_digits(digits); 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += digits; 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr.str(""); 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr << val; 64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( fostr.str() == ref ); 65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott val = 1000000000.0f; 67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr.str(""); 68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr << val; 69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott digits = "9"; 70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott complete_digits(digits); 71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( fostr.str() == string("1e+") + digits ); 72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott val = 1234.0f; 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref = "1"; 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (!npct.grouping().empty()) { 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += npct.thousands_sep(); 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += "234"; 79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr.str(""); 80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr << val; 81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( fostr.str() == ref ); 82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott val = 10000001.0f; 84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr.str(""); 85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr << val; 86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott digits = "7"; 87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott complete_digits(digits); 88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( fostr.str() == string("1e+") + digits ); 89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (npct.grouping().size() == 1 && npct.grouping()[0] == 3) { 91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int ival = 1234567890; 92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr.str(""); 93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr << ival; 94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref = "1"; 95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += npct.thousands_sep(); 96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += "234"; 97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += npct.thousands_sep(); 98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += "567"; 99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += npct.thousands_sep(); 100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ref += "890"; 101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( fostr.str() == ref ); 102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (__BORLANDC__) 105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott num_put<char> const& nput = use_facet<num_put<char> >(loc); 106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef numeric_limits<double> limd; 107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr.setf(ios_base::uppercase | ios_base::showpos); 108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (limd::has_infinity) { 110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott double infinity = limd::infinity(); 111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr.str(""); 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott nput.put(fostr, fostr, ' ', infinity); 113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( fostr.str() == string("+Inf") ); 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (limd::has_quiet_NaN) { 117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott /* Ignore FPU exceptions */ 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott unsigned int _float_control_word = _control87(0, 0); 119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _control87(EM_INVALID|EM_INEXACT, MCW_EM); 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott double qnan = limd::quiet_NaN(); 121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott /* Reset floating point control word */ 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _clear87(); 123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _control87(_float_control_word, MCW_EM); 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott fostr.str(""); 125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott nput.put(fostr, fostr, ' ', qnan); 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_ASSERT( fostr.str() == string("+NaN") ); 127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttypedef void (LocaleTest::*_Test) (const locale&, const ref_locale*); 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstatic void test_supported_locale(LocaleTest& inst, _Test __test) { 133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t n = sizeof(tested_locales) / sizeof(tested_locales[0]); 134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott for (size_t i = 0; i < n; ++i) { 135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc; 136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS) 137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try 138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale tmp(tested_locales[i].name); 141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott loc = tmp; 142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS) 144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const&) { 145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //This locale is not supported. 146e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott continue; 147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_MESSAGE( loc.name().c_str() ); 150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott (inst.*__test)(loc, tested_locales + i); 151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale tmp(locale::classic(), tested_locales[i].name, locale::numeric); 154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott loc = tmp; 155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott (inst.*__test)(loc, tested_locales + i); 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 158e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { 159e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale tmp(locale::classic(), new numpunct_byname<char>(tested_locales[i].name)); 160e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott loc = tmp; 161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 162e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott (inst.*__test)(loc, tested_locales + i); 163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 165e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 166e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid LocaleTest::num_put_get() 167e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ test_supported_locale(*this, &LocaleTest::_num_put_get); } 168e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 169e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid LocaleTest::numpunct_by_name() 170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 171e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott /* 172e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Check of the 22.1.1.2.7 standard point. Construction of a locale 173e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * instance from a null pointer or an unknown name should result in 174e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * a runtime_error exception. 175e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 176e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS) 177e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (STLPORT) || !defined (__GNUC__) 178e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { 179e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc(locale::classic(), new numpunct_byname<char>(static_cast<char const*>(0))); 180e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 181e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 182e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const& /* e */) { 183e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //CPPUNIT_MESSAGE( e.what() ); 184e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 185e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (...) { 186e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 187e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 188e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 189e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 190e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { 191e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc(locale::classic(), new numpunct_byname<char>("yasli_language")); 192e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 193e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 194e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const& /* e */) { 195e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //CPPUNIT_MESSAGE( e.what() ); 196e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 197e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (...) { 198e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 199e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 200e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 201e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { 202e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott string veryLongFacetName("LC_NUMERIC="); 203e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott veryLongFacetName.append(512, '?'); 204e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc(locale::classic(), new numpunct_byname<char>(veryLongFacetName.c_str())); 205e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 206e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 207e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const& /* e */) { 208e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //CPPUNIT_MESSAGE( e.what() ); 209e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 210e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (...) { 211e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 212e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 213e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 214e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { 215e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc(locale::classic(), "C", locale::numeric); 216e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 217e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const& e) { 218e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_MESSAGE( e.what() ); 219e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 220e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 221e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (...) { 222e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 223e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 224e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 225e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { 226e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // On platform without real localization support we should rely on the "C" facet. 227e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc(locale::classic(), "", locale::numeric); 228e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 229e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const& e) { 230e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_MESSAGE( e.what() ); 231e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 232e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 233e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (...) { 234e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 235e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 236e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 237e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { 238e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc(locale::classic(), new numpunct_byname<char>("C")); 239e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott numpunct<char> const& cfacet_byname = use_facet<numpunct<char> >(loc); 240e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott numpunct<char> const& cfacet = use_facet<numpunct<char> >(locale::classic()); 241e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 242e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_CHECK( cfacet_byname.decimal_point() == cfacet.decimal_point() ); 243e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_CHECK( cfacet_byname.grouping() == cfacet.grouping() ); 244e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (!cfacet.grouping().empty()) 245e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_CHECK( cfacet_byname.thousands_sep() == cfacet.thousands_sep() ); 246e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (STLPORT) || !defined (__GLIBC__) 247e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_CHECK( cfacet_byname.truename() == cfacet.truename() ); 248e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_CHECK( cfacet_byname.falsename() == cfacet.falsename() ); 249e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 250e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 251e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const& /* e */) { 252e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //CPPUNIT_MESSAGE( e.what() ); 253e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 254e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 255e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (...) { 256e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 257e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 258e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 259e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { 260e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // On platform without real localization support we should rely on the "C" locale facet. 261e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc(locale::classic(), new numpunct_byname<char>("")); 262e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 263e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const& e) { 264e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_MESSAGE( e.what() ); 265e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 266e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 267e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (...) { 268e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 269e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 270e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 271e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !defined (STLPORT) || !defined (_STLP_NO_WCHAR_T) 272e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (STLPORT) || !defined (__GNUC__) 273e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { 274e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc(locale::classic(), new numpunct_byname<wchar_t>(static_cast<char const*>(0))); 275e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 276e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 277e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const&) { 278e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 279e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (...) { 280e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 281e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 282e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 283e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 284e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { 285e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott locale loc(locale::classic(), new numpunct_byname<wchar_t>("yasli_language")); 286e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 287e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 288e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (runtime_error const&) { 289e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 290e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch (...) { 291e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott CPPUNIT_FAIL; 292e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 293e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 294e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 295e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 296e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 297e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 298