X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/42e8b52f09490be1d963a7159743ec2aaa714203..b5fe7ca67bf3121959a0b5a59afd00c1708f2f03:/tests/strings/unicode.cpp diff --git a/tests/strings/unicode.cpp b/tests/strings/unicode.cpp index db32c6d06c..1110b3f29d 100644 --- a/tests/strings/unicode.cpp +++ b/tests/strings/unicode.cpp @@ -27,8 +27,13 @@ // to it should fail struct StringConversionData { - const char *str; - const wchar_t *wcs; + StringConversionData(const char *str_, const wchar_t *wcs_, int flags_ = 0) + : str(str_), wcs(wcs_), flags(flags_) + { + } + + const char * const str; + const wchar_t * const wcs; enum { @@ -36,7 +41,7 @@ struct StringConversionData ONLY_MB2WC = 1 // only test str -> wcs conversion }; - int flags; + const int flags; // test that the conversion between str and wcs (subject to flags) succeeds // @@ -198,13 +203,13 @@ void UnicodeTestCase::ConstructorsWithConversion() #if wxUSE_UNICODE const wchar_t wchar[] = {0x44,0xE9,0x6A,0xE0,0}; - WX_ASSERT_STR_EQUAL( wchar, s1 ); + CPPUNIT_ASSERT_EQUAL( wchar, s1 ); wxString s2(wchar); - WX_ASSERT_STR_EQUAL( wchar, s2 ); - WX_ASSERT_STR_EQUAL( utf8, s2 ); + CPPUNIT_ASSERT_EQUAL( wchar, s2 ); + CPPUNIT_ASSERT_EQUAL( utf8, s2 ); #else - WX_ASSERT_STR_EQUAL( utf8, s1 ); + CPPUNIT_ASSERT_EQUAL( utf8, s1 ); #endif wxString sub(utf8sub, wxConvUTF8); // "Dej" substring @@ -224,12 +229,12 @@ void UnicodeTestCase::ConstructorsWithConversion() // test using Unicode strings together with char* strings (this must work // in ANSI mode as well, of course): wxString s5("ascii"); - WX_ASSERT_STR_EQUAL( "ascii", s5 ); + CPPUNIT_ASSERT_EQUAL( "ascii", s5 ); s5 += " value"; CPPUNIT_ASSERT( strcmp(s5.mb_str(), "ascii value") == 0 ); - WX_ASSERT_STR_EQUAL( "ascii value", s5 ); + CPPUNIT_ASSERT_EQUAL( "ascii value", s5 ); CPPUNIT_ASSERT( s5 != "SomethingElse" ); } @@ -238,12 +243,12 @@ void UnicodeTestCase::ConversionEmpty() size_t len; #if wxUSE_UNICODE - wxCharBuffer buf = wxConvLibc.cWC2MB(L"", 0, &len); + wxConvLibc.cWC2MB(L"", 0, &len); #else // !wxUSE_UNICODE - wxWCharBuffer wbuf = wxConvLibc.cMB2WC("", 0, &len); + wxConvLibc.cMB2WC("", 0, &len); #endif // wxUSE_UNICODE/!wxUSE_UNICODE - CPPUNIT_ASSERT(len == 0); + CPPUNIT_ASSERT_EQUAL( 0, len ); } void UnicodeTestCase::ConversionWithNULs() @@ -281,21 +286,22 @@ void UnicodeTestCase::ConversionUTF7() static const StringConversionData utf7data[] = { // normal fragments - { "+AKM-", L"\xa3" }, - { "+AOk-t+AOk-", L"\xe9t\xe9" }, + StringConversionData("+AKM-", L"\xa3"), + StringConversionData("+AOk-t+AOk-", L"\xe9t\xe9"), // this one is an alternative valid encoding of the same string - { "+AOk-t+AOk", L"\xe9t\xe9", StringConversionData::ONLY_MB2WC }, + StringConversionData("+AOk-t+AOk", L"\xe9t\xe9", + StringConversionData::ONLY_MB2WC), // some special cases - { "+-", L"+" }, - { "+--", L"+-" }, + StringConversionData("+-", L"+"), + StringConversionData("+--", L"+-"), // the following are invalid UTF-7 sequences - { "\xa3", NULL }, - { "+", NULL }, - { "+~", NULL }, - { "a+", NULL }, + StringConversionData("\xa3", NULL), + StringConversionData("+", NULL), + StringConversionData("+~", NULL), + StringConversionData("a+", NULL), }; for ( size_t n = 0; n < WXSIZEOF(utf7data); n++ ) @@ -322,9 +328,9 @@ void UnicodeTestCase::ConversionUTF8() static const StringConversionData utf8data[] = { #ifdef wxHAVE_U_ESCAPE - { "\xc2\xa3", L"\u00a3" }, + StringConversionData("\xc2\xa3", L"\u00a3"), #endif - { "\xc2", NULL }, + StringConversionData("\xc2", NULL), }; wxCSConv conv(_T("utf-8")); @@ -341,11 +347,14 @@ void UnicodeTestCase::ConversionUTF16() static const StringConversionData utf16data[] = { #ifdef wxHAVE_U_ESCAPE - { "\x04\x1f\x04\x40\x04\x38\x04\x32\x04\x35\x04\x42\0\0", - L"\u041f\u0440\u0438\u0432\u0435\u0442" }, - { "\x01\0\0b\x01\0\0a\x01\0\0r\0\0", L"\u0100b\u0100a\u0100r" }, + StringConversionData( + "\x04\x1f\x04\x40\x04\x38\x04\x32\x04\x35\x04\x42\0\0", + L"\u041f\u0440\u0438\u0432\u0435\u0442"), + StringConversionData( + "\x01\0\0b\x01\0\0a\x01\0\0r\0\0", + L"\u0100b\u0100a\u0100r"), #endif - { "\0f\0o\0o\0\0", L"foo" }, + StringConversionData("\0f\0o\0o\0\0", L"foo"), }; wxCSConv conv(wxFONTENCODING_UTF16BE); @@ -359,8 +368,8 @@ void UnicodeTestCase::ConversionUTF16() // terminate the string, this exposed a bug in our conversion code which // got confused in this case size_t len; - wxWCharBuffer wbuf(conv.cMB2WC("\x01\0\0B\0C" /* A macron BC */, 6, &len)); - CPPUNIT_ASSERT_EQUAL( (size_t)3, len ); + conv.cMB2WC("\x01\0\0B\0C" /* A macron BC */, 6, &len); + CPPUNIT_ASSERT_EQUAL( 3, len ); } void UnicodeTestCase::ConversionUTF32() @@ -368,11 +377,11 @@ void UnicodeTestCase::ConversionUTF32() static const StringConversionData utf32data[] = { #ifdef wxHAVE_U_ESCAPE - { + StringConversionData( "\0\0\x04\x1f\0\0\x04\x40\0\0\x04\x38\0\0\x04\x32\0\0\x04\x35\0\0\x04\x42\0\0\0\0", - L"\u041f\u0440\u0438\u0432\u0435\u0442" }, + L"\u041f\u0440\u0438\u0432\u0435\u0442"), #endif - { "\0\0\0f\0\0\0o\0\0\0o\0\0\0\0", L"foo" }, + StringConversionData("\0\0\0f\0\0\0o\0\0\0o\0\0\0\0", L"foo"), }; wxCSConv conv(wxFONTENCODING_UTF32BE); @@ -383,19 +392,19 @@ void UnicodeTestCase::ConversionUTF32() } size_t len; - wxWCharBuffer wbuf(conv.cMB2WC("\0\0\x01\0\0\0\0B\0\0\0C" /* A macron BC */, - 12, &len)); - CPPUNIT_ASSERT_EQUAL( (size_t)3, len ); + conv.cMB2WC("\0\0\x01\0\0\0\0B\0\0\0C" /* A macron BC */, 12, &len); + CPPUNIT_ASSERT_EQUAL( 3, len ); } void UnicodeTestCase::IsConvOk() { CPPUNIT_ASSERT( wxCSConv(wxFONTENCODING_SYSTEM).IsOk() ); - CPPUNIT_ASSERT( wxCSConv(_T("UTF-8")).IsOk() ); - CPPUNIT_ASSERT( !wxCSConv(_T("NoSuchConversion")).IsOk() ); + CPPUNIT_ASSERT( wxCSConv("US-ASCII").IsOk() ); + CPPUNIT_ASSERT( wxCSConv("UTF-8").IsOk() ); + CPPUNIT_ASSERT( !wxCSConv("NoSuchConversion").IsOk() ); #ifdef __WINDOWS__ - CPPUNIT_ASSERT( wxCSConv(_T("WINDOWS-437")).IsOk() ); + CPPUNIT_ASSERT( wxCSConv("WINDOWS-437").IsOk() ); #endif }