X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/359bd4d1a20bdd5c6374f25779a43e92eebe9a1d..55fbde1232bff0ed44c23775911574ac1b2f8a0a:/tests/strings/vararg.cpp diff --git a/tests/strings/vararg.cpp b/tests/strings/vararg.cpp index 52fdcfec60..de259e3534 100644 --- a/tests/strings/vararg.cpp +++ b/tests/strings/vararg.cpp @@ -36,9 +36,17 @@ public: private: CPPUNIT_TEST_SUITE( VarArgTestCase ); CPPUNIT_TEST( StringPrintf ); +#if wxUSE_STD_STRING + CPPUNIT_TEST( StdString ); +#endif + CPPUNIT_TEST( Sscanf ); CPPUNIT_TEST_SUITE_END(); void StringPrintf(); +#if wxUSE_STD_STRING + void StdString(); +#endif + void Sscanf(); DECLARE_NO_COPY_CLASS(VarArgTestCase) }; @@ -65,6 +73,9 @@ void VarArgTestCase::StringPrintf() s2.Printf(_T("[%s](%s)"), s.c_str(), "str"); CPPUNIT_ASSERT( s2 == "[bar = 11](str)" ); + s2.Printf("%s mailbox", wxString("Opening").c_str()); + CPPUNIT_ASSERT( s2 == "Opening mailbox" ); + // test passing wxString directly: s2.Printf(_T("[%s](%s)"), s, "str"); CPPUNIT_ASSERT( s2 == "[bar = 11](str)" ); @@ -75,4 +86,45 @@ void VarArgTestCase::StringPrintf() CPPUNIT_ASSERT( s2 == "(FooBar)" ); s2.Printf(_T("value=%s;"), s.wc_str()); CPPUNIT_ASSERT( s2 == "value=FooBar;" ); + + // this tests correct passing of wxCStrData constructed from string + // literal: + bool cond = true; + s2.Printf(_T("foo %s"), !cond ? s.c_str() : _T("bar")); + +} + +#if wxUSE_STD_STRING +void VarArgTestCase::StdString() +{ + // test passing std::[w]string + wxString s; + + std::string mb("multi-byte"); + std::string wc("widechar"); + + s.Printf("string %s(%i).", mb, 1); + CPPUNIT_ASSERT( s == "string multi-byte(1)." ); + + s.Printf("string %s(%i).", wc, 2); + CPPUNIT_ASSERT( s == "string widechar(2)." ); +} +#endif // wxUSE_STD_STRING + +void VarArgTestCase::Sscanf() +{ + int i = 0; + char str[20]; + wchar_t wstr[20]; + + wxString input("42 test"); + + wxSscanf(input, "%d %s", &i, &str); + CPPUNIT_ASSERT( i == 42 ); + CPPUNIT_ASSERT( wxStrcmp(str, "test") == 0 ); + + i = 0; + wxSscanf(input, L"%d %s", &i, &wstr); + CPPUNIT_ASSERT( i == 42 ); + CPPUNIT_ASSERT( wxStrcmp(wstr, "test") == 0 ); }