]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/archive/archivetest.h
Patch from Bo for new API, various fixes, live update for column header
[wxWidgets.git] / tests / archive / archivetest.h
index 3799e3cd598bd7c4cb055ea431ddd8c298207f2f..0d24a105f645d27ca1cfb8cdd8f3ec5da7f8e00f 100644 (file)
@@ -38,6 +38,7 @@ public:
 
     int GetOptions() const { return m_options; }
     wxFileOffset GetLength() const { return m_size; }
+    bool IsSeekable() const { return (m_options & PipeOut) == 0; }
 
     // gives away the data, this stream is then empty, and can be reused
     void GetData(char*& data, size_t& size);
@@ -59,16 +60,28 @@ private:
 class TestInputStream : public wxInputStream
 {
 public:
+    // various streams have implemented eof differently, so check the archive
+    // stream works with all the possibilities (bit flags that can be ORed)
+    enum EofTypes {
+        AtLast    = 0x01,   // eof before an attempt to read past the last byte
+        WithError = 0x02    // give an error instead of eof
+    };
+    
     // ctor takes the data from the output stream, which is then empty
-    TestInputStream(TestOutputStream& out) : m_data(NULL) { SetData(out); }
+    TestInputStream(TestOutputStream& out, int eoftype)
+        : m_data(NULL), m_eoftype(eoftype) { SetData(out); }
     // this ctor 'dups'
     TestInputStream(const TestInputStream& in);
     ~TestInputStream() { delete [] m_data; }
 
     void Rewind();
     wxFileOffset GetLength() const { return m_size; }
+    bool IsSeekable() const { return (m_options & PipeIn) == 0; }
     void SetData(TestOutputStream& out);
 
+    void Chop(size_t size) { m_size = size; }
+    char& operator [](size_t pos) { return m_data[pos]; }
+
 private:
     wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode);
     wxFileOffset OnSysTell() const;
@@ -78,6 +91,7 @@ private:
     size_t m_pos;
     size_t m_size;
     char *m_data;
+    int m_eoftype;
 };
 
 
@@ -135,7 +149,6 @@ class ArchiveTestCase : public CppUnit::TestCase
 {
 public:
     ArchiveTestCase(std::string name,
-                    int id,
                     ClassFactoryT *factory,
                     int options,
                     const wxString& archiver = wxEmptyString,
@@ -207,6 +220,22 @@ protected:
 };
 
 
+///////////////////////////////////////////////////////////////////////////////
+// Make ids
+
+class TestId
+{
+public:
+    // make a new id and return it as a string
+    static std::string MakeId();
+    // get the current id
+    static int GetId() { return m_seed; }
+private:
+    // seed for generating the ids
+    static int m_seed;
+};
+
+
 ///////////////////////////////////////////////////////////////////////////////
 // Base class for the archive test suites
 
@@ -216,12 +245,9 @@ public:
     ArchiveTestSuite(std::string name);
 
 protected:
-    int m_id;
-
     virtual ArchiveTestSuite *makeSuite();
 
     virtual CppUnit::Test *makeTest(std::string descr,
-                                    int id,
                                     int options,
                                     bool genericInterface,
                                     const wxString& archiver,