wxWidgets/tests/filesys/filesystest.cpp
2004-10-31 04:41:27 +00:00

127 lines
3.9 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// 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