implemented wxMemoryInputStream::CanRead() and added tests for CanRead() to all stream tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44872 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -71,6 +71,7 @@ All:
|
|||||||
- Added wxGridUpdateLocker helper class (Evgeniy Tarassov)
|
- Added wxGridUpdateLocker helper class (Evgeniy Tarassov)
|
||||||
- Support wxGRID_AUTOSIZE in wxGrid::SetRow/ColLabelSize() (Evgeniy Tarassov)
|
- Support wxGRID_AUTOSIZE in wxGrid::SetRow/ColLabelSize() (Evgeniy Tarassov)
|
||||||
- Added wxMemoryInputStream(wxInputStream&) ctor (Stas Sergeev)
|
- Added wxMemoryInputStream(wxInputStream&) ctor (Stas Sergeev)
|
||||||
|
- Implemented wxMemoryInputStream::CanRead()
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
|
@@ -39,7 +39,8 @@ public:
|
|||||||
virtual wxFileOffset GetLength() const { return m_length; }
|
virtual wxFileOffset GetLength() const { return m_length; }
|
||||||
virtual bool IsSeekable() const { return true; }
|
virtual bool IsSeekable() const { return true; }
|
||||||
|
|
||||||
char Peek();
|
virtual char Peek();
|
||||||
|
virtual bool CanRead() const;
|
||||||
|
|
||||||
wxStreamBuffer *GetInputStreamBuffer() const { return m_i_streambuf; }
|
wxStreamBuffer *GetInputStreamBuffer() const { return m_i_streambuf; }
|
||||||
|
|
||||||
|
@@ -97,6 +97,11 @@ wxMemoryInputStream::InitFromStream(wxInputStream& stream, wxFileOffset lenFile)
|
|||||||
m_length = stream.LastRead();
|
m_length = stream.LastRead();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxMemoryInputStream::CanRead() const
|
||||||
|
{
|
||||||
|
return m_i_streambuf->GetIntPosition() != m_length;
|
||||||
|
}
|
||||||
|
|
||||||
wxMemoryInputStream::~wxMemoryInputStream()
|
wxMemoryInputStream::~wxMemoryInputStream()
|
||||||
{
|
{
|
||||||
delete m_i_streambuf;
|
delete m_i_streambuf;
|
||||||
|
@@ -45,7 +45,7 @@ protected:
|
|||||||
:m_pCleanup(value)
|
:m_pCleanup(value)
|
||||||
{}
|
{}
|
||||||
~CleanupHelper()
|
~CleanupHelper()
|
||||||
{
|
{
|
||||||
m_pCleanup->DeleteInStream();
|
m_pCleanup->DeleteInStream();
|
||||||
m_pCleanup->DeleteOutStream();
|
m_pCleanup->DeleteOutStream();
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ public:
|
|||||||
// Prevent mem leaks!
|
// Prevent mem leaks!
|
||||||
delete m_pCurrentIn;
|
delete m_pCurrentIn;
|
||||||
delete m_pCurrentOut;
|
delete m_pCurrentOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/*
|
/*
|
||||||
@@ -108,7 +108,7 @@ protected:
|
|||||||
|
|
||||||
// Note: the input stream should at least be of min size +10!
|
// Note: the input stream should at least be of min size +10!
|
||||||
|
|
||||||
char buf[10];
|
char buf[10];
|
||||||
(void)stream_in.Read(buf, 10);
|
(void)stream_in.Read(buf, 10);
|
||||||
|
|
||||||
CPPUNIT_ASSERT(!stream_in.Eof());
|
CPPUNIT_ASSERT(!stream_in.Eof());
|
||||||
@@ -122,7 +122,7 @@ protected:
|
|||||||
CPPUNIT_ASSERT(stream_in.Eof());
|
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.
|
// read after EOF was encountered.
|
||||||
void Input_Eof()
|
void Input_Eof()
|
||||||
{
|
{
|
||||||
@@ -150,7 +150,7 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check EOF stream state.
|
// Check EOF stream state.
|
||||||
CPPUNIT_ASSERT_MESSAGE("EOF is not EOF?", stream_in.Eof());
|
CPPUNIT_ASSERT_MESSAGE("EOF is not EOF?", stream_in.Eof());
|
||||||
|
|
||||||
// Ok we found the end, lets see if we can go past it.
|
// Ok we found the end, lets see if we can go past it.
|
||||||
for (size_t i = 0; i < 100; i++)
|
for (size_t i = 0; i < 100; i++)
|
||||||
@@ -175,6 +175,19 @@ protected:
|
|||||||
CPPUNIT_ASSERT(stream_in.LastRead() == 1);
|
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.
|
// Just try to perform a SeekI() on the input stream.
|
||||||
void Input_SeekI()
|
void Input_SeekI()
|
||||||
{
|
{
|
||||||
@@ -217,7 +230,7 @@ protected:
|
|||||||
CPPUNIT_ASSERT(stream_in.TellI() == pos);
|
CPPUNIT_ASSERT(stream_in.TellI() == pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Just try to perform a Peek() on the input stream.
|
// Just try to perform a Peek() on the input stream.
|
||||||
void Input_Peek()
|
void Input_Peek()
|
||||||
{
|
{
|
||||||
@@ -240,7 +253,7 @@ protected:
|
|||||||
CleanupHelper cleanup(this);
|
CleanupHelper cleanup(this);
|
||||||
TStreamIn &stream_in = CreateInStream();
|
TStreamIn &stream_in = CreateInStream();
|
||||||
CPPUNIT_ASSERT(!stream_in.Eof());
|
CPPUNIT_ASSERT(!stream_in.Eof());
|
||||||
|
|
||||||
const char *ungetstr = "test";
|
const char *ungetstr = "test";
|
||||||
size_t ungetsize = stream_in.Ungetch(ungetstr, strlen(ungetstr) + 1);
|
size_t ungetsize = stream_in.Ungetch(ungetstr, strlen(ungetstr) + 1);
|
||||||
if (ungetsize != 0)
|
if (ungetsize != 0)
|
||||||
@@ -312,7 +325,7 @@ protected:
|
|||||||
{
|
{
|
||||||
CleanupHelper cleanup(this);
|
CleanupHelper cleanup(this);
|
||||||
TStreamOut &stream_out = CreateOutStream();
|
TStreamOut &stream_out = CreateOutStream();
|
||||||
|
|
||||||
// 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";
|
char *buf = "1234567890";
|
||||||
(void)stream_out.Write(buf, 10);
|
(void)stream_out.Write(buf, 10);
|
||||||
@@ -344,7 +357,7 @@ protected:
|
|||||||
// 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";
|
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);
|
||||||
CPPUNIT_ASSERT(stream_out.TellO() == pos);
|
CPPUNIT_ASSERT(stream_out.TellO() == pos);
|
||||||
(void)stream_out.PutC('1');
|
(void)stream_out.PutC('1');
|
||||||
@@ -358,9 +371,9 @@ protected:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Some tests can be configured... here you can find the config settings
|
// 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.
|
// 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.
|
// Default false.
|
||||||
bool m_bSeekInvalidBeyondEnd; // if true a SeekI|O beyond the end of the stream should return wxInvalidOffset
|
bool m_bSeekInvalidBeyondEnd; // if true a SeekI|O beyond the end of the stream should return wxInvalidOffset
|
||||||
// Default true.
|
// Default true.
|
||||||
@@ -368,7 +381,7 @@ protected:
|
|||||||
// Default true.
|
// Default true.
|
||||||
protected:
|
protected:
|
||||||
TStreamIn &CreateInStream()
|
TStreamIn &CreateInStream()
|
||||||
{
|
{
|
||||||
if (m_pCurrentIn)
|
if (m_pCurrentIn)
|
||||||
{
|
{
|
||||||
wxFAIL_MSG(_T("Error in test case, the previouse input stream needs to be delete first!"));
|
wxFAIL_MSG(_T("Error in test case, the previouse input stream needs to be delete first!"));
|
||||||
@@ -379,7 +392,7 @@ protected:
|
|||||||
return *m_pCurrentIn;
|
return *m_pCurrentIn;
|
||||||
}
|
}
|
||||||
TStreamOut &CreateOutStream()
|
TStreamOut &CreateOutStream()
|
||||||
{
|
{
|
||||||
if (m_pCurrentOut)
|
if (m_pCurrentOut)
|
||||||
{
|
{
|
||||||
wxFAIL_MSG(_T("Error in test case, the previouse output stream needs to be delete first!"));
|
wxFAIL_MSG(_T("Error in test case, the previouse output stream needs to be delete first!"));
|
||||||
@@ -389,7 +402,7 @@ protected:
|
|||||||
wxASSERT(m_pCurrentOut != NULL);
|
wxASSERT(m_pCurrentOut != NULL);
|
||||||
return *m_pCurrentOut;
|
return *m_pCurrentOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeleteInStream()
|
void DeleteInStream()
|
||||||
{
|
{
|
||||||
if (m_pCurrentIn == NULL)
|
if (m_pCurrentIn == NULL)
|
||||||
@@ -400,12 +413,12 @@ protected:
|
|||||||
DoDeleteInStream();
|
DoDeleteInStream();
|
||||||
}
|
}
|
||||||
void DeleteOutStream()
|
void DeleteOutStream()
|
||||||
{
|
{
|
||||||
if (m_pCurrentOut == NULL)
|
if (m_pCurrentOut == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CPPUNIT_ASSERT(m_pCurrentOut->Close());
|
CPPUNIT_ASSERT(m_pCurrentOut->Close());
|
||||||
|
|
||||||
delete m_pCurrentOut;
|
delete m_pCurrentOut;
|
||||||
m_pCurrentOut = NULL;
|
m_pCurrentOut = NULL;
|
||||||
// Incase something extra needs to be done.
|
// Incase something extra needs to be done.
|
||||||
|
@@ -47,6 +47,7 @@ public:
|
|||||||
CPPUNIT_TEST(Input_Read);
|
CPPUNIT_TEST(Input_Read);
|
||||||
CPPUNIT_TEST(Input_Eof);
|
CPPUNIT_TEST(Input_Eof);
|
||||||
CPPUNIT_TEST(Input_LastRead);
|
CPPUNIT_TEST(Input_LastRead);
|
||||||
|
CPPUNIT_TEST(Input_CanRead);
|
||||||
CPPUNIT_TEST(Input_SeekI);
|
CPPUNIT_TEST(Input_SeekI);
|
||||||
CPPUNIT_TEST(Input_TellI);
|
CPPUNIT_TEST(Input_TellI);
|
||||||
CPPUNIT_TEST(Input_Peek);
|
CPPUNIT_TEST(Input_Peek);
|
||||||
|
@@ -47,6 +47,7 @@ public:
|
|||||||
CPPUNIT_TEST(Input_Read);
|
CPPUNIT_TEST(Input_Read);
|
||||||
CPPUNIT_TEST(Input_Eof);
|
CPPUNIT_TEST(Input_Eof);
|
||||||
CPPUNIT_TEST(Input_LastRead);
|
CPPUNIT_TEST(Input_LastRead);
|
||||||
|
CPPUNIT_TEST(Input_CanRead);
|
||||||
CPPUNIT_TEST(Input_SeekI);
|
CPPUNIT_TEST(Input_SeekI);
|
||||||
CPPUNIT_TEST(Input_TellI);
|
CPPUNIT_TEST(Input_TellI);
|
||||||
CPPUNIT_TEST(Input_Peek);
|
CPPUNIT_TEST(Input_Peek);
|
||||||
|
@@ -44,6 +44,7 @@ public:
|
|||||||
CPPUNIT_TEST(Input_Read);
|
CPPUNIT_TEST(Input_Read);
|
||||||
CPPUNIT_TEST(Input_Eof);
|
CPPUNIT_TEST(Input_Eof);
|
||||||
CPPUNIT_TEST(Input_LastRead);
|
CPPUNIT_TEST(Input_LastRead);
|
||||||
|
CPPUNIT_TEST(Input_CanRead);
|
||||||
CPPUNIT_TEST(Input_SeekI);
|
CPPUNIT_TEST(Input_SeekI);
|
||||||
CPPUNIT_TEST(Input_TellI);
|
CPPUNIT_TEST(Input_TellI);
|
||||||
CPPUNIT_TEST(Input_Peek);
|
CPPUNIT_TEST(Input_Peek);
|
||||||
|
@@ -42,6 +42,7 @@ public:
|
|||||||
CPPUNIT_TEST(Input_Read);
|
CPPUNIT_TEST(Input_Read);
|
||||||
CPPUNIT_TEST(Input_Eof);
|
CPPUNIT_TEST(Input_Eof);
|
||||||
CPPUNIT_TEST(Input_LastRead);
|
CPPUNIT_TEST(Input_LastRead);
|
||||||
|
CPPUNIT_TEST(Input_CanRead);
|
||||||
CPPUNIT_TEST(Input_SeekI);
|
CPPUNIT_TEST(Input_SeekI);
|
||||||
CPPUNIT_TEST(Input_TellI);
|
CPPUNIT_TEST(Input_TellI);
|
||||||
CPPUNIT_TEST(Input_Peek);
|
CPPUNIT_TEST(Input_Peek);
|
||||||
|
@@ -55,6 +55,7 @@ public:
|
|||||||
CPPUNIT_TEST(Input_Read);
|
CPPUNIT_TEST(Input_Read);
|
||||||
CPPUNIT_TEST(Input_Eof);
|
CPPUNIT_TEST(Input_Eof);
|
||||||
CPPUNIT_TEST(Input_LastRead);
|
CPPUNIT_TEST(Input_LastRead);
|
||||||
|
CPPUNIT_TEST(Input_CanRead);
|
||||||
CPPUNIT_TEST_FAIL(Input_SeekI);
|
CPPUNIT_TEST_FAIL(Input_SeekI);
|
||||||
CPPUNIT_TEST(Input_TellI);
|
CPPUNIT_TEST(Input_TellI);
|
||||||
CPPUNIT_TEST(Input_Peek);
|
CPPUNIT_TEST(Input_Peek);
|
||||||
|
Reference in New Issue
Block a user