| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        tests/streams/backfile.cpp
 
- // Purpose:     Test wxBackingFile
 
- // Author:      Mike Wetherell
 
- // Copyright:   (c) 2006 Mike Wetherell
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- #include "testprec.h"
 
- #ifdef __BORLANDC__
 
-     #pragma hdrstop
 
- #endif
 
- // for all others, include the necessary headers
 
- #ifndef WX_PRECOMP
 
-     #include "wx/wx.h"
 
- #endif
 
- #include "wx/mstream.h"
 
- #include "wx/private/fileback.h"
 
- #include "bstream.h"
 
- const size_t TESTSIZE = 256;
 
- const size_t BUFSIZE = 100;
 
- ///////////////////////////////////////////////////////////////////////////////
 
- // Parent stream for testing
 
- class TestStream : public wxMemoryInputStream
 
- {
 
- public:
 
-     TestStream(const void *buf, size_t size)
 
-         : wxMemoryInputStream(buf, size) { }
 
-     wxFileOffset GetLength() const { return wxInvalidOffset; }
 
- };
 
- ///////////////////////////////////////////////////////////////////////////////
 
- // The test case
 
- class backStream : public CppUnit::TestCase
 
- {
 
- public:
 
-     backStream();
 
-     CPPUNIT_TEST_SUITE(backStream);
 
-         CPPUNIT_TEST(ReadLenSeek);
 
-         CPPUNIT_TEST(LenSeekRead);
 
-         CPPUNIT_TEST(SeekReadLen);
 
-         CPPUNIT_TEST(ReadAll);
 
-         CPPUNIT_TEST(ReadTooMuch);
 
-         CPPUNIT_TEST(EmptyStream);
 
-     CPPUNIT_TEST_SUITE_END();
 
-     void ReadLenSeek();
 
-     void LenSeekRead();
 
-     void SeekReadLen();
 
-     void ReadAll();
 
-     void ReadTooMuch();
 
-     void EmptyStream();
 
- private:
 
-     void Read(wxInputStream& in, size_t size1, size_t size2, size_t size3);
 
-     void Len(wxBackedInputStream& in);
 
-     void Seek(wxInputStream& in);
 
-     char m_testdata[TESTSIZE];
 
- };
 
- backStream::backStream()
 
- {
 
-     for (unsigned i = 0; i < TESTSIZE; i++)
 
-         m_testdata[i] = i;
 
- }
 
- void backStream::ReadLenSeek()
 
- {
 
-     wxBackingFile bf(new TestStream(m_testdata, TESTSIZE), BUFSIZE);
 
-     wxBackedInputStream in(bf);
 
-     Read(in, BUFSIZE, BUFSIZE / 2, 2 * BUFSIZE / 3);
 
-     Len(in);
 
-     Seek(in);
 
- }
 
- void backStream::LenSeekRead()
 
- {
 
-     wxBackingFile bf(new TestStream(m_testdata, TESTSIZE), BUFSIZE);
 
-     wxBackedInputStream in(bf);
 
-     Len(in);
 
-     Seek(in);
 
-     Read(in, BUFSIZE, BUFSIZE / 2, 2 * BUFSIZE / 3);
 
- }
 
- void backStream::SeekReadLen()
 
- {
 
-     wxBackingFile bf(new TestStream(m_testdata, TESTSIZE), BUFSIZE);
 
-     wxBackedInputStream in(bf);
 
-     Seek(in);
 
-     Read(in, BUFSIZE, BUFSIZE / 2, 2 * BUFSIZE / 3);
 
-     Len(in);
 
- }
 
- void backStream::ReadAll()
 
- {
 
-     wxBackingFile bf(new TestStream(m_testdata, TESTSIZE), BUFSIZE);
 
-     wxBackedInputStream in(bf);
 
-     Read(in, TESTSIZE, 0, 0);
 
- }
 
- void backStream::ReadTooMuch()
 
- {
 
-     wxBackingFile bf(new TestStream(m_testdata, TESTSIZE), BUFSIZE);
 
-     wxBackedInputStream in(bf);
 
-     char buf[TESTSIZE * 2];
 
-     CPPUNIT_ASSERT_EQUAL(TESTSIZE, in.Read(buf, TESTSIZE * 2).LastRead());
 
-     CPPUNIT_ASSERT(in.Eof());
 
-     CPPUNIT_ASSERT(memcmp(buf, m_testdata, TESTSIZE) == 0);
 
- }
 
- void backStream::EmptyStream()
 
- {
 
-     wxBackingFile bf(new TestStream(m_testdata, 0), BUFSIZE);
 
-     wxBackedInputStream in(bf);
 
-     char buf[1];
 
-     CPPUNIT_ASSERT_EQUAL(size_t(0), in.Read(buf, 1).LastRead());
 
-     CPPUNIT_ASSERT(in.Eof());
 
- }
 
- void backStream::Read(wxInputStream& in,
 
-                       size_t size1,
 
-                       size_t size2,
 
-                       size_t size3)
 
- {
 
-     const size_t remainder = TESTSIZE - size1 - size2 - size3;
 
-     char buf[TESTSIZE];
 
-     char *testdata = m_testdata;
 
-     in.SeekI(0);
 
-     CPPUNIT_ASSERT_EQUAL(size1, in.Read(buf, size1).LastRead());
 
-     CPPUNIT_ASSERT(in.IsOk());
 
-     CPPUNIT_ASSERT(memcmp(buf, testdata, size1) == 0);
 
-     testdata += size1;
 
-     CPPUNIT_ASSERT_EQUAL(size2, in.Read(buf, size2).LastRead());
 
-     CPPUNIT_ASSERT(in.IsOk());
 
-     CPPUNIT_ASSERT(memcmp(buf, testdata, size2) == 0);
 
-     testdata += size2;
 
-     CPPUNIT_ASSERT_EQUAL(size3, in.Read(buf, size3).LastRead());
 
-     CPPUNIT_ASSERT(in.IsOk());
 
-     CPPUNIT_ASSERT(memcmp(buf, testdata, size3) == 0);
 
-     testdata += size3;
 
-     CPPUNIT_ASSERT_EQUAL(remainder, in.Read(buf, TESTSIZE).LastRead());
 
-     CPPUNIT_ASSERT(in.Eof());
 
-     CPPUNIT_ASSERT(memcmp(buf, testdata, remainder) == 0);
 
-     CPPUNIT_ASSERT_EQUAL(size_t(0), in.Read(buf, TESTSIZE).LastRead());
 
-     CPPUNIT_ASSERT(in.Eof());
 
- }
 
- void backStream::Len(wxBackedInputStream& in)
 
- {
 
-     CPPUNIT_ASSERT_EQUAL(wxFileOffset(TESTSIZE), in.FindLength());
 
- }
 
- void backStream::Seek(wxInputStream& in)
 
- {
 
-     CPPUNIT_ASSERT_EQUAL(wxFileOffset(TESTSIZE), in.SeekI(TESTSIZE));
 
-     in.GetC();
 
-     CPPUNIT_ASSERT_EQUAL(size_t(0), in.LastRead());
 
-     CPPUNIT_ASSERT(in.Eof());
 
-     for (wxFileOffset i = TESTSIZE - 1; i >= 0; i--) {
 
-         CPPUNIT_ASSERT_EQUAL(i, in.SeekI(i));
 
-         CPPUNIT_ASSERT_EQUAL(i, in.TellI());
 
-         CPPUNIT_ASSERT_EQUAL(int(i), in.GetC());
 
-         CPPUNIT_ASSERT_EQUAL(size_t(1), in.LastRead());
 
-         CPPUNIT_ASSERT(in.IsOk());
 
-     }
 
- }
 
- // Register the stream sub suite, by using some stream helper macro.
 
- // Note: Don't forget to connect it to the base suite (See: bstream.cpp => StreamCase::suite())
 
- STREAM_TEST_SUBSUITE_NAMED_REGISTRATION(backStream)
 
 
  |