git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27987 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			127 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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
 |