time_facets_test.cpp revision e46c9386c4f79aa40185f79a19fc5b2a7ef528b3
158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com#include "locale_test.h" 258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com#if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS) 458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com# include <locale> 558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com# include <sstream> 658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com# include <memory> 758be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com# include <stdexcept> 858be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com# if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 10b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.comusing namespace std; 1167d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com# endif 1258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 1358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.comstatic const char* tested_locales[] = { 1458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com// name, 1558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS) 1658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com "fr_FR", 1758be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com "ru_RU.koi8r", 1858be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com "en_GB", 1958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com "en_US", 2058be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com# endif 2158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com "", 2258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com "C" 2358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com}; 2458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 2558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.comvoid LocaleTest::_time_put_get( const locale& loc ) 2658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com{ 27a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org { 28a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org typedef time_put<char, ostreambuf_iterator<char, char_traits<char> > > time_put_facet; 29a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org CPPUNIT_ASSERT( has_facet<time_put_facet>(loc) ); 30a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org const time_put_facet& tmp = use_facet<time_put_facet>(loc); 3158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 3258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com struct tm xmas = { 0, 0, 12, 25, 11, 93 }; 3358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com ostringstream ostr; 3458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com ostr.imbue(loc); 35f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina string format = "%B %d %Y"; 3658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 3758be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com time_put_facet::iter_type ret = tmp.put(ostr, ostr, ' ', &xmas, format.data(), format.data() + format.size()); 3858be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( !ret.failed() ); 3958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 4058be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com /* 4158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * In other words, user conformation is required for reliable parsing 4258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * of user-entered dates and times, but machine-generated formats can be 4358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * parsed reliably. This allows parsers to be aggressive about interpreting 4458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * user variations on standard format. 4558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * 4658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * ISO/IEC 14882, 22.2.5.1 4758be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com */ 4858be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com typedef time_get<char, istreambuf_iterator<char, char_traits<char> > > time_get_facet; 4958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( has_facet<time_get_facet>(loc) ); 5058be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com const time_get_facet& tmg = use_facet<time_get_facet>(loc); 5158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com basic_ios<char> io(0); 5258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com io.imbue(loc); 5358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 5458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com istringstream istr( ostr.str() ); 5558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com istreambuf_iterator<char, char_traits<char> > i( istr ); 5658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com istreambuf_iterator<char, char_traits<char> > e; 5758be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com ios_base::iostate err = ios_base::goodbit; 5858be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com struct tm other = { 15, 20, 9, 14, 7, 105 }; 5958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 6058be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com i = tmg.get_monthname( i, e, io, err, &other ); 6158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( err == ios_base::goodbit ); 6258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( other.tm_mon == xmas.tm_mon ); 6358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 6458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com ++i; ++i; ++i; ++i; // skip day of month and spaces around it 6558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com i = tmg.get_year( i, e, io, err, &other ); 6658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 6758be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( err == ios_base::eofbit ); 6858be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( other.tm_year == xmas.tm_year ); 6958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 7058be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com ostringstream ostrX; 7158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com ostrX.imbue(loc); 7258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com format = "%x %X"; 7358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 7458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com ret = tmp.put(ostrX, ostrX, ' ', &xmas, format.data(), format.data() + format.size()); 7558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( !ret.failed() ); 7658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 7758be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com istringstream istrX( ostrX.str() ); 7858be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com istreambuf_iterator<char, char_traits<char> > j( istrX ); 7958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 8058be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com err = ios_base::goodbit; 8158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 8267d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com struct tm yet_more = { 15, 20, 9, 14, 7, 105 }; 8367d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com 8467d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com j = tmg.get_date( j, e, io, err, &yet_more ); 8567d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com 8667d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( err == ios_base::goodbit ); 8767d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com 884469938e92d779dff05e745559e67907bbf21e78reed@google.com CPPUNIT_ASSERT( yet_more.tm_sec != xmas.tm_sec ); 8967d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_min != xmas.tm_min ); 9067d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_hour != xmas.tm_hour ); 91e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org CPPUNIT_ASSERT( yet_more.tm_mday == xmas.tm_mday ); 92b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_mon == xmas.tm_mon ); 9367d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_year == xmas.tm_year ); 9467d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com 9567d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com ++j; // skip space 9667d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com 9767d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com j = tmg.get_time( j, e, io, err, &yet_more ); 9867d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com 9967d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( err == ios_base::eofbit || err == ios_base::goodbit ); 10067d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com 10167d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_sec == xmas.tm_sec ); 10267d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_min == xmas.tm_min ); 10367d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_hour == xmas.tm_hour ); 10467d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_mday == xmas.tm_mday ); 10567d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_mon == xmas.tm_mon ); 10667d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com CPPUNIT_ASSERT( yet_more.tm_year == xmas.tm_year ); 10767d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com } 10867d91be9bb64c532452f9d9d67b20f492ea0ad57robertphillips@google.com# if !defined (STLPORT) || !defined (_STLP_NO_WCHAR_T) 10958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com { 11058be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com typedef time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > time_put_facet; 11158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( has_facet<time_put_facet>(loc) ); 11258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com const time_put_facet& tmp = use_facet<time_put_facet>(loc); 11358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 114eb9a46cbbb475e862a084aa2224ec18d4ac5e95breed@google.com struct tm xmas = { 0, 0, 12, 25, 11, 93 }; 11558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com wostringstream ostr; 11658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com ostr.imbue(loc); 11758be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com wstring format = L"%B %d %Y"; 11858be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 11958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com time_put_facet::iter_type ret = tmp.put(ostr, ostr, ' ', &xmas, format.data(), format.data() + format.size()); 12058be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( !ret.failed() ); 12158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com 12258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com /* 12358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * In other words, user conformation is required for reliable parsing 12458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * of user-entered dates and times, but machine-generated formats can be 12558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * parsed reliably. This allows parsers to be aggressive about interpreting 12658be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * user variations on standard format. 12758be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * 12858be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com * ISO/IEC 14882, 22.2.5.1 12958be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com */ 13058be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com typedef time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > time_get_facet; 13158be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com CPPUNIT_ASSERT( has_facet<time_get_facet>(loc) ); 13258be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com const time_get_facet& tmg = use_facet<time_get_facet>(loc); 13358be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com // Intentional instantiation with char to show a bug in a previous STLport version. 13458be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com basic_ios<char> io(0); 13558be682c77c76d9a0caf23337f9b357798179b6cscroggo@google.com io.imbue(loc); 136 137 wistringstream istr( ostr.str() ); 138 istreambuf_iterator<wchar_t, char_traits<wchar_t> > i( istr ); 139 istreambuf_iterator<wchar_t, char_traits<wchar_t> > e; 140 ios_base::iostate err = ios_base::goodbit; 141 struct tm other = { 15, 20, 9, 14, 7, 105 }; 142 143 i = tmg.get_monthname( i, e, io, err, &other ); 144 CPPUNIT_ASSERT( err == ios_base::goodbit ); 145 CPPUNIT_ASSERT( other.tm_mon == xmas.tm_mon ); 146 147 ++i; ++i; ++i; ++i; // skip day of month and spaces around it 148 i = tmg.get_year( i, e, io, err, &other ); 149 150 CPPUNIT_ASSERT( err == ios_base::eofbit ); 151 CPPUNIT_ASSERT( other.tm_year == xmas.tm_year ); 152 153 wostringstream ostrX; 154 ostrX.imbue(loc); 155 format = L"%x %X"; 156 157 ret = tmp.put(ostrX, ostrX, ' ', &xmas, format.data(), format.data() + format.size()); 158 CPPUNIT_ASSERT( !ret.failed() ); 159 160 wistringstream istrX( ostrX.str() ); 161 istreambuf_iterator<wchar_t, char_traits<wchar_t> > j( istrX ); 162 163 err = ios_base::goodbit; 164 165 struct tm yet_more = { 15, 20, 9, 14, 7, 105 }; 166 167 j = tmg.get_date( j, e, io, err, &yet_more ); 168 169 CPPUNIT_ASSERT( err == ios_base::goodbit ); 170 171 CPPUNIT_ASSERT( yet_more.tm_sec != xmas.tm_sec ); 172 CPPUNIT_ASSERT( yet_more.tm_min != xmas.tm_min ); 173 CPPUNIT_ASSERT( yet_more.tm_hour != xmas.tm_hour ); 174 CPPUNIT_ASSERT( yet_more.tm_mday == xmas.tm_mday ); 175 CPPUNIT_ASSERT( yet_more.tm_mon == xmas.tm_mon ); 176 CPPUNIT_ASSERT( yet_more.tm_year == xmas.tm_year ); 177 178 ++j; // skip space 179 180 j = tmg.get_time( j, e, io, err, &yet_more ); 181 182 CPPUNIT_ASSERT( err == ios_base::eofbit || err == ios_base::goodbit ); 183 184 CPPUNIT_ASSERT( yet_more.tm_sec == xmas.tm_sec ); 185 CPPUNIT_ASSERT( yet_more.tm_min == xmas.tm_min ); 186 CPPUNIT_ASSERT( yet_more.tm_hour == xmas.tm_hour ); 187 CPPUNIT_ASSERT( yet_more.tm_mday == xmas.tm_mday ); 188 CPPUNIT_ASSERT( yet_more.tm_mon == xmas.tm_mon ); 189 CPPUNIT_ASSERT( yet_more.tm_year == xmas.tm_year ); 190 } 191# endif 192} 193 194typedef void (LocaleTest::*_Test) (const locale&); 195static void test_supported_locale(LocaleTest& inst, _Test __test) { 196 size_t n = sizeof(tested_locales) / sizeof(tested_locales[0]); 197 for (size_t i = 0; i < n; ++i) { 198 locale loc; 199# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS) 200 try 201# endif 202 { 203 locale tmp(tested_locales[i]); 204 loc = tmp; 205 } 206# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS) 207 catch (runtime_error const&) { 208 //This locale is not supported. 209 continue; 210 } 211# endif 212 CPPUNIT_MESSAGE( loc.name().c_str() ); 213 (inst.*__test)(loc); 214 215 { 216 locale tmp(locale::classic(), tested_locales[i], locale::time); 217 loc = tmp; 218 } 219 (inst.*__test)(loc); 220 221 { 222 typedef time_put_byname<char, ostreambuf_iterator<char, char_traits<char> > > time_put_facet; 223 locale tmp0(locale::classic(), new time_put_facet(tested_locales[i])); 224 typedef time_get_byname<char, istreambuf_iterator<char, char_traits<char> > > time_get_facet; 225 locale tmp1(tmp0, new time_get_facet(tested_locales[i])); 226 loc = tmp1; 227 } 228 (inst.*__test)(loc); 229 } 230} 231 232void LocaleTest::time_put_get() 233{ test_supported_locale(*this, &LocaleTest::_time_put_get); } 234 235void LocaleTest::time_by_name() 236{ 237# if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS) 238 /* 239 * Check of the 22.1.1.2.7 standard point. Construction of a locale 240 * instance from a null pointer or an unknown name should result in 241 * a runtime_error exception. 242 */ 243# if defined (STLPORT) || !defined (_MSC_VER) || (_MSC_VER > 1400) 244 try { 245 locale loc(locale::classic(), new time_put_byname<char, ostreambuf_iterator<char, char_traits<char> > >(static_cast<char const*>(0))); 246 CPPUNIT_FAIL; 247 } 248 catch (runtime_error const&) { 249 } 250 catch (...) { 251 CPPUNIT_FAIL; 252 } 253# endif 254 255 try { 256 locale loc(locale::classic(), new time_put_byname<char, ostreambuf_iterator<char, char_traits<char> > >("yasli_language")); 257 CPPUNIT_FAIL; 258 } 259 catch (runtime_error const&) { 260 } 261 catch (...) { 262 CPPUNIT_FAIL; 263 } 264 265 try { 266 string veryLongFacetName("LC_TIME="); 267 veryLongFacetName.append(512, '?'); 268 locale loc(locale::classic(), new time_put_byname<char, ostreambuf_iterator<char, char_traits<char> > >(veryLongFacetName.c_str())); 269 CPPUNIT_FAIL; 270 } 271 catch (runtime_error const& /* e */) { 272 //CPPUNIT_MESSAGE( e.what() ); 273 } 274 catch (...) { 275 CPPUNIT_FAIL; 276 } 277 278 try { 279 locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >(static_cast<char const*>(0))); 280 CPPUNIT_FAIL; 281 } 282 catch (runtime_error const&) { 283 } 284 catch (...) { 285 CPPUNIT_FAIL; 286 } 287 288 try { 289 locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >("yasli_language")); 290 CPPUNIT_FAIL; 291 } 292 catch (runtime_error const&) { 293 } 294 catch (...) { 295 CPPUNIT_FAIL; 296 } 297 298 try { 299 string veryLongFacetName("LC_TIME="); 300 veryLongFacetName.append(512, '?'); 301 locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >(veryLongFacetName.c_str())); 302 CPPUNIT_FAIL; 303 } 304 catch (runtime_error const& /* e */) { 305 //CPPUNIT_MESSAGE( e.what() ); 306 } 307 catch (...) { 308 CPPUNIT_FAIL; 309 } 310 311 try { 312 locale loc(locale::classic(), "C", locale::time); 313 } 314 catch (runtime_error const& /* e */) { 315 /* CPPUNIT_MESSAGE( e.what() ); */ 316 CPPUNIT_FAIL; 317 } 318 catch (...) { 319 CPPUNIT_FAIL; 320 } 321 322 try { 323 // On platform without real localization support we should rely on the "C" facet. 324 locale loc(locale::classic(), "", locale::time); 325 } 326 catch (runtime_error const& /* e */) { 327 /* CPPUNIT_MESSAGE( e.what() ); */ 328 CPPUNIT_FAIL; 329 } 330 catch (...) { 331 CPPUNIT_FAIL; 332 } 333 334 try { 335 locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >("C")); 336 } 337 catch (runtime_error const& /* e */) { 338 /* CPPUNIT_MESSAGE( e.what() ); */ 339 CPPUNIT_FAIL; 340 } 341 catch (...) { 342 CPPUNIT_FAIL; 343 } 344 345 try { 346 // On platform without real localization support we should rely on the "C" locale facet. 347 locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >("")); 348 } 349 catch (runtime_error const& /* e */) { 350 /* CPPUNIT_MESSAGE( e.what() ); */ 351 CPPUNIT_FAIL; 352 } 353 catch (...) { 354 CPPUNIT_FAIL; 355 } 356 357# if !defined (STLPORT) || !defined (_STLP_NO_WCHAR_T) 358 try { 359 locale loc(locale::classic(), new time_put_byname<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >(static_cast<char const*>(0))); 360 CPPUNIT_FAIL; 361 } 362 catch (runtime_error const&) { 363 } 364 catch (...) { 365 CPPUNIT_FAIL; 366 } 367 368 try { 369 locale loc(locale::classic(), new time_put_byname<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >("yasli_language")); 370 CPPUNIT_FAIL; 371 } 372 catch (runtime_error const&) { 373 } 374 catch (...) { 375 CPPUNIT_FAIL; 376 } 377 378 try { 379 locale loc(locale::classic(), new time_get_byname<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >(static_cast<char const*>(0))); 380 CPPUNIT_FAIL; 381 } 382 catch (runtime_error const&) { 383 } 384 catch (...) { 385 CPPUNIT_FAIL; 386 } 387 388 try { 389 locale loc(locale::classic(), new time_get_byname<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >("yasli_language")); 390 CPPUNIT_FAIL; 391 } 392 catch (runtime_error const&) { 393 } 394 catch (...) { 395 CPPUNIT_FAIL; 396 } 397 398# endif 399# endif 400} 401 402#endif 403