]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/console/console.cpp
compilation fix
[wxWidgets.git] / samples / console / console.cpp
index 051b4e253db50cf0dc8e27a2237436dd14ed9692..052ab5a0ee135081fd995c5cbdf5489fb7b43e98 100644 (file)
 // conditional compilation
 // ----------------------------------------------------------------------------
 
 // conditional compilation
 // ----------------------------------------------------------------------------
 
+/*
+   A note about all these conditional compilation macros: this file is used
+   both as a test suite for various non-GUI wxWindows classes and as a
+   scratchpad for quick tests. So there are two compilation modes: if you
+   define TEST_ALL all tests are run, otherwise you may enable the individual
+   tests individually in the "#else" branch below.
+ */
+
 // what to test (in alphabetic order)? uncomment the line below to do all tests
 // what to test (in alphabetic order)? uncomment the line below to do all tests
-//#define TEST_ALL
+// #define TEST_ALL
 #ifdef TEST_ALL
     #define TEST_ARRAYS
     #define TEST_CHARSET
 #ifdef TEST_ALL
     #define TEST_ARRAYS
     #define TEST_CHARSET
     #define TEST_WCHAR
     #define TEST_ZIP
     #define TEST_ZLIB
     #define TEST_WCHAR
     #define TEST_ZIP
     #define TEST_ZLIB
+
+    #undef TEST_ALL
+    static const bool TEST_ALL = TRUE;
 #else
     #define TEST_FILENAME
 #else
     #define TEST_FILENAME
+
+    static const bool TEST_ALL = FALSE;
 #endif
 
 #endif
 
-#ifdef TEST_SNGLINST
-    #include "wx/snglinst.h"
-#endif // TEST_SNGLINST
+// some tests are interactive, define this to run them
+#ifdef TEST_INTERACTIVE
+    #undef TEST_INTERACTIVE
+
+    static const bool TEST_INTERACTIVE = FALSE;
+#else
+    static const bool TEST_INTERACTIVE = FALSE;
+#endif
 
 // ----------------------------------------------------------------------------
 // test class for container objects
 
 // ----------------------------------------------------------------------------
 // test class for container objects
@@ -236,7 +254,7 @@ static void TestCmdLineConvert()
         printf("\targc = %u\n", count);
         for ( size_t arg = 0; arg < count; arg++ )
         {
         printf("\targc = %u\n", count);
         for ( size_t arg = 0; arg < count; arg++ )
         {
-            printf("\targv[%u] = %s\n", arg, args[arg]);
+            printf("\targv[%u] = %s\n", arg, args[arg].c_str());
         }
     }
 }
         }
     }
 }
@@ -740,6 +758,17 @@ static void TestFileConfRead()
 
 #include "wx/filename.h"
 
 
 #include "wx/filename.h"
 
+static void DumpFileName(const wxFileName& fn)
+{
+    wxString full = fn.GetFullPath();
+
+    wxString vol, path, name, ext;
+    wxFileName::SplitPath(full, &vol, &path, &name, &ext);
+
+    wxPrintf(_T("Filename '%s' -> vol '%s', path '%s', name '%s', ext '%s'\n"),
+             full.c_str(), vol.c_str(), path.c_str(), name.c_str(), ext.c_str());
+}
+
 static struct FileNameInfo
 {
     const wxChar *fullname;
 static struct FileNameInfo
 {
     const wxChar *fullname;
@@ -772,9 +801,11 @@ static struct FileNameInfo
 
     // Mac file names
     { _T("Volume:Dir:File"), _T("Volume"), _T("Dir"), _T("File"), _T(""), TRUE, wxPATH_MAC },
 
     // Mac file names
     { _T("Volume:Dir:File"), _T("Volume"), _T("Dir"), _T("File"), _T(""), TRUE, wxPATH_MAC },
+    { _T("Volume:Dir:Subdir:File"), _T("Volume"), _T("Dir:Subdir"), _T("File"), _T(""), TRUE, wxPATH_MAC },
+    { _T("Volume:"), _T("Volume"), _T(""), _T(""), _T(""), TRUE, wxPATH_MAC },
     { _T(":Dir:File"), _T(""), _T("Dir"), _T("File"), _T(""), FALSE, wxPATH_MAC },
     { _T(":Dir:File"), _T(""), _T("Dir"), _T("File"), _T(""), FALSE, wxPATH_MAC },
-    { _T(":File"), _T(""), _T(""), _T("File"), _T(""), FALSE, wxPATH_MAC },
-    { _T("File"), _T(""), _T(""), _T("File"), _T(""), FALSE, wxPATH_MAC },
+    { _T(":File.Ext"), _T(""), _T(""), _T("File"), _T(".Ext"), FALSE, wxPATH_MAC },
+    { _T("File.Ext"), _T(""), _T(""), _T("File"), _T(".Ext"), FALSE, wxPATH_MAC },
 
     // VMS file names
     { _T("device:[dir1.dir2.dir3]file.txt"), _T("device"), _T("dir1.dir2.dir3"), _T("file"), _T("txt"), TRUE, wxPATH_VMS },
 
     // VMS file names
     { _T("device:[dir1.dir2.dir3]file.txt"), _T("device"), _T("dir1.dir2.dir3"), _T("file"), _T("txt"), TRUE, wxPATH_VMS },
@@ -797,7 +828,7 @@ static void TestFileNameConstruction()
             printf("ERROR: fullname should be '%s'\n", fni.fullname);
         }
 
             printf("ERROR: fullname should be '%s'\n", fni.fullname);
         }
 
-        bool isAbsolute = fn.IsAbsolute(fni.format);
+        bool isAbsolute = fn.IsAbsolute();
         printf("'%s' is %s (%s)\n\t",
                fullname.c_str(),
                isAbsolute ? "absolute" : "relative",
         printf("'%s' is %s (%s)\n\t",
                fullname.c_str(),
                isAbsolute ? "absolute" : "relative",
@@ -873,6 +904,52 @@ static void TestFileNameTemp()
     }
 }
 
     }
 }
 
+static void TestFileNameMakeRelative()
+{
+    puts("*** testing wxFileName::MakeRelativeTo() ***");
+
+    for ( size_t n = 0; n < WXSIZEOF(filenames); n++ )
+    {
+        const FileNameInfo& fni = filenames[n];
+
+        wxFileName fn(fni.fullname, fni.format);
+
+        // choose the base dir of the same format
+        wxString base;
+        switch ( fni.format )
+        {
+            case wxPATH_UNIX:
+                base = "/usr/bin/";
+                break;
+
+            case wxPATH_DOS:
+                base = "c:\\";
+                break;
+
+            case wxPATH_MAC:
+            case wxPATH_VMS:
+                // TODO: I don't know how this is supposed to work there
+                continue;
+
+            case wxPATH_NATIVE: // make gcc happy
+            default:
+                wxFAIL_MSG( "unexpected path format" );
+        }
+
+        printf("'%s' relative to '%s': ",
+               fn.GetFullPath(fni.format).c_str(), base.c_str());
+
+        if ( !fn.MakeRelativeTo(base, fni.format) )
+        {
+            puts("unchanged");
+        }
+        else
+        {
+            printf("'%s'\n", fn.GetFullPath(fni.format).c_str());
+        }
+    }
+}
+
 static void TestFileNameComparison()
 {
     // TODO!
 static void TestFileNameComparison()
 {
     // TODO!
@@ -923,7 +1000,6 @@ static void TestFileSetTimes()
 {
     wxFileName fn(_T("testdata.fc"));
 
 {
     wxFileName fn(_T("testdata.fc"));
 
-    wxDateTime dtAccess, dtMod, dtChange;
     if ( !fn.Touch() )
     {
         wxPrintf(_T("ERROR: Touch() failed.\n"));
     if ( !fn.Touch() )
     {
         wxPrintf(_T("ERROR: Touch() failed.\n"));
@@ -1072,8 +1148,8 @@ static const char *GetLangName(int lang)
 {
     static const char *languageNames[] =
     {
 {
     static const char *languageNames[] =
     {
-        "DEFAULT", 
-        "UNKNOWN", 
+        "DEFAULT",
+        "UNKNOWN",
         "ABKHAZIAN",
         "AFAR",
         "AFRIKAANS",
         "ABKHAZIAN",
         "AFAR",
         "AFRIKAANS",
@@ -2039,7 +2115,7 @@ static void TestRegExReplacement()
     };
 
     const wxChar *pattern = _T("([a-z]+)[^0-9]*([0-9]+)");
     };
 
     const wxChar *pattern = _T("([a-z]+)[^0-9]*([0-9]+)");
-    wxRegEx re = pattern;
+    wxRegEx re(pattern);
 
     wxPrintf(_T("Using pattern '%s' for replacement.\n"), pattern);
 
 
     wxPrintf(_T("Using pattern '%s' for replacement.\n"), pattern);
 
@@ -5009,6 +5085,10 @@ static void TestStringMatch()
 // entry point
 // ----------------------------------------------------------------------------
 
 // entry point
 // ----------------------------------------------------------------------------
 
+#ifdef TEST_SNGLINST
+    #include "wx/snglinst.h"
+#endif // TEST_SNGLINST
+
 int main(int argc, char **argv)
 {
     wxInitializer initializer;
 int main(int argc, char **argv)
 {
     wxInitializer initializer;
@@ -5093,7 +5173,7 @@ int main(int argc, char **argv)
 #endif // TEST_CMDLINE
 
 #ifdef TEST_STRINGS
 #endif // TEST_CMDLINE
 
 #ifdef TEST_STRINGS
-    if ( 0 )
+    if ( TEST_ALL )
     {
         TestPChar();
         TestString();
     {
         TestPChar();
         TestString();
@@ -5104,63 +5184,71 @@ int main(int argc, char **argv)
         TestStringTokenizer();
         TestStringReplace();
     }
         TestStringTokenizer();
         TestStringReplace();
     }
-    TestStringMatch();
+    else
+    {
+        TestStringMatch();
+    }
 #endif // TEST_STRINGS
 
 #ifdef TEST_ARRAYS
 #endif // TEST_STRINGS
 
 #ifdef TEST_ARRAYS
-    if ( 0 )
+    if ( TEST_ALL )
     {
     {
-    wxArrayString a1;
-    a1.Add("tiger");
-    a1.Add("cat");
-    a1.Add("lion");
-    a1.Add("dog");
-    a1.Add("human");
-    a1.Add("ape");
+        wxArrayString a1;
+        a1.Add("tiger");
+        a1.Add("cat");
+        a1.Add("lion");
+        a1.Add("dog");
+        a1.Add("human");
+        a1.Add("ape");
 
 
-    puts("*** Initially:");
+        puts("*** Initially:");
 
 
-    PrintArray("a1", a1);
+        PrintArray("a1", a1);
 
 
-    wxArrayString a2(a1);
-    PrintArray("a2", a2);
+        wxArrayString a2(a1);
+        PrintArray("a2", a2);
 
 
-    wxSortedArrayString a3(a1);
-    PrintArray("a3", a3);
+        wxSortedArrayString a3(a1);
+        PrintArray("a3", a3);
 
 
-    puts("*** After deleting a string from a1");
-    a1.Remove(2);
+        puts("*** After deleting a string from a1");
+        a1.Remove(2);
 
 
-    PrintArray("a1", a1);
-    PrintArray("a2", a2);
-    PrintArray("a3", a3);
+        PrintArray("a1", a1);
+        PrintArray("a2", a2);
+        PrintArray("a3", a3);
 
 
-    puts("*** After reassigning a1 to a2 and a3");
-    a3 = a2 = a1;
-    PrintArray("a2", a2);
-    PrintArray("a3", a3);
+        puts("*** After reassigning a1 to a2 and a3");
+        a3 = a2 = a1;
+        PrintArray("a2", a2);
+        PrintArray("a3", a3);
 
 
-    puts("*** After sorting a1");
-    a1.Sort();
-    PrintArray("a1", a1);
+        puts("*** After sorting a1");
+        a1.Sort();
+        PrintArray("a1", a1);
 
 
-    puts("*** After sorting a1 in reverse order");
-    a1.Sort(TRUE);
-    PrintArray("a1", a1);
+        puts("*** After sorting a1 in reverse order");
+        a1.Sort(TRUE);
+        PrintArray("a1", a1);
 
 
-    puts("*** After sorting a1 by the string length");
-    a1.Sort(StringLenCompare);
-    PrintArray("a1", a1);
+        puts("*** After sorting a1 by the string length");
+        a1.Sort(StringLenCompare);
+        PrintArray("a1", a1);
 
 
-    TestArrayOfObjects();
+        TestArrayOfObjects();
+    }
+    else
+    {
+        TestArrayOfInts();
     }
     }
-    TestArrayOfInts();
 #endif // TEST_ARRAYS
 
 #ifdef TEST_DIR
 #endif // TEST_ARRAYS
 
 #ifdef TEST_DIR
-    if ( 0 )
+    if ( TEST_ALL )
+    {
         TestDirEnum();
         TestDirEnum();
-    TestDirTraverse();
+        TestDirTraverse();
+    }
 #endif // TEST_DIR
 
 #ifdef TEST_DLLLOADER
 #endif // TEST_DIR
 
 #ifdef TEST_DLLLOADER
@@ -5207,20 +5295,29 @@ int main(int argc, char **argv)
 #endif // TEST_LOG
 
 #ifdef TEST_FILE
 #endif // TEST_LOG
 
 #ifdef TEST_FILE
-    if ( 0 )
+    if ( TEST_ALL )
     {
         TestFileRead();
         TestTextFileRead();
     {
         TestFileRead();
         TestTextFileRead();
+        TestFileCopy();
     }
     }
-    TestFileCopy();
 #endif // TEST_FILE
 
 #ifdef TEST_FILENAME
 #endif // TEST_FILE
 
 #ifdef TEST_FILENAME
-    TestFileNameTemp();
-    if ( 0 )
+    if ( 1 )
     {
     {
-    TestFileNameConstruction();
-    TestFileNameSplit();
+        wxFileName fn;
+        fn.Assign("c:\\foo", "bar.baz");
+
+        DumpFileName(fn);
+    }
+
+    if ( TEST_ALL )
+    {
+        TestFileNameConstruction();
+        TestFileNameMakeRelative();
+        TestFileNameSplit();
+        TestFileNameTemp();
         TestFileNameCwd();
         TestFileNameComparison();
         TestFileNameOperations();
         TestFileNameCwd();
         TestFileNameComparison();
         TestFileNameOperations();
@@ -5236,16 +5333,17 @@ int main(int argc, char **argv)
     wxLog::AddTraceMask(FTP_TRACE_MASK);
     if ( TestFtpConnect() )
     {
     wxLog::AddTraceMask(FTP_TRACE_MASK);
     if ( TestFtpConnect() )
     {
-            TestFtpFileSize();
-        if ( 0 )
+        if ( TEST_ALL )
         {
             TestFtpList();
             TestFtpDownload();
             TestFtpMisc();
         {
             TestFtpList();
             TestFtpDownload();
             TestFtpMisc();
+            TestFtpFileSize();
             TestFtpUpload();
         }
             TestFtpUpload();
         }
-        if ( 0 )
-        TestFtpInteractive();
+
+        if ( TEST_INTERACTIVE )
+            TestFtpInteractive();
     }
     //else: connecting to the FTP server failed
 
     }
     //else: connecting to the FTP server failed
 
@@ -5281,7 +5379,8 @@ int main(int argc, char **argv)
     {
         TestSpeed();
     }
     {
         TestSpeed();
     }
-    if ( 0 )
+
+    if ( TEST_ALL )
     {
         TestMultiplication();
         TestDivision();
     {
         TestMultiplication();
         TestDivision();
@@ -5289,8 +5388,8 @@ int main(int argc, char **argv)
         TestLongLongConversion();
         TestBitOperations();
         TestLongLongComparison();
         TestLongLongConversion();
         TestBitOperations();
         TestLongLongComparison();
+        TestLongLongPrint();
     }
     }
-    TestLongLongPrint();
 #endif // TEST_LONGLONG
 
 #ifdef TEST_HASH
 #endif // TEST_LONGLONG
 
 #ifdef TEST_HASH
@@ -5310,11 +5409,11 @@ int main(int argc, char **argv)
 #endif // TEST_MIME
 
 #ifdef TEST_INFO_FUNCTIONS
 #endif // TEST_MIME
 
 #ifdef TEST_INFO_FUNCTIONS
-    TestDiskInfo();
-    if ( 0 )
+    if ( TEST_ALL )
     {
         TestOsInfo();
         TestUserInfo();
     {
         TestOsInfo();
         TestUserInfo();
+        TestDiskInfo();
     }
 #endif // TEST_INFO_FUNCTIONS
 
     }
 #endif // TEST_INFO_FUNCTIONS
 
@@ -5328,32 +5427,29 @@ int main(int argc, char **argv)
 
 #ifdef TEST_REGEX
     // TODO: write a real test using src/regex/tests file
 
 #ifdef TEST_REGEX
     // TODO: write a real test using src/regex/tests file
-    if ( 0 )
+    if ( TEST_ALL )
     {
         TestRegExCompile();
         TestRegExMatch();
         TestRegExSubmatch();
     {
         TestRegExCompile();
         TestRegExMatch();
         TestRegExSubmatch();
-        TestRegExInteractive();
+        TestRegExReplacement();
+
+        if ( TEST_INTERACTIVE )
+            TestRegExInteractive();
     }
     }
-    TestRegExReplacement();
 #endif // TEST_REGEX
 
 #ifdef TEST_REGISTRY
 #endif // TEST_REGEX
 
 #ifdef TEST_REGISTRY
-    if ( 0 )
-        TestRegistryRead();
+    TestRegistryRead();
     TestRegistryAssociation();
 #endif // TEST_REGISTRY
 
 #ifdef TEST_SOCKETS
     TestRegistryAssociation();
 #endif // TEST_REGISTRY
 
 #ifdef TEST_SOCKETS
-    if ( 0 )
-    {
-        TestSocketServer();
-    }
-        TestSocketClient();
+    TestSocketServer();
+    TestSocketClient();
 #endif // TEST_SOCKETS
 
 #ifdef TEST_STREAMS
 #endif // TEST_SOCKETS
 
 #ifdef TEST_STREAMS
-    if ( 0 )
     TestFileStream();
     TestMemoryStream();
 #endif // TEST_STREAMS
     TestFileStream();
     TestMemoryStream();
 #endif // TEST_STREAMS
@@ -5363,7 +5459,7 @@ int main(int argc, char **argv)
 #endif // TEST_TIMER
 
 #ifdef TEST_DATETIME
 #endif // TEST_TIMER
 
 #ifdef TEST_DATETIME
-    if ( 0 )
+    if ( TEST_ALL )
     {
         TestTimeSet();
         TestTimeStatic();
     {
         TestTimeSet();
         TestTimeStatic();
@@ -5378,12 +5474,13 @@ int main(int argc, char **argv)
         TestTimeArithmetics();
         TestTimeHolidays();
         TestTimeFormat();
         TestTimeArithmetics();
         TestTimeHolidays();
         TestTimeFormat();
+        TestTimeSpanFormat();
         TestTimeMS();
 
         TestTimeZoneBug();
     }
         TestTimeMS();
 
         TestTimeZoneBug();
     }
-    TestTimeSpanFormat();
-    if ( 0 )
+
+    if ( TEST_INTERACTIVE )
         TestDateTimeInteractive();
 #endif // TEST_DATETIME
 
         TestDateTimeInteractive();
 #endif // TEST_DATETIME
 
@@ -5393,7 +5490,6 @@ int main(int argc, char **argv)
 #endif // TEST_USLEEP
 
 #ifdef TEST_VCARD
 #endif // TEST_USLEEP
 
 #ifdef TEST_VCARD
-    if ( 0 )
     TestVCardRead();
     TestVCardWrite();
 #endif // TEST_VCARD
     TestVCardRead();
     TestVCardWrite();
 #endif // TEST_VCARD
@@ -5403,13 +5499,11 @@ int main(int argc, char **argv)
 #endif // TEST_WCHAR
 
 #ifdef TEST_ZIP
 #endif // TEST_WCHAR
 
 #ifdef TEST_ZIP
-    if ( 0 )
-        TestZipStreamRead();
+    TestZipStreamRead();
     TestZipFileSystem();
 #endif // TEST_ZIP
 
 #ifdef TEST_ZLIB
     TestZipFileSystem();
 #endif // TEST_ZIP
 
 #ifdef TEST_ZLIB
-    if ( 0 )
     TestZlibStreamWrite();
     TestZlibStreamRead();
 #endif // TEST_ZLIB
     TestZlibStreamWrite();
     TestZlibStreamRead();
 #endif // TEST_ZLIB