X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/72ddfce0ddea31ba493cf7af6ad428ab7c2bca4f..a9e994615409e36d441135e4fa0761cf0398a2aa:/tests/filesys/filesystest.cpp diff --git a/tests/filesys/filesystest.cpp b/tests/filesys/filesystest.cpp new file mode 100644 index 0000000000..90ade21d31 --- /dev/null +++ b/tests/filesys/filesystest.cpp @@ -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