]> git.saurik.com Git - wxWidgets.git/blame - tests/filesys/filesys.cpp
wxStaticBitmapBase::DoGetBestSize
[wxWidgets.git] / tests / filesys / filesys.cpp
CommitLineData
4827cbd9
VS
1///////////////////////////////////////////////////////////////////////////////
2// Name: tests/filesys/filesys.cpp
3// Purpose: wxFileSystem unit test
4// Author: Vaclav Slavik
5// Created: 2004-03-28
6// RCS-ID: $Id$
7// Copyright: (c) 2004 Vaclav Slavik
8///////////////////////////////////////////////////////////////////////////////
9
10// ----------------------------------------------------------------------------
11// headers
12// ----------------------------------------------------------------------------
13
20f46e8d
VS
14#include "wx/wxprec.h"
15
16#ifdef __BORLANDC__
17 #pragma hdrstop
18#endif
19
20#ifndef WX_PRECOMP
21 #include "wx/wx.h"
22#endif // WX_PRECOMP
23
4827cbd9
VS
24#include "wx/filesys.h"
25
26#include "wx/cppunit.h"
27
28#if wxUSE_FILESYSTEM
29
30// ----------------------------------------------------------------------------
31// helpers
32// ----------------------------------------------------------------------------
33
34// a hack to let us use wxFileSystemHandler's protected methods:
35class UrlTester : public wxFileSystemHandler
36{
37public:
38 UrlTester() : wxFileSystemHandler() {}
39
40 wxString Protocol(const wxString& p) { return GetProtocol(p); }
41 wxString LeftLocation(const wxString& p) { return GetLeftLocation(p); }
42 wxString RightLocation(const wxString& p) { return GetRightLocation(p); }
43 wxString Anchor(const wxString& p) { return GetAnchor(p); }
44
45 bool CanOpen(const wxString& WXUNUSED(url)) { return false; }
46 wxFSFile *OpenFile(wxFileSystem& WXUNUSED(fs),
47 const wxString& WXUNUSED(url)) { return NULL; }
48
49
50};
51
52
53// ----------------------------------------------------------------------------
54// test class
55// ----------------------------------------------------------------------------
56
57class FileSystemTestCase : public CppUnit::TestCase
58{
59public:
60 FileSystemTestCase() { }
61
62private:
63 CPPUNIT_TEST_SUITE( FileSystemTestCase );
64 CPPUNIT_TEST( UrlParsing );
65 CPPUNIT_TEST_SUITE_END();
66
67 void UrlParsing();
68
20f46e8d 69 DECLARE_NO_COPY_CLASS(FileSystemTestCase)
4827cbd9
VS
70};
71
72// register in the unnamed registry so that these tests are run by default
73CPPUNIT_TEST_SUITE_REGISTRATION( FileSystemTestCase );
74
75// also include in it's own registry so that these tests can be run alone
76CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( FileSystemTestCase, "FileSystemTestCase" );
77
78void FileSystemTestCase::UrlParsing()
79{
80 static const struct Data
81 {
20f46e8d
VS
82 const wxChar *url;
83 const wxChar *protocol, *left, *right, *anchor;
4827cbd9
VS
84 } data[] =
85 {
86 // simple case:
87 { _T("http://www.root.cz/index.html"),
88 _T("http"), _T(""), _T("//www.root.cz/index.html"), _T("")},
89 // anchors:
90 { _T("http://www.root.cz/index.html#lbl"),
91 _T("http"), _T(""), _T("//www.root.cz/index.html"), _T("lbl")},
92 // file is default protocol:
93 { _T("testfile.html"),
94 _T("file"), _T(""), _T("testfile.html"), _T("")},
95 // stacked protocols:
96 { _T("file:myzipfile.zip#zip:index.htm"),
97 _T("zip"), _T("file:myzipfile.zip"), _T("index.htm"), _T("")},
98 // changes to ':' parsing often break things:
99 { _T("file:a#b:foo"),
100 _T("b"), _T("file:a"), _T("foo"), _T("")}
101 };
102
103 UrlTester tst;
104 for ( size_t n = 0; n < WXSIZEOF(data); n++ )
105 {
106 const Data& d = data[n];
107 CPPUNIT_ASSERT( tst.Protocol(d.url) == d.protocol );
108 CPPUNIT_ASSERT( tst.LeftLocation(d.url) == d.left );
109 CPPUNIT_ASSERT( tst.RightLocation(d.url) == d.right );
110 CPPUNIT_ASSERT( tst.Anchor(d.url) == d.anchor );
111 }
112}
113
114#endif // wxUSE_FILESYSTEM