]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/filesys/filesystest.cpp
Rename some tests to avoid conflicts with project builder GUI debugger
[wxWidgets.git] / tests / filesys / filesystest.cpp
diff --git a/tests/filesys/filesystest.cpp b/tests/filesys/filesystest.cpp
new file mode 100644 (file)
index 0000000..90ade21
--- /dev/null
@@ -0,0 +1,126 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        tests/filesys/filesys.cpp
+// Purpose:     wxFileSystem unit test
+// Author:      Vaclav Slavik
+// Created:     2004-03-28
+// RCS-ID:      $Id$
+// Copyright:   (c) 2004 Vaclav Slavik
+///////////////////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/wx.h"
+#endif // WX_PRECOMP
+
+#include "wx/filesys.h"
+
+#include "wx/cppunit.h"
+
+#if wxUSE_FILESYSTEM
+
+// ----------------------------------------------------------------------------
+// helpers
+// ----------------------------------------------------------------------------
+
+// a hack to let us use wxFileSystemHandler's protected methods:
+class UrlTester : public wxFileSystemHandler
+{
+public:
+    UrlTester() : wxFileSystemHandler() {}
+
+    wxString Protocol(const wxString& p) { return GetProtocol(p); }
+    wxString LeftLocation(const wxString& p) { return GetLeftLocation(p); }
+    wxString RightLocation(const wxString& p) { return GetRightLocation(p); }
+    wxString Anchor(const wxString& p) { return GetAnchor(p); }
+
+    bool CanOpen(const wxString& WXUNUSED(url)) { return false; }
+    wxFSFile *OpenFile(wxFileSystem& WXUNUSED(fs),
+                       const wxString& WXUNUSED(url)) { return NULL; }
+
+
+};
+
+
+// ----------------------------------------------------------------------------
+// test class
+// ----------------------------------------------------------------------------
+
+class FileSystemTestCase : public CppUnit::TestCase
+{
+public:
+    FileSystemTestCase() { }
+
+private:
+    CPPUNIT_TEST_SUITE( FileSystemTestCase );
+        CPPUNIT_TEST( UrlParsing );
+        CPPUNIT_TEST( FileNameToUrlConversion );
+    CPPUNIT_TEST_SUITE_END();
+
+    void UrlParsing();
+    void FileNameToUrlConversion();
+
+    DECLARE_NO_COPY_CLASS(FileSystemTestCase)
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( FileSystemTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( FileSystemTestCase, "FileSystemTestCase" );
+
+void FileSystemTestCase::UrlParsing()
+{
+    static const struct Data
+    {
+        const wxChar *url;
+        const wxChar *protocol, *left, *right, *anchor;
+    } data[] =
+    {
+        // simple case:
+        { _T("http://www.root.cz/index.html"),
+                _T("http"), _T(""), _T("//www.root.cz/index.html"), _T("")},
+        // anchors:
+        { _T("http://www.root.cz/index.html#lbl"),
+                _T("http"), _T(""), _T("//www.root.cz/index.html"), _T("lbl")},
+        // file is default protocol:
+        { _T("testfile.html"),
+                _T("file"), _T(""), _T("testfile.html"), _T("")},
+        // stacked protocols:
+        { _T("file:myzipfile.zip#zip:index.htm"),
+                _T("zip"), _T("file:myzipfile.zip"), _T("index.htm"), _T("")},
+        // changes to ':' parsing often break things:
+        { _T("file:a#b:foo"),
+                _T("b"), _T("file:a"), _T("foo"), _T("")}
+    };
+
+    UrlTester tst;
+    for ( size_t n = 0; n < WXSIZEOF(data); n++ )
+    {
+        const Data& d = data[n];
+        CPPUNIT_ASSERT( tst.Protocol(d.url) == d.protocol );
+        CPPUNIT_ASSERT( tst.LeftLocation(d.url) == d.left );
+        CPPUNIT_ASSERT( tst.RightLocation(d.url) == d.right );
+        CPPUNIT_ASSERT( tst.Anchor(d.url) == d.anchor );
+    }
+}
+    
+void FileSystemTestCase::FileNameToUrlConversion()
+{
+#ifdef __WINDOWS__
+    wxFileName fn1(_T("\\\\server\\share\\path\\to\\file"));
+    wxString url1 = wxFileSystem::FileNameToURL(fn1);
+   
+    CPPUNIT_ASSERT( fn1.SameAs(wxFileSystem::URLToFileName(url1)) );
+#endif
+}
+
+#endif // wxUSE_FILESYSTEM