]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed wxSplitPath() bug and added tests for it
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 17 Jan 2001 16:08:15 +0000 (16:08 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 17 Jan 2001 16:08:15 +0000 (16:08 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9116 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/console/console.cpp
src/common/filename.cpp

index cdd4e8f68fc20f78b8c28382975d9f4f5b8d3f92..3bf7de87f0674f6b8fece544fd8c93566b09d440 100644 (file)
 
 //#define TEST_ARRAYS
 //#define TEST_CMDLINE
 
 //#define TEST_ARRAYS
 //#define TEST_CMDLINE
-#define TEST_DATETIME
+//#define TEST_DATETIME
 //#define TEST_DIR
 //#define TEST_DLLLOADER
 //#define TEST_ENVIRON
 //#define TEST_EXECUTE
 //#define TEST_FILE
 //#define TEST_FILECONF
 //#define TEST_DIR
 //#define TEST_DLLLOADER
 //#define TEST_ENVIRON
 //#define TEST_EXECUTE
 //#define TEST_FILE
 //#define TEST_FILECONF
-//#define TEST_FILENAME
+#define TEST_FILENAME
 //#define TEST_FTP
 //#define TEST_HASH
 //#define TEST_LIST
 //#define TEST_FTP
 //#define TEST_HASH
 //#define TEST_LIST
@@ -596,18 +596,20 @@ static void TestFileConfRead()
 
 #include <wx/filename.h>
 
 
 #include <wx/filename.h>
 
+static const wxChar *filenames[] =
+{
+    _T("/usr/bin/ls"),
+    _T("/usr/bin/"),
+    _T("~/.zshrc"),
+    _T("../../foo"),
+    _T("~/foo.bar"),
+    _T("/tmp/wxwin.tar.bz"),
+};
+
 static void TestFileNameConstruction()
 {
     puts("*** testing wxFileName construction ***");
 
 static void TestFileNameConstruction()
 {
     puts("*** testing wxFileName construction ***");
 
-    static const wxChar *filenames[] =
-    {
-        _T("/usr/bin/ls"),
-        _T("/usr/bin/"),
-        _T("~/.zshrc"),
-        _T("../../foo"),
-    };
-
     for ( size_t n = 0; n < WXSIZEOF(filenames); n++ )
     {
         wxFileName fn(filenames[n], wxPATH_UNIX);
     for ( size_t n = 0; n < WXSIZEOF(filenames); n++ )
     {
         wxFileName fn(filenames[n], wxPATH_UNIX);
@@ -626,6 +628,21 @@ static void TestFileNameConstruction()
     puts("");
 }
 
     puts("");
 }
 
+static void TestFileNameSplit()
+{
+    puts("*** testing wxFileName splitting ***");
+
+    for ( size_t n = 0; n < WXSIZEOF(filenames); n++ )
+    {
+        wxString path, name, ext;
+        wxFileName::SplitPath(filenames[n], &path, &name, &ext);
+        printf("%s -> path = '%s', name = '%s', ext = '%s'\n",
+               filenames[n], path.c_str(), name.c_str(), ext.c_str());
+    }
+
+    puts("");
+}
+
 static void TestFileNameComparison()
 {
     // TODO!
 static void TestFileNameComparison()
 {
     // TODO!
@@ -4000,9 +4017,10 @@ int main(int argc, char **argv)
 #endif // TEST_FILE
 
 #ifdef TEST_FILENAME
 #endif // TEST_FILE
 
 #ifdef TEST_FILENAME
-    TestFileNameConstruction();
+    TestFileNameSplit();
     if ( 0 )
     {
     if ( 0 )
     {
+        TestFileNameConstruction();
         TestFileNameCwd();
         TestFileNameComparison();
         TestFileNameOperations();
         TestFileNameCwd();
         TestFileNameComparison();
         TestFileNameOperations();
index 91318e43bf2bdfe9b481b5d58c8e8620f067be7d..3bb86945343298d5d9853574aee1b3f9013117e4 100644 (file)
@@ -535,9 +535,12 @@ void wxFileName::SplitPath(const wxString& fullpath,
 
     if ( pstrName )
     {
 
     if ( pstrName )
     {
+        // take all characters starting from the one after the last slash and
+        // up to, but excluding, the last dot
         size_t nStart = posLastSlash == wxString::npos ? 0 : posLastSlash + 1;
         size_t nStart = posLastSlash == wxString::npos ? 0 : posLastSlash + 1;
-        size_t count = posLastDot == wxString::npos ? wxString::npos
-                                                    : posLastDot - posLastSlash;
+        size_t count = posLastDot == wxString::npos
+                        ? wxString::npos
+                        : posLastDot - posLastSlash - 1;
 
         *pstrName = fullpath.Mid(nStart, count);
     }
 
         *pstrName = fullpath.Mid(nStart, count);
     }