]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/console/console.cpp
Added samples.inc to DATAFILES in Makefile.in - is that enough?
[wxWidgets.git] / samples / console / console.cpp
index b589b8fd9edfc74bfe4de8ce776e8a51666d1b8a..37042997953f80cbb3726bf690c044eeae79c3e6 100644 (file)
 #include <wx/file.h>
 #include <wx/app.h>
 
+// without this pragma, the stupid compiler precompiles #defines below so that
+// changing them doesn't "take place" later!
+#ifdef __VISUALC__
+    #pragma hdrstop
+#endif
+
 // ----------------------------------------------------------------------------
 // conditional compilation
 // ----------------------------------------------------------------------------
 
-// what to test?
+// what to test (in alphabetic order)?
 
 //#define TEST_ARRAYS
 //#define TEST_CMDLINE
+//#define TEST_DATETIME
 //#define TEST_DIR
 //#define TEST_EXECUTE
-#define TEST_FILECONF
+//#define TEST_FILECONF
+//#define TEST_HASH
 //#define TEST_LOG
 //#define TEST_LONGLONG
 //#define TEST_MIME
+//#define TEST_SOCKETS
 //#define TEST_STRINGS
 //#define TEST_THREADS
-//#define TEST_TIME
+#define TEST_TIMER
 
 // ============================================================================
 // implementation
 // ============================================================================
 
-#ifdef TEST_CMDLINE
-
 // ----------------------------------------------------------------------------
 // wxCmdLineParser
 // ----------------------------------------------------------------------------
 
+#ifdef TEST_CMDLINE
+
 #include <wx/cmdline.h>
 #include <wx/datetime.h>
 
@@ -176,16 +185,55 @@ static void TestExecute()
 
 #ifdef __UNIX__
     #define COMMAND "echo hi"
+    #define SHELL_COMMAND "echo hi from shell"
+    #define REDIRECT_COMMAND "date"
 #elif defined(__WXMSW__)
     #define COMMAND "command.com -c 'echo hi'"
+    #define SHELL_COMMAND "echo hi"
+    #define REDIRECT_COMMAND COMMAND
 #else
     #error "no command to exec"
 #endif // OS
 
-    if ( wxExecute(COMMAND) == 0 )
-        puts("\nOk.");
+    printf("Testing wxShell: ");
+    fflush(stdout);
+    if ( wxShell(SHELL_COMMAND) )
+        puts("Ok.");
+    else
+        puts("ERROR.");
+
+    printf("Testing wxExecute: ");
+    fflush(stdout);
+    if ( wxExecute(COMMAND, TRUE /* sync */) == 0 )
+        puts("Ok.");
+    else
+        puts("ERROR.");
+
+#if 0 // no, it doesn't work (yet?)
+    printf("Testing async wxExecute: ");
+    fflush(stdout);
+    if ( wxExecute(COMMAND) != 0 )
+        puts("Ok (command launched).");
+    else
+        puts("ERROR.");
+#endif // 0
+
+    printf("Testing wxExecute with redirection:\n");
+    wxArrayString output;
+    if ( wxExecute(REDIRECT_COMMAND, output) != 0 )
+    {
+        puts("ERROR.");
+    }
     else
-        puts("\nError.");
+    {
+        size_t count = output.GetCount();
+        for ( size_t n = 0; n < count; n++ )
+        {
+            printf("\t%s\n", output[n].c_str());
+        }
+
+        puts("Ok.");
+    }
 }
 
 #endif // TEST_EXECUTE
@@ -253,6 +301,92 @@ static void TestFileConfRead()
 
 #endif // TEST_FILECONF
 
+// ----------------------------------------------------------------------------
+// wxHashTable
+// ----------------------------------------------------------------------------
+
+#ifdef TEST_HASH
+
+#include <wx/hash.h>
+
+struct Foo
+{
+    Foo(int n_) { n = n_; count++; }
+    ~Foo() { count--; }
+
+    int n;
+
+    static size_t count;
+};
+
+size_t Foo::count = 0;
+
+WX_DECLARE_LIST(Foo, wxListFoos);
+WX_DECLARE_HASH(Foo, wxListFoos, wxHashFoos);
+
+#include <wx/listimpl.cpp>
+
+WX_DEFINE_LIST(wxListFoos);
+
+static void TestHash()
+{
+    puts("*** Testing wxHashTable ***\n");
+
+    {
+        wxHashFoos hash;
+        hash.DeleteContents(TRUE);
+
+        printf("Hash created: %u foos in hash, %u foos totally\n",
+               hash.GetCount(), Foo::count);
+
+        static const int hashTestData[] =
+        {
+            0, 1, 17, -2, 2, 4, -4, 345, 3, 3, 2, 1,
+        };
+
+        size_t n;
+        for ( n = 0; n < WXSIZEOF(hashTestData); n++ )
+        {
+            hash.Put(hashTestData[n], n, new Foo(n));
+        }
+
+        printf("Hash filled: %u foos in hash, %u foos totally\n",
+               hash.GetCount(), Foo::count);
+
+        puts("Hash access test:");
+        for ( n = 0; n < WXSIZEOF(hashTestData); n++ )
+        {
+            printf("\tGetting element with key %d, value %d: ",
+                   hashTestData[n], n);
+            Foo *foo = hash.Get(hashTestData[n], n);
+            if ( !foo )
+            {
+                printf("ERROR, not found.\n");
+            }
+            else
+            {
+                printf("%d (%s)\n", foo->n,
+                       (size_t)foo->n == n ? "ok" : "ERROR");
+            }
+        }
+
+        printf("\nTrying to get an element not in hash: ");
+
+        if ( hash.Get(1234) || hash.Get(1, 0) )
+        {
+            puts("ERROR: found!");
+        }
+        else
+        {
+            puts("ok (not found)");
+        }
+    }
+
+    printf("Hash destroyed: %u foos left\n", Foo::count);
+}
+
+#endif // TEST_HASH
+
 // ----------------------------------------------------------------------------
 // MIME types
 // ----------------------------------------------------------------------------
@@ -555,11 +689,94 @@ static void TestBitOperations()
 
 #endif // TEST_LONGLONG
 
+// ----------------------------------------------------------------------------
+// sockets
+// ----------------------------------------------------------------------------
+
+#ifdef TEST_SOCKETS
+
+#include <wx/socket.h>
+
+static void TestSocketClient()
+{
+    puts("*** Testing wxSocketClient ***\n");
+
+    wxIPV4address addrDst;
+    addrDst.Hostname("www.wxwindows.org");
+    addrDst.Service(80);
+
+    wxSocketClient client;
+    if ( !client.Connect(addrDst) )
+    {
+        printf("ERROR: failed to connect to %s\n", addrDst.Hostname().c_str());
+    }
+    else
+    {
+        char buf[8192];
+
+        client.Write("get /front.htm\n", 17);
+        client.Read(buf, WXSIZEOF(buf));
+        printf("Server replied:\n%s", buf);
+    }
+}
+
+#endif // TEST_SOCKETS
+
+// ----------------------------------------------------------------------------
+// timers
+// ----------------------------------------------------------------------------
+
+#ifdef TEST_TIMER
+
+#include <wx/timer.h>
+#include <wx/utils.h>
+
+static void TestStopWatch()
+{
+    puts("*** Testing wxStopWatch ***\n");
+
+    wxStopWatch sw;
+    printf("Sleeping 3 seconds...");
+    wxSleep(3);
+    printf("\telapsed time: %ldms\n", sw.Time());
+
+    sw.Pause();
+    printf("Sleeping 2 more seconds...");
+    wxSleep(2);
+    printf("\telapsed time: %ldms\n", sw.Time());
+
+    sw.Resume();
+    printf("And 3 more seconds...");
+    wxSleep(3);
+    printf("\telapsed time: %ldms\n", sw.Time());
+
+    wxStopWatch sw2;
+    puts("\nChecking for 'backwards clock' bug...");
+    for ( size_t n = 0; n < 70; n++ )
+    {
+        sw2.Start();
+
+        for ( size_t m = 0; m < 100000; m++ )
+        {
+            if ( sw.Time() < 0 || sw2.Time() < 0 )
+            {
+                puts("\ntime is negative - ERROR!");
+            }
+        }
+
+        putchar('.');
+    }
+
+    puts(", ok.");
+}
+
+#endif // TEST_TIMER
+
 // ----------------------------------------------------------------------------
 // date time
 // ----------------------------------------------------------------------------
 
-#ifdef TEST_TIME
+#ifdef TEST_DATETIME
 
 #include <wx/date.h>
 
@@ -1499,7 +1716,7 @@ static void TestTimeCompatibility()
 
 #endif // 0
 
-#endif // TEST_TIME
+#endif // TEST_DATETIME
 
 // ----------------------------------------------------------------------------
 // threads
@@ -2217,11 +2434,23 @@ int main(int argc, char **argv)
     }
 #endif // TEST_LONGLONG
 
+#ifdef TEST_HASH
+    TestHash();
+#endif // TEST_HASH
+
 #ifdef TEST_MIME
     TestMimeEnum();
 #endif // TEST_MIME
 
-#ifdef TEST_TIME
+#ifdef TEST_SOCKETS
+    TestSocketClient();
+#endif // TEST_SOCKETS
+
+#ifdef TEST_TIMER
+    TestStopWatch();
+#endif // TEST_TIMER
+
+#ifdef TEST_DATETIME
     if ( 0 )
     {
         TestTimeSet();
@@ -2240,7 +2469,7 @@ int main(int argc, char **argv)
     TestTimeHolidays();
     if ( 0 )
         TestInteractive();
-#endif // TEST_TIME
+#endif // TEST_DATETIME
 
     wxUninitialize();