]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/archive/archivetest.cpp
* wx.Panel doesn't have a SetTitle anymore. What was this used for
[wxWidgets.git] / tests / archive / archivetest.cpp
index b9a6191c29086b69ad100ae245f3f3ddffbf487c..4550f7b9afe5b18139652df5f82d7819a342bf48 100644 (file)
@@ -42,7 +42,7 @@ using std::auto_ptr;
     (__GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
 #   define WXARC_MEMBER_TEMPLATES
 #endif
-#if defined _MSC_VER && _MSC_VER >= 1310
+#if defined _MSC_VER && _MSC_VER >= 1310 && !defined __WIN64__
 #   define WXARC_MEMBER_TEMPLATES
 #endif
 #if defined __BORLANDC__ && __BORLANDC__ >= 0x530
@@ -196,7 +196,8 @@ TestInputStream::TestInputStream(const TestInputStream& in)
   : wxInputStream(),
     m_options(in.m_options),
     m_pos(in.m_pos),
-    m_size(in.m_size)
+    m_size(in.m_size),
+    m_eoftype(in.m_eoftype)
 {
     m_data = new char[m_size];
     memcpy(m_data, in.m_data, m_size);
@@ -251,16 +252,28 @@ size_t TestInputStream::OnSysRead(void *buffer, size_t size)
 {
     if (!IsOk() || !size)
         return 0;
-    if (m_size <= m_pos) {
-        m_lasterror = wxSTREAM_EOF;
-        return 0;
+
+    size_t count;
+
+    if (m_pos >= m_size)
+        count = 0;
+    else if (m_size - m_pos < size)
+        count = m_size - m_pos;
+    else
+        count = size;
+
+    if (count) {
+        memcpy(buffer, m_data + m_pos, count);
+        m_pos += count;
     }
 
-    if (m_size - m_pos < size)
-        size = m_size - m_pos;
-    memcpy(buffer, m_data + m_pos, size);
-    m_pos += size;
-    return size;
+    if (((m_eoftype & AtLast) != 0 && m_pos >= m_size) || count < size)
+        if ((m_eoftype & WithError) != 0)
+            m_lasterror = wxSTREAM_READ_ERROR;
+        else
+            m_lasterror = wxSTREAM_EOF;
+
+    return count;
 }
 
 
@@ -320,7 +333,7 @@ private:
 TempDir::TempDir()
 {
     wxString tmp = wxFileName::CreateTempFileName(_T("arctest-"));
-    if (tmp != wxEmptyString) {
+    if (!tmp.empty()) {
         wxRemoveFile(tmp);
         m_original = wxGetCwd();
         CPPUNIT_ASSERT(wxMkdir(tmp, 0700));
@@ -331,7 +344,7 @@ TempDir::TempDir()
 
 TempDir::~TempDir()
 {
-    if (m_tmp != wxEmptyString) {
+    if (!m_tmp.empty()) {
         wxSetWorkingDirectory(m_original);
         RemoveDir(m_tmp);
     }
@@ -424,17 +437,16 @@ PFileOutputStream::~PFileOutputStream()
 template <class ClassFactoryT>
 ArchiveTestCase<ClassFactoryT>::ArchiveTestCase(
     string name,
-    int id,
     ClassFactoryT *factory,
     int options,
     const wxString& archiver,
     const wxString& unarchiver)
   :
-    CppUnit::TestCase(name),
+    CppUnit::TestCase(TestId::MakeId() + name),
     m_factory(factory),
     m_options(options),
     m_timeStamp(1, wxDateTime::Mar, 2004, 12, 0),
-    m_id(id),
+    m_id(TestId::GetId()),
     m_archiver(archiver),
     m_unarchiver(unarchiver)
 {
@@ -464,7 +476,7 @@ void ArchiveTestCase<ClassFactoryT>::runTest()
     // check archive could be created
     CPPUNIT_ASSERT(out.GetLength() > 0);
 
-    TestInputStream in(out);
+    TestInputStream in(out, m_id % ((m_options & PipeIn) ? 4 : 3));
 
     TestIterator(in);
     in.Rewind();
@@ -929,7 +941,7 @@ void ArchiveTestCase<ClassFactoryT>::VerifyDir(wxString& path,
 
             const TestEntry& testEntry = *it->second;
 
-#ifndef __WXMSW__
+#if 0 //ndef __WXMSW__
             CPPUNIT_ASSERT_MESSAGE("timestamp check" + error_context,
                                    testEntry.GetDateTime() ==
                                    wxFileName(path).GetModificationTime());
@@ -1156,12 +1168,24 @@ void ArchiveTestCase<ClassFactoryT>::OnSetNotifier(EntryT& entry)
 }
 
 
+///////////////////////////////////////////////////////////////////////////////
+// Make the ids
+
+int TestId::m_seed = 6219;
+
+// static
+string TestId::MakeId()
+{
+    m_seed = (m_seed * 171) % 30269;
+    return (const char *)wxString::Format(_T("%-6d"), m_seed).mb_str();
+}
+
+
 ///////////////////////////////////////////////////////////////////////////////
 // Suite base
 
 ArchiveTestSuite::ArchiveTestSuite(string name)
   : CppUnit::TestSuite("archive/" + name),
-    m_id(0),
     m_name(name.c_str(), *wxConvCurrent)
 {
     m_name = _T("wx") + m_name.Left(1).Upper() + m_name.Mid(1).Lower();
@@ -1209,13 +1233,11 @@ ArchiveTestSuite *ArchiveTestSuite::makeSuite()
                     string descr = Description(m_name, options,
                                                generic != 0, *j, *i);
 
-                    CppUnit::Test *test = makeTest(descr, m_id, options,
+                    CppUnit::Test *test = makeTest(descr, options,
                                                    generic != 0, *j, *i);
 
-                    if (test) {
+                    if (test)
                         addTest(test);
-                        m_id++;
-                    }
                 }
 
     return this;
@@ -1223,7 +1245,6 @@ ArchiveTestSuite *ArchiveTestSuite::makeSuite()
 
 CppUnit::Test *ArchiveTestSuite::makeTest(
     string WXUNUSED(descr),
-    int WXUNUSED(id),
     int WXUNUSED(options),
     bool WXUNUSED(genericInterface),
     const wxString& WXUNUSED(archiver),
@@ -1241,7 +1262,6 @@ string ArchiveTestSuite::Description(const wxString& type,
                                      const wxString& unarchiver)
 {
     wxString descr;
-    descr << m_id << _T(" ");
 
     if (genericInterface)
         descr << _T("wxArchive (") << type << _T(")");