// the common test code // void tempStream::DoTest(Action action, bool shouldHaveCommited) { TestFile temp; { wxTempFileOutputStream out(temp.GetName()); out.Write("Affer", 5); CPPUNIT_ASSERT(out.SeekO(2) == 2); out.Write("t", 1); CPPUNIT_ASSERT(out.IsSeekable()); CPPUNIT_ASSERT(out.GetLength() == 5); CPPUNIT_ASSERT(out.TellO() == 3); switch (action) { case DONOTHING: break; case COMMIT: out.Commit(); break; case DISCARD: out.Discard(); break; case CLOSE: out.Close(); } } wxFileInputStream in(temp.GetName()); char buf[32]; in.Read(buf, sizeof(buf)); buf[in.LastRead()] = 0; CPPUNIT_ASSERT(strcmp(buf, shouldHaveCommited ? "After" : "Before") == 0); }
void FileTestCase::DoRoundTripTest(const wxMBConv& conv) { TestFile tf; // Explicit length is needed because of the embedded NUL. const wxString data("Hello\0UTF!", 10); { wxFile fout(tf.GetName(), wxFile::write); CPPUNIT_ASSERT( fout.IsOpened() ); CPPUNIT_ASSERT( fout.Write(data, conv) ); } { wxFile fin(tf.GetName(), wxFile::read); CPPUNIT_ASSERT( fin.IsOpened() ); const ssize_t len = fin.Length(); wxCharBuffer buf(len); CPPUNIT_ASSERT_EQUAL( len, fin.Read(buf.data(), len) ); wxString dataReadBack(buf, conv, len); CPPUNIT_ASSERT_EQUAL( data, dataReadBack ); } }
void FileTestCase::DoRoundTripTest(const wxMBConv& conv) { TestFile tf; const wxString data = "Hello\0UTF"; { wxFile fout(tf.GetName(), wxFile::write); CPPUNIT_ASSERT( fout.IsOpened() ); CPPUNIT_ASSERT( fout.Write(data, conv) ); } { wxFile fin(tf.GetName(), wxFile::read); CPPUNIT_ASSERT( fin.IsOpened() ); const ssize_t len = fin.Length(); wxCharBuffer buf(len); CPPUNIT_ASSERT_EQUAL( len, fin.Read(buf.data(), len) ); wxWCharBuffer wbuf(conv.cMB2WC(buf)); #if wxUSE_UNICODE CPPUNIT_ASSERT_EQUAL( data, wbuf ); #else // !wxUSE_UNICODE CPPUNIT_ASSERT ( memcmp(wbuf, L"Hello\0UTF", data.length()*sizeof(wchar_t)) == 0 ); #endif // wxUSE_UNICODE/!wxUSE_UNICODE } }
void FileTestCase::ReadAll() { TestFile tf; const char* text = "Ream\nde"; { wxFile fout(tf.GetName(), wxFile::write); CPPUNIT_ASSERT( fout.IsOpened() ); fout.Write(text, strlen(text)); CPPUNIT_ASSERT( fout.Close() ); } { wxFile fin(tf.GetName(), wxFile::read); CPPUNIT_ASSERT( fin.IsOpened() ); wxString s; CPPUNIT_ASSERT( fin.ReadAll(&s) ); CPPUNIT_ASSERT_EQUAL( text, s ); } }