skip calls of TellI/TellO() if the stream is not seekable; more const-correctness

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-07-09 02:16:27 +00:00
parent 41cef82a0a
commit 8bd966d3cd

View File

@@ -193,6 +193,8 @@ protected:
{ {
CleanupHelper cleanup(this); CleanupHelper cleanup(this);
TStreamIn &stream_in = CreateInStream(); TStreamIn &stream_in = CreateInStream();
CPPUNIT_ASSERT( stream_in.IsSeekable() );
CPPUNIT_ASSERT(!stream_in.Eof()); CPPUNIT_ASSERT(!stream_in.Eof());
// Try to Seek in the stream... // Try to Seek in the stream...
@@ -212,6 +214,10 @@ protected:
{ {
CleanupHelper cleanup(this); CleanupHelper cleanup(this);
TStreamIn &stream_in = CreateInStream(); 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()); CPPUNIT_ASSERT(!stream_in.Eof());
// Try to Get the location in the stream... // Try to Get the location in the stream...
@@ -280,13 +286,13 @@ protected:
CleanupHelper cleanup(this); CleanupHelper cleanup(this);
TStreamOut &stream_out = CreateOutStream(); TStreamOut &stream_out = CreateOutStream();
char *buf = "Some text"; const char *buf = "Some text";
int i; const wxFileOffset len = strlen(buf);
int len = strlen(buf); for ( int i = 0; i < len; i++ )
for (i = 0; i < len; i++)
stream_out.PutC(buf[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. // Just try to perform a Write() on the output stream.
@@ -296,14 +302,17 @@ protected:
TStreamOut &stream_out = CreateOutStream(); TStreamOut &stream_out = CreateOutStream();
// Do the buffer version. // Do the buffer version.
char *buf = "Some text"; const char *buf = "Some text";
int len = strlen(buf); const wxFileOffset len = strlen(buf);
(void)stream_out.Write(buf, len); (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. // Do the Stream version.
TStreamIn &stream_in = CreateInStream(); TStreamIn &stream_in = CreateInStream();
(void)stream_out.Write(stream_in); (void)stream_out.Write(stream_in);
if ( stream_out.IsSeekable() )
CPPUNIT_ASSERT(stream_out.TellO() > len); CPPUNIT_ASSERT(stream_out.TellO() > len);
} }
@@ -313,7 +322,7 @@ protected:
CleanupHelper cleanup(this); CleanupHelper cleanup(this);
TStreamOut &stream_out = CreateOutStream(); TStreamOut &stream_out = CreateOutStream();
char *buf = "12345"; const char *buf = "12345";
(void)stream_out.Write(buf, 5); (void)stream_out.Write(buf, 5);
CPPUNIT_ASSERT(stream_out.LastWrite() == 5); CPPUNIT_ASSERT(stream_out.LastWrite() == 5);
(void)stream_out.PutC('1'); (void)stream_out.PutC('1');
@@ -326,8 +335,10 @@ protected:
CleanupHelper cleanup(this); CleanupHelper cleanup(this);
TStreamOut &stream_out = CreateOutStream(); TStreamOut &stream_out = CreateOutStream();
CPPUNIT_ASSERT( stream_out.IsSeekable() );
// First put some data in the stream, so it is not empty. // 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); (void)stream_out.Write(buf, 10);
// Try to Seek in the stream... // Try to Seek in the stream...
@@ -348,6 +359,9 @@ protected:
CleanupHelper cleanup(this); CleanupHelper cleanup(this);
TStreamOut &stream_out = CreateOutStream(); 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... // Try to Get the location in the stream...
CPPUNIT_ASSERT(stream_out.TellO() == 0); CPPUNIT_ASSERT(stream_out.TellO() == 0);
(void)stream_out.PutC('1'); (void)stream_out.PutC('1');
@@ -355,7 +369,7 @@ protected:
if (!m_bSimpleTellOTest) if (!m_bSimpleTellOTest)
{ {
// First put some extra data in the stream, so it's not empty. // 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); (void)stream_out.Write(buf, 10);
off_t pos = stream_out.SeekO(5, wxFromStart); off_t pos = stream_out.SeekO(5, wxFromStart);