177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#include "locale_test.h"
277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS)
477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <locale>
577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <sstream>
677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <memory>
777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <stdexcept>
877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerusing namespace std;
1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerstatic const char* tested_locales[] = {
1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// name,
1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   "fr_FR",
1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   "ru_RU.koi8r",
1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   "en_GB",
1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   "en_US",
2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   "",
2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   "C"
2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner};
2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid LocaleTest::_time_put_get( const locale& loc )
2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{
2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  {
2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    typedef time_put<char, ostreambuf_iterator<char, char_traits<char> > > time_put_facet;
2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( has_facet<time_put_facet>(loc) );
3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    const time_put_facet& tmp = use_facet<time_put_facet>(loc);
3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    struct tm xmas = { 0, 0, 12, 25, 11, 93 };
3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ostringstream ostr;
3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ostr.imbue(loc);
3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    string format = "%B %d %Y";
3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    time_put_facet::iter_type ret = tmp.put(ostr, ostr, ' ', &xmas, format.data(), format.data() + format.size());
3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( !ret.failed() );
3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    /*
4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     * In other words, user conformation is required for reliable parsing
4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     * of user-entered dates and times, but machine-generated formats can be
4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     * parsed reliably. This allows parsers to be aggressive about interpreting
4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     * user variations on standard format.
4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     *
4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     *                                             ISO/IEC 14882, 22.2.5.1
4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     */
4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    typedef time_get<char, istreambuf_iterator<char, char_traits<char> > > time_get_facet;
4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( has_facet<time_get_facet>(loc) );
5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    const time_get_facet& tmg = use_facet<time_get_facet>(loc);
5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    basic_ios<char> io(0);
5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    io.imbue(loc);
5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    istringstream istr( ostr.str() );
5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    istreambuf_iterator<char, char_traits<char> > i( istr );
5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    istreambuf_iterator<char, char_traits<char> > e;
5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ios_base::iostate err = ios_base::goodbit;
5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    struct tm other = { 15, 20, 9, 14, 7, 105 };
5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    i = tmg.get_monthname( i, e, io, err, &other );
6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( err == ios_base::goodbit );
6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( other.tm_mon == xmas.tm_mon );
6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ++i; ++i; ++i; ++i; // skip day of month and spaces around it
6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    i = tmg.get_year( i, e, io, err, &other );
6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( err == ios_base::eofbit );
6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( other.tm_year == xmas.tm_year );
6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ostringstream ostrX;
7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ostrX.imbue(loc);
7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    format = "%x %X";
7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ret = tmp.put(ostrX, ostrX, ' ', &xmas, format.data(), format.data() + format.size());
7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( !ret.failed() );
7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    istringstream istrX( ostrX.str() );
7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    istreambuf_iterator<char, char_traits<char> > j( istrX );
7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
8077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    err = ios_base::goodbit;
8177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
8277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    struct tm yet_more = { 15, 20, 9, 14, 7, 105 };
8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    j = tmg.get_date( j, e, io, err, &yet_more );
8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( err == ios_base::goodbit );
8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_sec != xmas.tm_sec );
8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_min != xmas.tm_min );
9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_hour != xmas.tm_hour );
9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_mday == xmas.tm_mday );
9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_mon == xmas.tm_mon );
9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_year == xmas.tm_year );
9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ++j; // skip space
9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    j = tmg.get_time( j, e, io, err, &yet_more );
9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( err == ios_base::eofbit || err == ios_base::goodbit );
10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_sec == xmas.tm_sec );
10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_min == xmas.tm_min );
10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_hour == xmas.tm_hour );
10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_mday == xmas.tm_mday );
10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_mon == xmas.tm_mon );
10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_year == xmas.tm_year );
10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if !defined (STLPORT) || !defined (_STLP_NO_WCHAR_T)
10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  {
11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    typedef time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > time_put_facet;
11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( has_facet<time_put_facet>(loc) );
11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    const time_put_facet& tmp = use_facet<time_put_facet>(loc);
11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    struct tm xmas = { 0, 0, 12, 25, 11, 93 };
11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    wostringstream ostr;
11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ostr.imbue(loc);
11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    wstring format = L"%B %d %Y";
11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    time_put_facet::iter_type ret = tmp.put(ostr, ostr, ' ', &xmas, format.data(), format.data() + format.size());
12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( !ret.failed() );
12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    /*
12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     * In other words, user conformation is required for reliable parsing
12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     * of user-entered dates and times, but machine-generated formats can be
12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     * parsed reliably. This allows parsers to be aggressive about interpreting
12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     * user variations on standard format.
12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     *
12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     *                                             ISO/IEC 14882, 22.2.5.1
12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner     */
13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    typedef time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > time_get_facet;
13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( has_facet<time_get_facet>(loc) );
13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    const time_get_facet& tmg = use_facet<time_get_facet>(loc);
13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    // Intentional instantiation with char to show a bug in a previous STLport version.
13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    basic_ios<char> io(0);
13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    io.imbue(loc);
13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    wistringstream istr( ostr.str() );
13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    istreambuf_iterator<wchar_t, char_traits<wchar_t> > i( istr );
13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    istreambuf_iterator<wchar_t, char_traits<wchar_t> > e;
14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ios_base::iostate err = ios_base::goodbit;
14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    struct tm other = { 15, 20, 9, 14, 7, 105 };
14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    i = tmg.get_monthname( i, e, io, err, &other );
14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( err == ios_base::goodbit );
14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( other.tm_mon == xmas.tm_mon );
14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ++i; ++i; ++i; ++i; // skip day of month and spaces around it
14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    i = tmg.get_year( i, e, io, err, &other );
14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( err == ios_base::eofbit );
15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( other.tm_year == xmas.tm_year );
15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    wostringstream ostrX;
15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ostrX.imbue(loc);
15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    format = L"%x %X";
15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ret = tmp.put(ostrX, ostrX, ' ', &xmas, format.data(), format.data() + format.size());
15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( !ret.failed() );
15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    wistringstream istrX( ostrX.str() );
16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    istreambuf_iterator<wchar_t, char_traits<wchar_t> > j( istrX );
16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    err = ios_base::goodbit;
16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    struct tm yet_more = { 15, 20, 9, 14, 7, 105 };
16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    j = tmg.get_date( j, e, io, err, &yet_more );
16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( err == ios_base::goodbit );
17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_sec != xmas.tm_sec );
17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_min != xmas.tm_min );
17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_hour != xmas.tm_hour );
17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_mday == xmas.tm_mday );
17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_mon == xmas.tm_mon );
17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_year == xmas.tm_year );
17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    ++j; // skip space
17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    j = tmg.get_time( j, e, io, err, &yet_more );
18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( err == ios_base::eofbit || err == ios_base::goodbit );
18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_sec == xmas.tm_sec );
18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_min == xmas.tm_min );
18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_hour == xmas.tm_hour );
18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_mday == xmas.tm_mday );
18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_mon == xmas.tm_mon );
18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_ASSERT( yet_more.tm_year == xmas.tm_year );
19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}
19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertypedef void (LocaleTest::*_Test) (const locale&);
19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerstatic void test_supported_locale(LocaleTest& inst, _Test __test) {
19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  size_t n = sizeof(tested_locales) / sizeof(tested_locales[0]);
19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  for (size_t i = 0; i < n; ++i) {
19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc;
19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    try
20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    {
20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      locale tmp(tested_locales[i]);
20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      loc = tmp;
20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    catch (runtime_error const&) {
20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      //This locale is not supported.
20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      continue;
21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_MESSAGE( loc.name().c_str() );
21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    (inst.*__test)(loc);
21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    {
21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      locale tmp(locale::classic(), tested_locales[i], locale::time);
21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      loc = tmp;
21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    (inst.*__test)(loc);
22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    {
22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      typedef time_put_byname<char, ostreambuf_iterator<char, char_traits<char> > > time_put_facet;
22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      locale tmp0(locale::classic(), new time_put_facet(tested_locales[i]));
22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      typedef time_get_byname<char, istreambuf_iterator<char, char_traits<char> > > time_get_facet;
22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      locale tmp1(tmp0, new time_get_facet(tested_locales[i]));
22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      loc = tmp1;
22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    (inst.*__test)(loc);
22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}
23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid LocaleTest::time_put_get()
23377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ test_supported_locale(*this, &LocaleTest::_time_put_get); }
23477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
23577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervoid LocaleTest::time_by_name()
23677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{
23777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
23877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  /*
23977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   * Check of the 22.1.1.2.7 standard point. Construction of a locale
24077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   * instance from a null pointer or an unknown name should result in
24177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   * a runtime_error exception.
24277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner   */
24377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#    if defined (STLPORT) || !defined (_MSC_VER) || (_MSC_VER > 1400)
24477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
24577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_put_byname<char, ostreambuf_iterator<char, char_traits<char> > >(static_cast<char const*>(0)));
24677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
24777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
24877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const&) {
24977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
25077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
25177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
25277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
25377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#    endif
25477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
25577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
25677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_put_byname<char, ostreambuf_iterator<char, char_traits<char> > >("yasli_language"));
25777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
25877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
25977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const&) {
26077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
26177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
26277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
26377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
26477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
26577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
26677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    string veryLongFacetName("LC_TIME=");
26777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    veryLongFacetName.append(512, '?');
26877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_put_byname<char, ostreambuf_iterator<char, char_traits<char> > >(veryLongFacetName.c_str()));
26977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
27077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
27177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const& /* e */) {
27277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    //CPPUNIT_MESSAGE( e.what() );
27377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
27477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
27577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
27677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
27777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
27877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
27977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >(static_cast<char const*>(0)));
28077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
28177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
28277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const&) {
28377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
28477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
28577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
28677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
28777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
28877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
28977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >("yasli_language"));
29077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
29177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
29277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const&) {
29377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
29477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
29577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
29677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
29777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
29877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
29977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    string veryLongFacetName("LC_TIME=");
30077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    veryLongFacetName.append(512, '?');
30177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >(veryLongFacetName.c_str()));
30277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
30377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
30477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const& /* e */) {
30577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    //CPPUNIT_MESSAGE( e.what() );
30677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
30777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
30877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
30977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
31077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
31177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
31277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), "C", locale::time);
31377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
31477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const& /* e */) {
31577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    /* CPPUNIT_MESSAGE( e.what() ); */
31677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
31777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
31877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
31977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
32077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
32177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
32277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
32377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    // On platform without real localization support we should rely on the "C" facet.
32477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), "", locale::time);
32577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
32677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const& /* e */) {
32777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    /* CPPUNIT_MESSAGE( e.what() ); */
32877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
32977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
33077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
33177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
33277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
33377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
33477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
33577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >("C"));
33677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
33777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const& /* e */) {
33877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    /* CPPUNIT_MESSAGE( e.what() ); */
33977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
34077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
34177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
34277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
34377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
34477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
34577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
34677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    // On platform without real localization support we should rely on the "C" locale facet.
34777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_get_byname<char, istreambuf_iterator<char, char_traits<char> > >(""));
34877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
34977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const& /* e */) {
35077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    /* CPPUNIT_MESSAGE( e.what() ); */
35177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
35277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
35377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
35477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
35577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
35677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
35777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#    if !defined (STLPORT) || !defined (_STLP_NO_WCHAR_T)
35877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
35977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_put_byname<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >(static_cast<char const*>(0)));
36077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
36177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
36277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const&) {
36377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
36477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
36577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
36677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
36777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
36877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
36977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_put_byname<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >("yasli_language"));
37077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
37177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
37277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const&) {
37377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
37477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
37577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
37677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
37777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
37877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
37977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_get_byname<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >(static_cast<char const*>(0)));
38077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
38177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
38277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const&) {
38377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
38477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
38577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
38677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
38777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
38877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  try {
38977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    locale loc(locale::classic(), new time_get_byname<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >("yasli_language"));
39077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
39177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
39277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (runtime_error const&) {
39377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
39477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  catch (...) {
39577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    CPPUNIT_FAIL;
39677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
39777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
39877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#    endif
39977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
40077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}
40177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
40277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
403