X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/08776b09141acf2a1365152d1b3424dce43ae89d..929bd94ee1ebf1d6d73c038954eef424a3ef8739:/tests/streams/bstream.h diff --git a/tests/streams/bstream.h b/tests/streams/bstream.h index 4d1029ac3f..555988b496 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; @@ -46,7 +45,7 @@ protected: :m_pCleanup(value) {} ~CleanupHelper() - { + { m_pCleanup->DeleteInStream(); m_pCleanup->DeleteOutStream(); } @@ -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 */ } @@ -68,7 +68,7 @@ public: // Prevent mem leaks! delete m_pCurrentIn; delete m_pCurrentOut; - } + } protected: /* @@ -108,7 +108,7 @@ protected: // Note: the input stream should at least be of min size +10! - char buf[10]; + char buf[10]; (void)stream_in.Read(buf, 10); CPPUNIT_ASSERT(!stream_in.Eof()); @@ -122,7 +122,7 @@ protected: CPPUNIT_ASSERT(stream_in.Eof()); } - // Test and see what happens to the EOF when we + // Test and see what happens to the EOF when we // read after EOF was encountered. void Input_Eof() { @@ -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. @@ -163,6 +175,19 @@ protected: CPPUNIT_ASSERT(stream_in.LastRead() == 1); } + void Input_CanRead() + { + CleanupHelper cleanup(this); + TStreamIn &stream_in = CreateInStream(); + + CPPUNIT_ASSERT( stream_in.CanRead() ); + + // read the entire contents + (void)stream_in.Read(CreateOutStream()); + + CPPUNIT_ASSERT( !stream_in.CanRead() ); + } + // Just try to perform a SeekI() on the input stream. void Input_SeekI() { @@ -195,7 +220,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); @@ -205,7 +230,7 @@ protected: CPPUNIT_ASSERT(stream_in.TellI() == pos); } } - + // Just try to perform a Peek() on the input stream. void Input_Peek() { @@ -228,7 +253,7 @@ protected: CleanupHelper cleanup(this); TStreamIn &stream_in = CreateInStream(); CPPUNIT_ASSERT(!stream_in.Eof()); - + const char *ungetstr = "test"; size_t ungetsize = stream_in.Ungetch(ungetstr, strlen(ungetstr) + 1); if (ungetsize != 0) @@ -256,8 +281,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 +297,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); @@ -300,7 +325,7 @@ protected: { CleanupHelper cleanup(this); TStreamOut &stream_out = CreateOutStream(); - + // First put some data in the stream, so it is not empty. char *buf = "1234567890"; (void)stream_out.Write(buf, 10); @@ -332,7 +357,7 @@ protected: // First put some extra data in the stream, so it's not empty. char *buf = "1234567890"; (void)stream_out.Write(buf, 10); - + off_t pos = stream_out.SeekO(5, wxFromStart); CPPUNIT_ASSERT(stream_out.TellO() == pos); (void)stream_out.PutC('1'); @@ -346,16 +371,17 @@ protected: protected: // Some tests can be configured... here you can find the config settings - bool m_bSimpleTellITest; // if true, no SeekI will be used by the TellI test. + bool m_bSimpleTellITest; // if true, no SeekI will be used by the TellI test. // Default false. - bool m_bSimpleTellOTest; // if true, no SeekO will be used by the TellI test. + 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() - { + { if (m_pCurrentIn) { wxFAIL_MSG(_T("Error in test case, the previouse input stream needs to be delete first!")); @@ -366,7 +392,7 @@ protected: return *m_pCurrentIn; } TStreamOut &CreateOutStream() - { + { if (m_pCurrentOut) { wxFAIL_MSG(_T("Error in test case, the previouse output stream needs to be delete first!")); @@ -376,7 +402,7 @@ protected: wxASSERT(m_pCurrentOut != NULL); return *m_pCurrentOut; } - + void DeleteInStream() { if (m_pCurrentIn == NULL) @@ -390,6 +416,9 @@ protected: { if (m_pCurrentOut == NULL) return; + + CPPUNIT_ASSERT(m_pCurrentOut->Close()); + delete m_pCurrentOut; m_pCurrentOut = NULL; // Incase something extra needs to be done.