X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e3f810a21b956aed08df9c1fb7e272acb34de690..c0b0635cf69537ca32377bad5650b39402cb21b6:/tests/streams/bstream.h?ds=sidebyside diff --git a/tests/streams/bstream.h b/tests/streams/bstream.h index 7e8380ebb4..3505fc33aa 100644 --- a/tests/streams/bstream.h +++ b/tests/streams/bstream.h @@ -14,17 +14,19 @@ using namespace CppUnit; /////////////////////////////////////////////////////////////////////////////// -// Some macros preventing use from typing too much ;-) +// Some macros preventing us from typing too much ;-) // #define STREAM_TEST_NAME "Streams" +#define COMPOSE_TEST_NAME(Name) \ + STREAM_TEST_NAME "." #Name #define STREAM_REGISTER_SUB_SUITE(Name) \ extern Test* Get##Name##Suite(); \ suite->addTest(Get##Name##Suite()) #define STREAM_IMPLEMENT_SUB_REGISTRATION_ROUTINE(Name) \ Test* Get##Name##Suite() { return Name::suite(); } #define STREAM_TEST_SUBSUITE_NAMED_REGISTRATION(Name) \ - CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( Name, STREAM_TEST_NAME "." #Name ); \ + CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( Name, COMPOSE_TEST_NAME(Name) ); \ STREAM_IMPLEMENT_SUB_REGISTRATION_ROUTINE( Name ) @@ -57,6 +59,8 @@ public: BaseStreamTestCase() :m_bSimpleTellITest(false), m_bSimpleTellOTest(false), + m_bSeekInvalidBeyondEnd(true), + m_bEofAtLastRead(true), m_pCurrentIn(NULL), m_pCurrentOut(NULL) { /* Nothing extra */ } @@ -132,18 +136,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. @@ -176,7 +192,7 @@ protected: //CPPUNIT_ASSERT(stream_in.SeekI(-2, wxFromEnd) == (off_t)stream_in.GetSize()-2); CPPUNIT_ASSERT(stream_in.SeekI(-2, wxFromEnd) != wxInvalidOffset); // Go beyond the stream size. - CPPUNIT_ASSERT(stream_in.SeekI(10, wxFromCurrent) == wxInvalidOffset); + CPPUNIT_ASSERT((stream_in.SeekI(10, wxFromCurrent) == wxInvalidOffset) == m_bSeekInvalidBeyondEnd); } // Just try to perform a TellI() on the input stream. @@ -210,14 +226,12 @@ protected: TStreamIn &stream_in = CreateInStream(); // Test the full stream - while(!stream_in.Eof()) + while (stream_in.IsOk()) { - if (!stream_in.IsOk()) - break; - char peekChar = stream_in.Peek(); char getChar = stream_in.GetC(); - CPPUNIT_ASSERT(peekChar == getChar); + if (stream_in.LastRead() == 1) + CPPUNIT_ASSERT(peekChar == getChar); } } @@ -313,7 +327,7 @@ protected: //CPPUNIT_ASSERT(stream_out.SeekO(-2, wxFromEnd) == (off_t)stream_in.GetSize()-2); CPPUNIT_ASSERT(stream_out.SeekO(-2, wxFromEnd) != wxInvalidOffset); // Go beyond the stream size. - CPPUNIT_ASSERT(stream_out.SeekO(10, wxFromCurrent) == wxInvalidOffset); + CPPUNIT_ASSERT((stream_out.SeekO(10, wxFromCurrent) == wxInvalidOffset) == m_bSeekInvalidBeyondEnd); } // Just try to perform a TellO() on the output stream. @@ -349,7 +363,10 @@ protected: // Default false. bool m_bSimpleTellOTest; // if true, no SeekO will be used by the TellI test. // 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() {