X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/473464069216bb835735a6c164ee769679a0ab03..3f7c8a876271eafa909c55293e3e999593ba4ade:/tests/strings/vararg.cpp diff --git a/tests/strings/vararg.cpp b/tests/strings/vararg.cpp index 556dd74ca2..1cc62ba3f0 100644 --- a/tests/strings/vararg.cpp +++ b/tests/strings/vararg.cpp @@ -41,6 +41,7 @@ private: CPPUNIT_TEST( StdString ); #endif CPPUNIT_TEST( Sscanf ); + CPPUNIT_TEST( RepeatedPrintf ); CPPUNIT_TEST_SUITE_END(); void StringPrintf(); @@ -49,6 +50,7 @@ private: void StdString(); #endif void Sscanf(); + void RepeatedPrintf(); DECLARE_NO_COPY_CLASS(VarArgTestCase) }; @@ -102,25 +104,33 @@ void VarArgTestCase::CharPrintf() // test using wchar_t: s.Printf("char=%c", L'c'); - WX_ASSERT_STR_EQUAL( "char=c", s ); + CPPUNIT_ASSERT_EQUAL( "char=c", s ); // test wxUniCharRef: s.Printf("string[1] is %c", foo[1]); - WX_ASSERT_STR_EQUAL( "string[1] is o", s ); + CPPUNIT_ASSERT_EQUAL( "string[1] is o", s ); // test char char c = 'z'; s.Printf("%c to %c", 'a', c); - WX_ASSERT_STR_EQUAL( "a to z", s ); + CPPUNIT_ASSERT_EQUAL( "a to z", s ); // test char used as integer: + #ifdef _MSC_VER + #pragma warning(disable:4305) // truncation of constant value in VC6 + #pragma warning(disable:4309) // truncation of constant value + #endif c = 240; + #ifdef _MSC_VER + #pragma warning(default:4305) // truncation of constant value in VC6 + #pragma warning(default:4309) + #endif s.Printf("value is %i (int)", c); - WX_ASSERT_STR_EQUAL( wxString("value is -16 (int)"), s ); + CPPUNIT_ASSERT_EQUAL( wxString("value is -16 (int)"), s ); unsigned char u = 240; s.Printf("value is %i (int)", u); - WX_ASSERT_STR_EQUAL( wxString("value is 240 (int)"), s ); + CPPUNIT_ASSERT_EQUAL( "value is 240 (int)", s ); } #if wxUSE_STD_STRING @@ -133,10 +143,10 @@ void VarArgTestCase::StdString() std::string wc("widechar"); s.Printf("string %s(%i).", mb, 1); - CPPUNIT_ASSERT( s == "string multi-byte(1)." ); + CPPUNIT_ASSERT_EQUAL( "string multi-byte(1).", s ); s.Printf("string %s(%i).", wc, 2); - CPPUNIT_ASSERT( s == "string widechar(2)." ); + CPPUNIT_ASSERT_EQUAL( "string widechar(2).", s ); } #endif // wxUSE_STD_STRING @@ -157,3 +167,19 @@ void VarArgTestCase::Sscanf() CPPUNIT_ASSERT( i == 42 ); CPPUNIT_ASSERT( wxStrcmp(wstr, "test") == 0 ); } + +void VarArgTestCase::RepeatedPrintf() +{ + wxCharBuffer buffer(2); + char *p = buffer.data(); + *p = 'h'; + p++; + *p = 'i'; + + wxString s; + s = wxString::Format("buffer %s, len %d", buffer, wxStrlen(buffer)); + CPPUNIT_ASSERT_EQUAL("buffer hi, len 2", s); + + s = wxString::Format("buffer %s, len %d", buffer, wxStrlen(buffer)); + CPPUNIT_ASSERT_EQUAL("buffer hi, len 2", s); +}