X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/08776b09141acf2a1365152d1b3424dce43ae89d..442a960c14ed6ee691b5de2d35d962113bf86771:/tests/streams/bstream.h diff --git a/tests/streams/bstream.h b/tests/streams/bstream.h index 4d1029ac3f..fc2d6fb237 100644 --- a/tests/streams/bstream.h +++ b/tests/streams/bstream.h @@ -11,7 +11,6 @@ #define _WX_TESTBSTREAM_H__ #include "wx/cppunit.h" -using namespace CppUnit; /////////////////////////////////////////////////////////////////////////////// // Some macros preventing us from typing too much ;-) @@ -21,10 +20,10 @@ using namespace CppUnit; #define COMPOSE_TEST_NAME(Name) \ STREAM_TEST_NAME "." #Name #define STREAM_REGISTER_SUB_SUITE(Name) \ - extern Test* Get##Name##Suite(); \ + extern CppUnit::Test* Get##Name##Suite(); \ suite->addTest(Get##Name##Suite()) #define STREAM_IMPLEMENT_SUB_REGISTRATION_ROUTINE(Name) \ - Test* Get##Name##Suite() { return Name::suite(); } + CppUnit::Test* Get##Name##Suite() { return Name::suite(); } #define STREAM_TEST_SUBSUITE_NAMED_REGISTRATION(Name) \ CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( Name, COMPOSE_TEST_NAME(Name) ); \ STREAM_IMPLEMENT_SUB_REGISTRATION_ROUTINE( Name ) @@ -34,7 +33,7 @@ using namespace CppUnit; // Template class that implements a test for all base stream functions. // -template class BaseStreamTestCase : public TestCase +template class BaseStreamTestCase : public CppUnit::TestCase { protected: typedef BaseStreamTestCase StreamTestCase; @@ -60,6 +59,7 @@ public: :m_bSimpleTellITest(false), m_bSimpleTellOTest(false), m_bSeekInvalidBeyondEnd(true), + m_bEofAtLastRead(true), m_pCurrentIn(NULL), m_pCurrentOut(NULL) { /* Nothing extra */ } @@ -135,18 +135,30 @@ protected: // Travel to the end of the stream. while(!stream_in.Eof()) { - // Double check to see if normal Eof works. - CPPUNIT_ASSERT_MESSAGE("Eof() doesn't return true when IsOk returns false!", stream_in.IsOk()); // Read, we move one byte along. (void)stream_in.GetC(); +#if 0 + // EOF behaviour is different in streams, disabled (for now?) + + if (m_bEofAtLastRead) + // EOF should only occure after the last successful get. + CPPUNIT_ASSERT_MESSAGE("Eof is detected too late.", !(stream_in.LastRead() != 1 && stream_in.Eof())); + else + // EOF should only occure after a failed get. + CPPUNIT_ASSERT_MESSAGE("Eof is detected too soon.", !(stream_in.LastRead() == 1 && stream_in.Eof())); +#endif } + // Check EOF stream state. + CPPUNIT_ASSERT_MESSAGE("EOF is not EOF?", stream_in.Eof()); + // Ok we found the end, lets see if we can go past it. for (size_t i = 0; i < 100; i++) (void)stream_in.GetC(); // Check for EOF correctness. CPPUNIT_ASSERT_MESSAGE("EOF is wrong when we read past EOF!", stream_in.Eof()); + CPPUNIT_ASSERT_MESSAGE("Last error is not EOF while stream_in.Eof() is true", stream_in.GetLastError() == wxSTREAM_EOF); } // Just try to perform a LastRead() on the input stream. @@ -195,7 +207,7 @@ protected: CPPUNIT_ASSERT(stream_in.TellI() == 1); if (!m_bSimpleTellITest) { - off_t pos = stream_in.SeekI(5, wxFromStart); + wxFileOffset pos = stream_in.SeekI(5, wxFromStart); CPPUNIT_ASSERT(stream_in.TellI() == pos); (void)stream_in.GetC(); CPPUNIT_ASSERT(stream_in.TellI() == 6); @@ -256,8 +268,8 @@ protected: TStreamOut &stream_out = CreateOutStream(); char *buf = "Some text"; - off_t i; - off_t len = (off_t) strlen(buf); + int i; + int len = strlen(buf); for (i = 0; i < len; i++) stream_out.PutC(buf[i]); @@ -272,7 +284,7 @@ protected: // Do the buffer version. char *buf = "Some text"; - off_t len = (off_t) strlen(buf); + int len = strlen(buf); (void)stream_out.Write(buf, len); CPPUNIT_ASSERT(stream_out.TellO() == len); @@ -352,7 +364,8 @@ protected: // Default false. bool m_bSeekInvalidBeyondEnd; // if true a SeekI|O beyond the end of the stream should return wxInvalidOffset // Default true. - + bool m_bEofAtLastRead; // Does EOF occure at the moment the last byte is read or when read past the last byte. + // Default true. protected: TStreamIn &CreateInStream() { @@ -387,9 +400,12 @@ protected: DoDeleteInStream(); } void DeleteOutStream() - { + { if (m_pCurrentOut == NULL) return; + + CPPUNIT_ASSERT(m_pCurrentOut->Close()); + delete m_pCurrentOut; m_pCurrentOut = NULL; // Incase something extra needs to be done.