X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6becc1e617c65cde68e7e6fcdad27e366bf51792..63509fb3c424dd69d8f5db35f7ae16950b9a3595:/tests/strings/strings.cpp diff --git a/tests/strings/strings.cpp b/tests/strings/strings.cpp index 4d7664115e..af18513045 100644 --- a/tests/strings/strings.cpp +++ b/tests/strings/strings.cpp @@ -104,7 +104,7 @@ private: // register in the unnamed registry so that these tests are run by default CPPUNIT_TEST_SUITE_REGISTRATION( StringTestCase ); -// also include in it's own registry so that these tests can be run alone +// also include in its own registry so that these tests can be run alone CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( StringTestCase, "StringTestCase" ); StringTestCase::StringTestCase() @@ -762,25 +762,30 @@ void StringTestCase::FromDouble() static const struct FromDoubleTestData { double value; + int prec; const char *str; } testData[] = { - { 1.23, "1.23" }, + { 1.23, -1, "1.23" }, // NB: there are no standards about the minimum exponent width // and newer MSVC versions use 3 digits as minimum exponent // width while GNU libc uses 2 digits as minimum width... #ifdef wxUSING_VC_CRT_IO - { -3e-10, "-3e-010" }, + { -3e-10, -1, "-3e-010" }, #else - { -3e-10, "-3e-10" }, + { -3e-10, -1, "-3e-10" }, #endif - { -0.45678, "-0.45678" }, + { -0.45678, -1, "-0.45678" }, + { 1.2345678, 0, "1" }, + { 1.2345678, 1, "1.2" }, + { 1.2345678, 2, "1.23" }, + { 1.2345678, 3, "1.235" }, }; for ( unsigned n = 0; n < WXSIZEOF(testData); n++ ) { const FromDoubleTestData& td = testData[n]; - CPPUNIT_ASSERT_EQUAL( td.str, wxString::FromCDouble(td.value) ); + CPPUNIT_ASSERT_EQUAL( td.str, wxString::FromCDouble(td.value, td.prec) ); } if ( !wxLocale::IsAvailable(wxLANGUAGE_FRENCH) ) @@ -795,7 +800,7 @@ void StringTestCase::FromDouble() wxString str(td.str); str.Replace(".", ","); - CPPUNIT_ASSERT_EQUAL( str, wxString::FromDouble(td.value) ); + CPPUNIT_ASSERT_EQUAL( str, wxString::FromDouble(td.value, td.prec) ); } } @@ -968,38 +973,48 @@ void StringTestCase::IndexedAccess() void StringTestCase::BeforeAndAfter() { - const wxString s(L"letter=\xe9;\xe7a=l\xe0"); + // Construct a string with 2 equal signs in it by concatenating its three + // parts: before the first "=", in between the two "="s and after the last + // one. This allows to avoid duplicating the string contents (which has to + // be different for Unicode and ANSI builds) in the tests below. +#if wxUSE_UNICODE + #define FIRST_PART L"letter" + #define MIDDLE_PART L"\xe9;\xe7a" + #define LAST_PART L"l\xe0" +#else // !wxUSE_UNICODE + #define FIRST_PART "letter" + #define MIDDLE_PART "e;ca" + #define LAST_PART "la" +#endif // wxUSE_UNICODE/!wxUSE_UNICODE + + const wxString s(FIRST_PART wxT("=") MIDDLE_PART wxT("=") LAST_PART); wxString r; - CPPUNIT_ASSERT_EQUAL( "letter", s.BeforeFirst('=', &r) ); - CPPUNIT_ASSERT_EQUAL( L"\xe9;\xe7a=l\xe0", r ); + CPPUNIT_ASSERT_EQUAL( FIRST_PART, s.BeforeFirst('=', &r) ); + CPPUNIT_ASSERT_EQUAL( MIDDLE_PART wxT("=") LAST_PART, r ); CPPUNIT_ASSERT_EQUAL( s, s.BeforeFirst('!', &r) ); CPPUNIT_ASSERT_EQUAL( "", r ); - CPPUNIT_ASSERT_EQUAL( L"letter=\xe9", s.BeforeFirst(';', &r) ); - CPPUNIT_ASSERT_EQUAL( L"\xe7a=l\xe0", r ); - - CPPUNIT_ASSERT_EQUAL( L"letter=\xe9;\xe7a", s.BeforeLast('=', &r) ); - CPPUNIT_ASSERT_EQUAL( L"l\xe0", r ); + CPPUNIT_ASSERT_EQUAL( FIRST_PART wxT("=") MIDDLE_PART, s.BeforeLast('=', &r) ); + CPPUNIT_ASSERT_EQUAL( LAST_PART, r ); CPPUNIT_ASSERT_EQUAL( "", s.BeforeLast('!', &r) ); CPPUNIT_ASSERT_EQUAL( s, r ); - CPPUNIT_ASSERT_EQUAL( L"letter=\xe9", s.BeforeLast(';', &r) ); - CPPUNIT_ASSERT_EQUAL( L"\xe7a=l\xe0", r ); - - CPPUNIT_ASSERT_EQUAL( L"\xe9;\xe7a=l\xe0", s.AfterFirst('=') ); + CPPUNIT_ASSERT_EQUAL( MIDDLE_PART wxT("=") LAST_PART, s.AfterFirst('=') ); CPPUNIT_ASSERT_EQUAL( "", s.AfterFirst('!') ); - CPPUNIT_ASSERT_EQUAL( L"\xe7a=l\xe0", s.AfterFirst(';') ); - CPPUNIT_ASSERT_EQUAL( L"l\xe0", s.AfterLast('=') ); + CPPUNIT_ASSERT_EQUAL( LAST_PART, s.AfterLast('=') ); CPPUNIT_ASSERT_EQUAL( s, s.AfterLast('!') ); - CPPUNIT_ASSERT_EQUAL( L"\xe7a=l\xe0", s.AfterLast(';') ); + + #undef LAST_PART + #undef MIDDLE_PART + #undef FIRST_PART } void StringTestCase::ScopedBuffers()