X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a9e994615409e36d441135e4fa0761cf0398a2aa..f65bb0f8ab88e80a367b6fa361e92545c04f6914:/tests/filename/filenametest.cpp diff --git a/tests/filename/filenametest.cpp b/tests/filename/filenametest.cpp index f91ab53ee4..27ad3ae870 100644 --- a/tests/filename/filenametest.cpp +++ b/tests/filename/filenametest.cpp @@ -11,7 +11,7 @@ // headers // ---------------------------------------------------------------------------- -#include "wx/wxprec.h" +#include "testprec.h" #ifdef __BORLANDC__ #pragma hdrstop @@ -21,8 +21,7 @@ #endif // WX_PRECOMP #include "wx/filename.h" - -#include "wx/cppunit.h" +#include "wx/filefn.h" // ---------------------------------------------------------------------------- // test data @@ -89,11 +88,19 @@ private: CPPUNIT_TEST( TestConstruction ); CPPUNIT_TEST( TestSplit ); CPPUNIT_TEST( TestSetPath ); + CPPUNIT_TEST( TestStrip ); +#ifdef __WINDOWS__ + CPPUNIT_TEST( TestShortLongPath ); +#endif // __WINDOWS__ CPPUNIT_TEST_SUITE_END(); void TestConstruction(); void TestSplit(); void TestSetPath(); + void TestStrip(); +#ifdef __WINDOWS__ + void TestShortLongPath(); +#endif // __WINDOWS__ DECLARE_NO_COPY_CLASS(FileNameTestCase) }; @@ -116,6 +123,20 @@ void FileNameTestCase::TestConstruction() CPPUNIT_ASSERT( fullname == fni.fullname ); CPPUNIT_ASSERT( fn.Normalize(wxPATH_NORM_ALL, _T(""), fni.format) ); + + if ( *fni.volume && *fni.path ) + { + // check that specifying the volume separately or as part of the + // path doesn't make any difference + wxString pathWithVolume = fni.volume; + pathWithVolume += wxFileName::GetVolumeSeparator(fni.format); + pathWithVolume += fni.path; + + CPPUNIT_ASSERT( fn == wxFileName(pathWithVolume, + fni.name, + fni.ext, + fni.format) ); + } } } @@ -133,6 +154,10 @@ void FileNameTestCase::TestSplit() CPPUNIT_ASSERT( name == fni.name ); CPPUNIT_ASSERT( ext == fni.ext ); } + + // special case of empty extension + wxFileName fn(_T("foo.")); + CPPUNIT_ASSERT( fn.GetFullPath() == _T("foo.") ); } void FileNameTestCase::TestSetPath() @@ -146,3 +171,34 @@ void FileNameTestCase::TestSetPath() CPPUNIT_ASSERT( fn.SameAs(wxFileName(_T("/usr/local/bin/ls"), wxPATH_UNIX)) ); } +wxString wxTestStripExtension(wxString szFile) +{ + wxStripExtension(szFile); + return szFile; +} + +void FileNameTestCase::TestStrip() +{ + //test a crash + CPPUNIT_ASSERT( wxTestStripExtension( _T("") ) == _T("") ); + + //others + CPPUNIT_ASSERT( wxTestStripExtension( _T(".") ) == _T("") ); + CPPUNIT_ASSERT( wxTestStripExtension( _T(".wav") ) == _T("") ); + CPPUNIT_ASSERT( wxTestStripExtension( _T("good.wav") ) == _T("good") ); + CPPUNIT_ASSERT( wxTestStripExtension( _T("good.wav.wav") ) == _T("good.wav") ); +} + +#ifdef __WINDOWS__ + +void FileNameTestCase::TestShortLongPath() +{ + wxFileName fn(_T("C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe")); + + // incredibly enough, GetLongPath() used to return different results during + // the first and subsequent runs, test for this + CPPUNIT_ASSERT_EQUAL( fn.GetLongPath(), fn.GetLongPath() ); + CPPUNIT_ASSERT_EQUAL( fn.GetShortPath(), fn.GetShortPath() ); +} + +#endif // __WINDOWS__