fix wxStringOutputStream to deal with NUL bytes correctly (incidentally fixes bug 1792727, part of patch 1795174)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48702 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-09-15 00:32:54 +00:00
parent 49297c840b
commit a7b9ab6200
2 changed files with 30 additions and 3 deletions

View File

@@ -56,16 +56,21 @@ public:
//CPPUNIT_TEST(Output_TellO);
// Other test specific for String stream test case.
CPPUNIT_TEST(Output_Check);
CPPUNIT_TEST_SUITE_END();
protected:
// Add own test here.
void Output_Check();
private:
// Implement base class functions.
virtual wxStringInputStream *DoCreateInStream();
virtual wxStringOutputStream *DoCreateOutStream();
// output the given string to wxStringOutputStream and check that its
// contents is exactly the same string
void CheckString(const wxString& text);
wxString m_str;
};
@@ -97,6 +102,27 @@ wxStringOutputStream *strStream::DoCreateOutStream()
return pStrOutStream;
}
void strStream::CheckString(const wxString& text)
{
wxStringOutputStream sos;
size_t len = text.length();
#if wxUSE_UNICODE
const wxCharBuffer textMB(wxConvLibc.cWC2MB(text.wc_str(), len + 1, &len));
#else
const char *textMB = text.c_str();
#endif
sos.Write(textMB, len);
CPPUNIT_ASSERT_EQUAL( text, sos.GetString() );
}
void strStream::Output_Check()
{
CheckString("Hello world!");
CheckString(wxString("hi\0dden", 8));
}
// Register the stream sub suite, by using some stream helper macro.
STREAM_TEST_SUBSUITE_NAMED_REGISTRATION(strStream)