X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2d76b6d8c3d13ce08f0aef47f859078368f7fed7..b5fe7ca67bf3121959a0b5a59afd00c1708f2f03:/tests/streams/bstream.h diff --git a/tests/streams/bstream.h b/tests/streams/bstream.h index 555988b496..7304133977 100644 --- a/tests/streams/bstream.h +++ b/tests/streams/bstream.h @@ -28,6 +28,11 @@ CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( Name, COMPOSE_TEST_NAME(Name) ); \ STREAM_IMPLEMENT_SUB_REGISTRATION_ROUTINE( Name ) +// under 64 bit platforms wxFileOffset is the same as long and we already have +// WX_CPPUNIT_ALLOW_EQUALS_TO_INT(long) in wx/cppunit.h +#if SIZEOF_LONG != 8 +WX_CPPUNIT_ALLOW_EQUALS_TO_INT(wxFileOffset) +#endif /////////////////////////////////////////////////////////////////////////////// // Template class that implements a test for all base stream functions. @@ -135,6 +140,9 @@ protected: // Travel to the end of the stream. while(!stream_in.Eof()) { + CPPUNIT_ASSERT_MESSAGE( "unexpected non-EOF stream error", + stream_in.IsOk() ); + // Read, we move one byte along. (void)stream_in.GetC(); #if 0 @@ -170,9 +178,9 @@ protected: char buf[5]; (void)stream_in.Read(buf, 5); - CPPUNIT_ASSERT(stream_in.LastRead() == 5); + CPPUNIT_ASSERT_EQUAL(5, stream_in.LastRead()); (void)stream_in.GetC(); - CPPUNIT_ASSERT(stream_in.LastRead() == 1); + CPPUNIT_ASSERT_EQUAL(1, stream_in.LastRead()); } void Input_CanRead() @@ -193,15 +201,17 @@ protected: { CleanupHelper cleanup(this); TStreamIn &stream_in = CreateInStream(); + + CPPUNIT_ASSERT( stream_in.IsSeekable() ); CPPUNIT_ASSERT(!stream_in.Eof()); // Try to Seek in the stream... // Note: streams not supporting this should register this test // with CPPUNIT_TEST_FAIL instead of CPPUNIT_TEST. - CPPUNIT_ASSERT(stream_in.SeekI(2, wxFromStart) == 2); - CPPUNIT_ASSERT(stream_in.SeekI(2, wxFromCurrent) == 4); + CPPUNIT_ASSERT_EQUAL(2, stream_in.SeekI(2, wxFromStart)); + CPPUNIT_ASSERT_EQUAL(4, stream_in.SeekI(2, wxFromCurrent)); // Not sure the following line is correct, so test it differently. - //CPPUNIT_ASSERT(stream_in.SeekI(-2, wxFromEnd) == (off_t)stream_in.GetSize()-2); + //CPPUNIT_ASSERT_EQUAL(stream_in.GetSize()-2, stream_in.SeekI(-2, wxFromEnd)); CPPUNIT_ASSERT(stream_in.SeekI(-2, wxFromEnd) != wxInvalidOffset); // Go beyond the stream size. CPPUNIT_ASSERT((stream_in.SeekI(10, wxFromCurrent) == wxInvalidOffset) == m_bSeekInvalidBeyondEnd); @@ -212,22 +222,26 @@ protected: { CleanupHelper cleanup(this); TStreamIn &stream_in = CreateInStream(); + + // this test shouldn't be used at all if the stream isn't seekable + CPPUNIT_ASSERT( stream_in.IsSeekable() ); + CPPUNIT_ASSERT(!stream_in.Eof()); // Try to Get the location in the stream... - CPPUNIT_ASSERT(stream_in.TellI() == 0); + CPPUNIT_ASSERT_EQUAL(0, stream_in.TellI()); (void)stream_in.GetC(); - CPPUNIT_ASSERT(stream_in.TellI() == 1); + CPPUNIT_ASSERT_EQUAL(1, stream_in.TellI()); if (!m_bSimpleTellITest) { wxFileOffset pos = stream_in.SeekI(5, wxFromStart); - CPPUNIT_ASSERT(stream_in.TellI() == pos); + CPPUNIT_ASSERT_EQUAL(pos, stream_in.TellI()); (void)stream_in.GetC(); - CPPUNIT_ASSERT(stream_in.TellI() == 6); + CPPUNIT_ASSERT_EQUAL(6, stream_in.TellI()); pos = stream_in.SeekI(2, wxFromCurrent); - CPPUNIT_ASSERT(stream_in.TellI() == pos); + CPPUNIT_ASSERT_EQUAL(pos, stream_in.TellI()); pos = stream_in.SeekI(5, wxFromStart); - CPPUNIT_ASSERT(stream_in.TellI() == pos); + CPPUNIT_ASSERT_EQUAL(pos, stream_in.TellI()); } } @@ -243,7 +257,7 @@ protected: char peekChar = stream_in.Peek(); char getChar = stream_in.GetC(); if (stream_in.LastRead() == 1) - CPPUNIT_ASSERT(peekChar == getChar); + CPPUNIT_ASSERT_EQUAL(getChar, peekChar); } } @@ -258,7 +272,7 @@ protected: size_t ungetsize = stream_in.Ungetch(ungetstr, strlen(ungetstr) + 1); if (ungetsize != 0) { - CPPUNIT_ASSERT(ungetsize == strlen(ungetstr) + 1); + CPPUNIT_ASSERT_EQUAL(strlen(ungetstr) + 1, ungetsize); char buf[10]; (void)stream_in.Read(buf, ungetsize); CPPUNIT_ASSERT(strcmp(buf, ungetstr) == 0); @@ -266,7 +280,7 @@ protected: if (stream_in.Ungetch('a')) { - CPPUNIT_ASSERT(stream_in.GetC() == 'a'); + CPPUNIT_ASSERT_EQUAL(int('a'), stream_in.GetC()); } } @@ -280,13 +294,13 @@ protected: CleanupHelper cleanup(this); TStreamOut &stream_out = CreateOutStream(); - char *buf = "Some text"; - int i; - int len = strlen(buf); - for (i = 0; i < len; i++) + const char *buf = "Some text"; + const wxFileOffset len = strlen(buf); + for ( int i = 0; i < len; i++ ) stream_out.PutC(buf[i]); - CPPUNIT_ASSERT(i == stream_out.TellO()); + if ( stream_out.IsSeekable() ) + CPPUNIT_ASSERT_EQUAL(len, stream_out.TellO()); } // Just try to perform a Write() on the output stream. @@ -296,15 +310,18 @@ protected: TStreamOut &stream_out = CreateOutStream(); // Do the buffer version. - char *buf = "Some text"; - int len = strlen(buf); + const char *buf = "Some text"; + const wxFileOffset len = strlen(buf); (void)stream_out.Write(buf, len); - CPPUNIT_ASSERT(stream_out.TellO() == len); + if ( stream_out.IsSeekable() ) + CPPUNIT_ASSERT_EQUAL( len, stream_out.TellO() ); // Do the Stream version. TStreamIn &stream_in = CreateInStream(); (void)stream_out.Write(stream_in); - CPPUNIT_ASSERT(stream_out.TellO() > len); + + if ( stream_out.IsSeekable() ) + CPPUNIT_ASSERT(stream_out.TellO() > len); } // Just try to perform a LastWrite() on the output stream. @@ -313,11 +330,11 @@ protected: CleanupHelper cleanup(this); TStreamOut &stream_out = CreateOutStream(); - char *buf = "12345"; + const char *buf = "12345"; (void)stream_out.Write(buf, 5); - CPPUNIT_ASSERT(stream_out.LastWrite() == 5); + CPPUNIT_ASSERT_EQUAL(5, stream_out.LastWrite()); (void)stream_out.PutC('1'); - CPPUNIT_ASSERT(stream_out.LastWrite() == 1); + CPPUNIT_ASSERT_EQUAL(1, stream_out.LastWrite()); } // Just try to perform a SeekO() on the output stream. @@ -326,17 +343,19 @@ protected: CleanupHelper cleanup(this); TStreamOut &stream_out = CreateOutStream(); + CPPUNIT_ASSERT( stream_out.IsSeekable() ); + // First put some data in the stream, so it is not empty. - char *buf = "1234567890"; + const char *buf = "1234567890"; (void)stream_out.Write(buf, 10); // Try to Seek in the stream... // Note: streams not supporting this should register this test // with CPPUNIT_TEST_FAIL instead of CPPUNIT_TEST. - CPPUNIT_ASSERT(stream_out.SeekO(2, wxFromStart) == 2); - CPPUNIT_ASSERT(stream_out.SeekO(2, wxFromCurrent) == 4); + CPPUNIT_ASSERT_EQUAL(2, stream_out.SeekO(2, wxFromStart)); + CPPUNIT_ASSERT_EQUAL(4, stream_out.SeekO(2, wxFromCurrent)); // Not sure the following line is correct, so test it differently. - //CPPUNIT_ASSERT(stream_out.SeekO(-2, wxFromEnd) == (off_t)stream_in.GetSize()-2); + //CPPUNIT_ASSERT_EQUAL(stream_in.GetSize()-2, stream_out.SeekO(-2, wxFromEnd)); CPPUNIT_ASSERT(stream_out.SeekO(-2, wxFromEnd) != wxInvalidOffset); // Go beyond the stream size. CPPUNIT_ASSERT((stream_out.SeekO(10, wxFromCurrent) == wxInvalidOffset) == m_bSeekInvalidBeyondEnd); @@ -348,24 +367,27 @@ protected: CleanupHelper cleanup(this); TStreamOut &stream_out = CreateOutStream(); + // If this test is used, the stream must be seekable + CPPUNIT_ASSERT( stream_out.IsSeekable() ); + // Try to Get the location in the stream... - CPPUNIT_ASSERT(stream_out.TellO() == 0); + CPPUNIT_ASSERT_EQUAL(0, stream_out.TellO()); (void)stream_out.PutC('1'); - CPPUNIT_ASSERT(stream_out.TellO() == 1); + CPPUNIT_ASSERT_EQUAL(1, stream_out.TellO()); if (!m_bSimpleTellOTest) { // First put some extra data in the stream, so it's not empty. - char *buf = "1234567890"; + const char *buf = "1234567890"; (void)stream_out.Write(buf, 10); - off_t pos = stream_out.SeekO(5, wxFromStart); - CPPUNIT_ASSERT(stream_out.TellO() == pos); + wxFileOffset pos = stream_out.SeekO(5, wxFromStart); + CPPUNIT_ASSERT_EQUAL(pos, stream_out.TellO()); (void)stream_out.PutC('1'); - CPPUNIT_ASSERT(stream_out.TellO() == 6); + CPPUNIT_ASSERT_EQUAL(6, stream_out.TellO()); pos = stream_out.SeekO(2, wxFromCurrent); - CPPUNIT_ASSERT(stream_out.TellO() == pos); + CPPUNIT_ASSERT_EQUAL(pos, stream_out.TellO()); pos = stream_out.SeekO(5, wxFromStart); - CPPUNIT_ASSERT(stream_out.TellO() == pos); + CPPUNIT_ASSERT_EQUAL(pos, stream_out.TellO()); } }