X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0739e2eef923040b51c664a22c7a6765fbd8a6f1..0c7e0a87719f1034c8a9b3e748f5e0ca1cdaeb13:/tests/strings/unicode.cpp diff --git a/tests/strings/unicode.cpp b/tests/strings/unicode.cpp index 5061b9e72a..7a0303bd89 100644 --- a/tests/strings/unicode.cpp +++ b/tests/strings/unicode.cpp @@ -53,6 +53,7 @@ private: CPPUNIT_TEST( ToFromAscii ); #if wxUSE_WCHAR_T CPPUNIT_TEST( ConstructorsWithConversion ); + CPPUNIT_TEST( ConversionEmpty ); CPPUNIT_TEST( ConversionWithNULs ); CPPUNIT_TEST( ConversionUTF7 ); CPPUNIT_TEST( ConversionUTF8 ); @@ -64,6 +65,7 @@ private: void ToFromAscii(); #if wxUSE_WCHAR_T void ConstructorsWithConversion(); + void ConversionEmpty(); void ConversionWithNULs(); void ConversionUTF7(); void ConversionUTF8(); @@ -85,7 +87,7 @@ private: CPPUNIT_TEST_SUITE_REGISTRATION( UnicodeTestCase ); // also include in it's own registry so that these tests can be run alone -CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( UnicodeTestCase, "UnicodeTestCase" ); +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( UnicodeTestCase, "Unicode" ); UnicodeTestCase::UnicodeTestCase() { @@ -139,33 +141,46 @@ void UnicodeTestCase::ConstructorsWithConversion() #endif } +void UnicodeTestCase::ConversionEmpty() +{ + size_t len; + +#if wxUSE_UNICODE + wxCharBuffer buf = wxConvLibc.cWC2MB(L"", 0, &len); +#else // !wxUSE_UNICODE + wxWCharBuffer wbuf = wxConvLibc.cMB2WC("", 0, &len); +#endif // wxUSE_UNICODE/!wxUSE_UNICODE + + CPPUNIT_ASSERT(len == 0); +} + void UnicodeTestCase::ConversionWithNULs() { #if wxUSE_UNICODE - static const size_t lenNulString = 10; + static const size_t lenNulString = 10; - wxString szTheString(L"The\0String", wxConvLibc, lenNulString); - wxCharBuffer theBuffer = szTheString.mb_str(); + wxString szTheString(L"The\0String", wxConvLibc, lenNulString); + wxCharBuffer theBuffer = szTheString.mb_str(); - CPPUNIT_ASSERT( memcmp(theBuffer.data(), "The\0String", - lenNulString + 1) == 0 ); + CPPUNIT_ASSERT( memcmp(theBuffer.data(), "The\0String", + lenNulString + 1) == 0 ); - wxString szTheString2("The\0String", wxConvLocal, lenNulString); - CPPUNIT_ASSERT_EQUAL( lenNulString, szTheString2.length() ); - CPPUNIT_ASSERT( wxTmemcmp(szTheString2.c_str(), L"The\0String", - lenNulString + 1) == 0 ); + wxString szTheString2("The\0String", wxConvLocal, lenNulString); + CPPUNIT_ASSERT_EQUAL( lenNulString, szTheString2.length() ); + CPPUNIT_ASSERT( wxTmemcmp(szTheString2.c_str(), L"The\0String", + lenNulString + 1) == 0 ); #else // !wxUSE_UNICODE - wxString szTheString(wxT("TheString")); - szTheString.insert(3, 1, '\0'); - wxWCharBuffer theBuffer = szTheString.wc_str(wxConvLibc); + wxString szTheString(wxT("TheString")); + szTheString.insert(3, 1, '\0'); + wxWCharBuffer theBuffer = szTheString.wc_str(wxConvLibc); - CPPUNIT_ASSERT( memcmp(theBuffer.data(), L"The\0String", 11 * sizeof(wchar_t)) == 0 ); + CPPUNIT_ASSERT( memcmp(theBuffer.data(), L"The\0String", 11 * sizeof(wchar_t)) == 0 ); - wxString szLocalTheString(wxT("TheString")); - szLocalTheString.insert(3, 1, '\0'); - wxWCharBuffer theLocalBuffer = szLocalTheString.wc_str(wxConvLocal); + wxString szLocalTheString(wxT("TheString")); + szLocalTheString.insert(3, 1, '\0'); + wxWCharBuffer theLocalBuffer = szLocalTheString.wc_str(wxConvLocal); - CPPUNIT_ASSERT( memcmp(theLocalBuffer.data(), L"The\0String", 11 * sizeof(wchar_t)) == 0 ); + CPPUNIT_ASSERT( memcmp(theLocalBuffer.data(), L"The\0String", 11 * sizeof(wchar_t)) == 0 ); #endif // wxUSE_UNICODE/!wxUSE_UNICODE }