[SDK] One step further towards ReactOS source code tree restructure: the sdk folder...
[reactos.git] / reactos / lib / 3rdparty / stlport / test / unit / ctype_facets_test.cpp
diff --git a/reactos/lib/3rdparty/stlport/test/unit/ctype_facets_test.cpp b/reactos/lib/3rdparty/stlport/test/unit/ctype_facets_test.cpp
deleted file mode 100644 (file)
index 9609e21..0000000
+++ /dev/null
@@ -1,520 +0,0 @@
-#include "locale_test.h"
-
-#if !defined (STLPORT) || !defined (_STLP_USE_NO_IOSTREAMS)
-#  include <locale>
-#  include <stdexcept>
-
-#  if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
-using namespace std;
-#  endif
-
-static const char* tested_locales[] = {
-//name,
-#  if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
-  // We need exception support to check support of the following localizations.
-  "fr_FR",
-  "ru_RU.koi8r",
-  "en_GB",
-  "en_US",
-#  endif
-  "",
-  "C"
-};
-
-//
-// tests implementation
-//
-void LocaleTest::_ctype_facet( const locale& loc)
-{
-  CPPUNIT_ASSERT( has_facet<ctype<char> >(loc) );
-  ctype<char> const& ct = use_facet<ctype<char> >(loc);
-  //is
-  {
-    CPPUNIT_ASSERT( ct.is(ctype_base::digit, '0') );
-    CPPUNIT_ASSERT( ct.is(ctype_base::upper, 'A') );
-    CPPUNIT_ASSERT( ct.is(ctype_base::lower, 'a') );
-    CPPUNIT_ASSERT( ct.is(ctype_base::alpha, 'A') );
-    CPPUNIT_ASSERT( ct.is(ctype_base::space, ' ') );
-    CPPUNIT_ASSERT( !ct.is(ctype_base::space, '2') );
-    CPPUNIT_ASSERT( ct.is(ctype_base::punct, '.') );
-    CPPUNIT_ASSERT( ct.is(ctype_base::xdigit, 'a') );
-  }
-
-  //is range
-  {
-    char values[] = "0Aa .";
-    ctype_base::mask res[sizeof(values)];
-    ct.is(values, values + sizeof(values), res);
-    // '0'
-    CPPUNIT_ASSERT( (res[0] & ctype_base::print) != 0 );
-    CPPUNIT_ASSERT( (res[0] & ctype_base::digit) != 0 );
-    CPPUNIT_ASSERT( (res[0] & ctype_base::xdigit) != 0 );
-    // 'A'
-    CPPUNIT_ASSERT( (res[1] & ctype_base::print) != 0 );
-    CPPUNIT_ASSERT( (res[1] & ctype_base::alpha) != 0 );
-    CPPUNIT_ASSERT( (res[1] & ctype_base::xdigit) != 0 );
-    CPPUNIT_ASSERT( (res[1] & ctype_base::upper) != 0 );
-    // 'a'
-    CPPUNIT_ASSERT( (res[2] & ctype_base::print) != 0 );
-    CPPUNIT_ASSERT( (res[2] & ctype_base::alpha) != 0 );
-    CPPUNIT_ASSERT( (res[2] & ctype_base::xdigit) != 0 );
-    CPPUNIT_ASSERT( (res[2] & ctype_base::lower) != 0 );
-    CPPUNIT_ASSERT( (res[2] & ctype_base::space) == 0 );
-    // ' '
-    CPPUNIT_ASSERT( (res[3] & ctype_base::print) != 0 );
-    CPPUNIT_ASSERT( (res[3] & ctype_base::space) != 0 );
-    CPPUNIT_ASSERT( (res[3] & ctype_base::digit) == 0 );
-    // '.'
-    CPPUNIT_ASSERT( (res[4] & ctype_base::print) != 0 );
-    CPPUNIT_ASSERT( (res[4] & ctype_base::punct) != 0 );
-    CPPUNIT_ASSERT( (res[4] & ctype_base::digit) == 0 );
-  }
-
-  //scan_is
-  {
-    char range[] = "abAc123 .";
-    const char *rbeg = range;
-    const char *rend = range + sizeof(range);
-
-    const char *res;
-    res = ct.scan_is((ctype_base::mask)(ctype_base::alpha | ctype_base::lower), rbeg, rend);
-    CPPUNIT_ASSERT( res != rend );
-    CPPUNIT_ASSERT( *res == 'a' );
-
-    res = ct.scan_is(ctype_base::upper, rbeg, rend);
-    CPPUNIT_ASSERT( res != rend );
-    CPPUNIT_ASSERT( *res == 'A' );
-
-    res = ct.scan_is(ctype_base::punct, rbeg, rend);
-    CPPUNIT_ASSERT( res != rend );
-    CPPUNIT_ASSERT( *res == '.' );
-  }
-
-  //scan_not
-  {
-    char range[] = "abAc123 .";
-    const char *rbeg = range;
-    const char *rend = range + sizeof(range);
-
-    const char *res;
-    res = ct.scan_not((ctype_base::mask)(ctype_base::alpha | ctype_base::lower), rbeg, rend);
-    CPPUNIT_ASSERT( res != rend );
-    CPPUNIT_ASSERT( *res == '1' );
-
-    res = ct.scan_not(ctype_base::alpha, rbeg, rend);
-    CPPUNIT_ASSERT( res != rend );
-    CPPUNIT_ASSERT( *res == '1' );
-
-    res = ct.scan_not(ctype_base::punct, rbeg, rend);
-    CPPUNIT_ASSERT( res != rend );
-    CPPUNIT_ASSERT( *res == 'a' );
-  }
-
-  //toupper
-  {
-    CPPUNIT_ASSERT( ct.toupper('a') == 'A' );
-    CPPUNIT_ASSERT( ct.toupper('A') == 'A' );
-    CPPUNIT_ASSERT( ct.toupper('1') == '1' );
-  }
-
-  //toupper range
-  {
-    char range[] = "abAc1";
-    char expected_range[] = "ABAC1";
-    ct.toupper(range, range + sizeof(range));
-    CPPUNIT_ASSERT( equal(range, range + sizeof(range), expected_range) );
-  }
-
-  //tolower
-  {
-    CPPUNIT_ASSERT( ct.tolower('A') == 'a' );
-    CPPUNIT_ASSERT( ct.tolower('a') == 'a' );
-    CPPUNIT_ASSERT( ct.tolower('1') == '1' );
-  }
-
-  //tolower range
-  {
-    char range[] = "ABaC1";
-    char expected_range[] = "abac1";
-    ct.tolower(range, range + sizeof(range));
-    CPPUNIT_ASSERT( equal(range, range + sizeof(range), expected_range) );
-  }
-
-  //widen
-  {
-    CPPUNIT_ASSERT( ct.widen('a') == 'a' );
-  }
-
-  //widen range
-  {
-    char range[] = "ABaC1";
-    char res[sizeof(range)];
-    ct.widen(range, range + sizeof(range), res);
-    CPPUNIT_ASSERT( equal(range, range + sizeof(range), res) );
-  }
-
-  //narrow
-  {
-    CPPUNIT_ASSERT( ct.narrow('a', 'b') == 'a' );
-  }
-
-  //narrow range
-  {
-    char range[] = "ABaC1";
-    char res[sizeof(range)];
-    ct.narrow(range, range + sizeof(range), 'b', res);
-    CPPUNIT_ASSERT( equal(range, range + sizeof(range), res) );
-  }
-}
-
-void LocaleTest::_ctype_facet_w( const locale& loc )
-{
-# ifndef _STLP_NO_WCHAR_T
-  CPPUNIT_ASSERT( has_facet<ctype<wchar_t> >(loc) );
-  ctype<wchar_t> const& wct = use_facet<ctype<wchar_t> >(loc);
-  //is
-  {
-    CPPUNIT_CHECK( wct.is(ctype_base::digit, L'0') );
-    CPPUNIT_CHECK( wct.is(ctype_base::upper, L'A') );
-    CPPUNIT_CHECK( wct.is(ctype_base::lower, L'a') );
-    CPPUNIT_CHECK( wct.is(ctype_base::alpha, L'A') );
-    CPPUNIT_CHECK( wct.is(ctype_base::space, L' ') );
-    CPPUNIT_CHECK( !wct.is(ctype_base::space, L'2') );
-    CPPUNIT_CHECK( wct.is(ctype_base::punct, L'.') );
-    CPPUNIT_CHECK( wct.is(ctype_base::xdigit, L'a') );
-  }
-
-  //is range
-  {
-    wchar_t values[] = L"0Aa .";
-    ctype_base::mask res[sizeof(values) / sizeof(wchar_t)];
-    wct.is(values, values + (sizeof(values) / sizeof(wchar_t)), res);
-    // '0'
-    CPPUNIT_CHECK( (res[0] & ctype_base::print) != 0 );
-    CPPUNIT_CHECK( (res[0] & ctype_base::digit) != 0 );
-    CPPUNIT_CHECK( (res[0] & ctype_base::xdigit) != 0 );
-    // 'A'
-    CPPUNIT_CHECK( (res[1] & ctype_base::print) != 0 );
-    CPPUNIT_CHECK( (res[1] & ctype_base::alpha) != 0 );
-    CPPUNIT_CHECK( (res[1] & ctype_base::xdigit) != 0 );
-    CPPUNIT_CHECK( (res[1] & ctype_base::upper) != 0 );
-    // 'a'
-    CPPUNIT_CHECK( (res[2] & ctype_base::print) != 0 );
-    CPPUNIT_CHECK( (res[2] & ctype_base::alpha) != 0 );
-    CPPUNIT_CHECK( (res[2] & ctype_base::xdigit) != 0 );
-    CPPUNIT_CHECK( (res[2] & ctype_base::lower) != 0 );
-    CPPUNIT_CHECK( (res[2] & ctype_base::space) == 0 );
-    // ' '
-    CPPUNIT_CHECK( (res[3] & ctype_base::print) != 0 );
-    CPPUNIT_CHECK( (res[3] & ctype_base::space) != 0 );
-    CPPUNIT_CHECK( (res[3] & ctype_base::digit) == 0 );
-    // '.'
-    CPPUNIT_CHECK( (res[4] & ctype_base::print) != 0 );
-    CPPUNIT_CHECK( (res[4] & ctype_base::punct) != 0 );
-    CPPUNIT_CHECK( (res[4] & ctype_base::digit) == 0 );
-  }
-
-  //scan_is
-  {
-    wchar_t range[] = L"abAc123 .";
-    const wchar_t *rbeg = range;
-    const wchar_t *rend = range + (sizeof(range) / sizeof(wchar_t));
-
-    const wchar_t *res;
-    res = wct.scan_is((ctype_base::mask)(ctype_base::alpha | ctype_base::lower), rbeg, rend);
-    CPPUNIT_CHECK( res != rend );
-    CPPUNIT_CHECK( *res == L'a' );
-
-    res = wct.scan_is(ctype_base::upper, rbeg, rend);
-    CPPUNIT_CHECK( res != rend );
-    CPPUNIT_CHECK( *res == L'A' );
-
-    res = wct.scan_is(ctype_base::punct, rbeg, rend);
-    CPPUNIT_CHECK( res != rend );
-    CPPUNIT_CHECK( *res == L'.' );
-  }
-
-  //scan_not
-  {
-    wchar_t range[] = L"abAc123 .";
-    const wchar_t *rbeg = range;
-    const wchar_t *rend = range + (sizeof(range) / sizeof(wchar_t));
-
-    const wchar_t *res;
-    res = wct.scan_not((ctype_base::mask)(ctype_base::alpha | ctype_base::lower), rbeg, rend);
-    CPPUNIT_CHECK( res != rend );
-    CPPUNIT_CHECK( *res == L'1' );
-
-    res = wct.scan_not(ctype_base::alpha, rbeg, rend);
-    CPPUNIT_CHECK( res != rend );
-    CPPUNIT_CHECK( *res == L'1' );
-
-    res = wct.scan_not(ctype_base::punct, rbeg, rend);
-    CPPUNIT_CHECK( res != rend );
-    CPPUNIT_CHECK( *res == L'a' );
-  }
-
-  //toupper
-  {
-    CPPUNIT_CHECK( wct.toupper(L'a') == L'A' );
-    CPPUNIT_CHECK( wct.toupper(L'A') == L'A' );
-    CPPUNIT_CHECK( wct.toupper(L'1') == L'1' );
-  }
-
-  //toupper range
-  {
-    wchar_t range[] = L"abAc1";
-    wchar_t expected_range[] = L"ABAC1";
-    wct.toupper(range, range + sizeof(range) / sizeof(wchar_t));
-    CPPUNIT_CHECK( equal(range, range + sizeof(range) / sizeof(wchar_t), expected_range) );
-  }
-
-  //tolower
-  {
-    CPPUNIT_CHECK( wct.tolower(L'A') == L'a' );
-    CPPUNIT_CHECK( wct.tolower(L'a') == L'a' );
-    CPPUNIT_CHECK( wct.tolower(L'1') == L'1' );
-  }
-
-  //tolower range
-  {
-    wchar_t range[] = L"ABaC1";
-    wchar_t expected_range[] = L"abac1";
-    wct.tolower(range, range + sizeof(range) / sizeof(wchar_t));
-    CPPUNIT_CHECK( equal(range, range + sizeof(range) / sizeof(wchar_t), expected_range) );
-  }
-
-  //widen
-  {
-    CPPUNIT_CHECK( wct.widen('a') == L'a' );
-  }
-
-  //widen range
-  {
-    char range[] = "ABaC1";
-    wchar_t res[sizeof(range)];
-    wchar_t expected_res[] = L"ABaC1";
-    wct.widen(range, range + sizeof(range), res);
-    CPPUNIT_CHECK( equal(expected_res, expected_res + sizeof(range), res) );
-  }
-
-  //narrow
-  {
-    CPPUNIT_CHECK( wct.narrow(L'a', 'b') == L'a' );
-  }
-
-  //narrow range
-  {
-    wchar_t range[] = L"ABaC1";
-    char res[sizeof(range) / sizeof(wchar_t)];
-    char expected_res[] = "ABaC1";
-    wct.narrow(range, range + sizeof(range) / sizeof(wchar_t), 'b', res);
-    CPPUNIT_CHECK( equal(expected_res, expected_res + sizeof(range) / sizeof(wchar_t), res) );
-  }
-# endif
-}
-
-
-typedef void (LocaleTest::*_Test) (const locale&);
-static void test_supported_locale(LocaleTest& inst, _Test __test) {
-  size_t n = sizeof(tested_locales) / sizeof(tested_locales[0]);
-  for (size_t i = 0; i < n; ++i) {
-    locale loc;
-#  if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
-    try
-#  endif
-    {
-      locale tmp(tested_locales[i]);
-      loc = tmp;
-    }
-#  if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
-    catch (runtime_error const&) {
-      //This locale is not supported.
-      continue;
-    }
-#  endif
-
-    CPPUNIT_MESSAGE( loc.name().c_str() );
-    (inst.*__test)(loc);
-
-    {
-      locale tmp(locale::classic(), tested_locales[i], locale::ctype);
-      loc = tmp;
-    }
-    (inst.*__test)(loc);
-
-    {
-      locale tmp(locale::classic(), new ctype_byname<char>(tested_locales[i]));
-#ifndef _STLP_NO_WCHAR_T
-      locale tmp0(tmp, new ctype_byname<wchar_t>(tested_locales[i]));
-      tmp = tmp0;
-#endif
-      loc = tmp;
-    }
-    (inst.*__test)(loc);
-  }
-}
-
-void LocaleTest::ctype_facet()
-{
-  test_supported_locale(*this, &LocaleTest::_ctype_facet);
-#ifndef _STLP_NO_WCHAR_T
-  test_supported_locale(*this, &LocaleTest::_ctype_facet_w);
-#endif
-}
-
-void LocaleTest::ctype_by_name()
-{
-  /*
-   * Check of the 22.1.1.2.7 standard point. Construction of a locale
-   * instance from a null pointer or an unknown name should result in
-   * a runtime_error exception.
-   */
-#  if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS)
-#    if  defined (STLPORT) || (!defined(__GNUC__) && (!defined (_MSC_VER) || (_MSC_VER > 1400)))
-   // libstdc++ call freelocate on bad locale
-  try {
-    locale loc(locale::classic(), new ctype_byname<char>(static_cast<char const*>(0)));
-    CPPUNIT_ASSERT( false );
-  }
-  catch (runtime_error const& /* e */) {
-    //CPPUNIT_MESSAGE( e.what() );
-  }
-  catch (...) {
-    CPPUNIT_ASSERT( false );
-  }
-#    endif
-
-  try {
-    locale loc(locale::classic(), new ctype_byname<char>("yasli_language"));
-    CPPUNIT_FAIL;
-  }
-  catch (runtime_error const& /* e */) {
-    //CPPUNIT_MESSAGE( e.what() );
-  }
-  catch (...) {
-    CPPUNIT_FAIL;
-  }
-
-#    if  defined(STLPORT) || !defined(__GNUC__)
-  try {
-    locale loc(locale::classic(), new codecvt_byname<char, char, mbstate_t>(static_cast<char const*>(0)));
-    CPPUNIT_FAIL;
-  }
-  catch (runtime_error const& /* e */) {
-    //CPPUNIT_MESSAGE( e.what() );
-  }
-  catch (...) {
-    CPPUNIT_FAIL;
-  }
-#    endif
-
-  try {
-    locale loc(locale::classic(), new codecvt_byname<char, char, mbstate_t>("yasli_language"));
-    //STLport implementation do not care about name pass to this facet.
-#    if !defined (STLPORT)
-    CPPUNIT_FAIL;
-#    endif
-  }
-  catch (runtime_error const& /* e */) {
-    //CPPUNIT_MESSAGE( e.what() );
-  }
-  catch (...) {
-    CPPUNIT_FAIL;
-  }
-
-  try {
-    locale loc(locale::classic(), new ctype_byname<char>("fr_FR"));
-    CPPUNIT_ASSERT( has_facet<ctype<char> >(loc) );
-    ctype<char> const& ct = use_facet<ctype<char> >(loc);
-    CPPUNIT_ASSERT( ct.is(ctype_base::mask(ctype_base::print | ctype_base::lower | ctype_base::alpha), 'รง') );
-  }
-  catch (runtime_error const& /* e */) {
-    //CPPUNIT_MESSAGE( e.what() );
-  }
-  catch (...) {
-    CPPUNIT_FAIL;
-  }
-
-  try {
-    locale loc(locale::classic(), new ctype_byname<char>("C"));
-    ctype<char> const& cfacet_byname = use_facet<ctype<char> >(loc);
-    ctype<char> const& cfacet = use_facet<ctype<char> >(locale::classic());
-
-    for (char c = 0;; ++c) {
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::space, c) == cfacet.is(ctype_base::space, c));
-      if (cfacet_byname.is(ctype_base::print, c) != cfacet.is(ctype_base::print, c))
-      {
-        CPPUNIT_CHECK(cfacet_byname.is(ctype_base::print, c) == cfacet.is(ctype_base::print, c));
-      }
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::cntrl, c) == cfacet.is(ctype_base::cntrl, c));
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::upper, c) == cfacet.is(ctype_base::upper, c));
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::lower, c) == cfacet.is(ctype_base::lower, c));
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::alpha, c) == cfacet.is(ctype_base::alpha, c));
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::digit, c) == cfacet.is(ctype_base::digit, c));
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::punct, c) == cfacet.is(ctype_base::punct, c));
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::xdigit, c) == cfacet.is(ctype_base::xdigit, c));
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::alnum, c) == cfacet.is(ctype_base::alnum, c));
-      CPPUNIT_CHECK(cfacet_byname.is(ctype_base::graph, c) == cfacet.is(ctype_base::graph, c));
-      if (c == 127) break;
-    }
-  }
-  catch (runtime_error const& /* e */) {
-    /* CPPUNIT_MESSAGE( e.what() ); */
-    CPPUNIT_FAIL;
-  }
-  catch (...) {
-    CPPUNIT_FAIL;
-  }
-
-#    if !defined (STLPORT) || !defined (_STLP_NO_WCHAR_T)
-#      if  defined(STLPORT) || !defined(__GNUC__)
-  try {
-    locale loc(locale::classic(), new ctype_byname<wchar_t>(static_cast<char const*>(0)));
-    CPPUNIT_FAIL;
-  }
-  catch (runtime_error const&) {
-  }
-  catch (...) {
-    CPPUNIT_FAIL;
-  }
-#      endif
-
-  try {
-    locale loc(locale::classic(), new ctype_byname<wchar_t>("yasli_language"));
-    CPPUNIT_FAIL;
-  }
-  catch (runtime_error const&) {
-  }
-  catch (...) {
-    CPPUNIT_FAIL;
-  }
-
-#      if  defined(STLPORT) || !defined(__GNUC__)
-  try {
-    locale loc(locale::classic(), new codecvt_byname<wchar_t, char, mbstate_t>(static_cast<char const*>(0)));
-    CPPUNIT_FAIL;
-  }
-  catch (runtime_error const& /* e */) {
-    //CPPUNIT_MESSAGE( e.what() );
-  }
-  catch (...) {
-    CPPUNIT_FAIL;
-  }
-#      endif
-
-  try {
-    locale loc(locale::classic(), new codecvt_byname<wchar_t, char, mbstate_t>("yasli_language"));
-    CPPUNIT_FAIL;
-  }
-  catch (runtime_error const& /* e */) {
-    //CPPUNIT_MESSAGE( e.what() );
-  }
-  catch (...) {
-    CPPUNIT_FAIL;
-  }
-#    endif
-#  endif
-}
-
-#endif