X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2f2f3e2ab722357efd72c3a51a29560b3e83237c..28f5082b3235a349ffc3b99eeacca5049ccd42dd:/samples/console/console.cpp?ds=sidebyside diff --git a/samples/console/console.cpp b/samples/console/console.cpp index d28203ecfb..f2c3a63aa3 100644 --- a/samples/console/console.cpp +++ b/samples/console/console.cpp @@ -72,6 +72,7 @@ #define TEST_LONGLONG #define TEST_MIME #define TEST_PATHLIST + #define TEST_ODBC #define TEST_REGCONF #define TEST_REGEX #define TEST_REGISTRY @@ -89,7 +90,7 @@ #undef TEST_ALL static const bool TEST_ALL = TRUE; #else - #define TEST_THREADS + #define TEST_ARRAYS static const bool TEST_ALL = FALSE; #endif @@ -1116,8 +1117,11 @@ WX_DECLARE_HASH_MAP( short, unsigned, wxIntegerHash, wxIntegerEqual, myTestHashMap3 ); WX_DECLARE_HASH_MAP( unsigned short, unsigned, wxIntegerHash, wxIntegerEqual, myTestHashMap4 ); -WX_DECLARE_HASH_MAP( wxString, wxString, wxStringHash, wxStringEqual, - myStringHashMap ); + +// same as: +// WX_DECLARE_HASH_MAP( wxString, wxString, wxStringHash, wxStringEqual, +// myStringHashMap ); +WX_DECLARE_STRING_HASH_MAP(wxString, myStringHashMap); typedef myStringHashMap::iterator Itor; @@ -1236,7 +1240,7 @@ static void TestHashMap() printf("*** Finished testing wxHashMap ***\n"); } -#endif TEST_HASHMAP +#endif // TEST_HASHMAP // ---------------------------------------------------------------------------- // wxList @@ -2342,6 +2346,22 @@ static void TestRegExInteractive() #endif // TEST_REGEX +// ---------------------------------------------------------------------------- +// database +// ---------------------------------------------------------------------------- + +#ifdef TEST_ODBC + +#include + +static void TestDbOpen() +{ + HENV henv; + wxDb db(henv); +} + +#endif // TEST_ODBC + // ---------------------------------------------------------------------------- // registry and related stuff // ---------------------------------------------------------------------------- @@ -4731,9 +4751,6 @@ static void TestThreadDelete() puts(""); } -// wxCondition test code -// ---------------------------------------------------------------------------- - class MyWaitingThread : public wxThread { public: @@ -4746,7 +4763,7 @@ public: virtual ExitCode Entry() { - printf("Thread %lu has started running.", GetId()); + printf("Thread %lu has started running.\n", GetId()); fflush(stdout); gs_cond.Signal(); @@ -4770,8 +4787,13 @@ static void TestThreadConditions() { wxCondition condition; + // otherwise its difficult to understand which log messages pertain to + // which condition + wxLogTrace("thread", "Local condition var is %08x, gs_cond = %08x", + condition.GetId(), gs_cond.GetId()); + // create and launch threads - MyWaitingThread *threads[2]; + MyWaitingThread *threads[10]; size_t n; for ( n = 0; n < WXSIZEOF(threads); n++ ) @@ -4785,7 +4807,7 @@ static void TestThreadConditions() } // wait until all threads run - printf("Main thread is waiting for the threads to start: "); + puts("Main thread is waiting for the other threads to start"); fflush(stdout); size_t nRunning = 0; @@ -4793,28 +4815,33 @@ static void TestThreadConditions() { gs_cond.Wait(); - putchar('.'); - fflush(stdout); - nRunning++; + + printf("Main thread: %u already running\n", nRunning); + fflush(stdout); } - puts("\nMain thread: all threads started up."); + puts("Main thread: all threads started up."); fflush(stdout); - // now wake them up -#if 0 + wxThread::Sleep(500); + +#if 1 + // now wake one of them up printf("Main thread: about to signal the condition.\n"); fflush(stdout); condition.Signal(); -#endif // 0 +#endif + + wxThread::Sleep(200); + // wake all the (remaining) threads up, so that they can exit printf("Main thread: about to broadcast the condition.\n"); fflush(stdout); condition.Broadcast(); - // give them time to terminate (dirty) - wxThread::Sleep(300); + // give them time to terminate (dirty!) + wxThread::Sleep(500); } #endif // TEST_THREADS @@ -4825,25 +4852,46 @@ static void TestThreadConditions() #ifdef TEST_ARRAYS -static void PrintArray(const char* name, const wxArrayString& array) -{ - printf("Dump of the array '%s'\n", name); +#include "wx/dynarray.h" - size_t nCount = array.GetCount(); - for ( size_t n = 0; n < nCount; n++ ) - { - printf("\t%s[%u] = '%s'\n", name, n, array[n].c_str()); - } -} +#define DefineCompare(name, T) \ + \ +int wxCMPFUNC_CONV name ## CompareValues(T first, T second) \ +{ \ + return first - second; \ +} \ + \ +int wxCMPFUNC_CONV name ## Compare(T* first, T* second) \ +{ \ + return *first - *second; \ +} \ + \ +int wxCMPFUNC_CONV name ## RevCompare(T* first, T* second) \ +{ \ + return *second - *first; \ +} \ + +DefineCompare(Short, short); +DefineCompare(Int, int); + +// test compilation of all macros +WX_DEFINE_ARRAY(short, wxArrayShort); +WX_DEFINE_SORTED_ARRAY(short, wxSortedArrayShortNoCmp); +WX_DEFINE_SORTED_ARRAY_CMP(short, ShortCompareValues, wxSortedArrayShort); +WX_DEFINE_SORTED_ARRAY_CMP(int, IntCompareValues, wxSortedArrayInt); -static void PrintArray(const char* name, const wxArrayInt& array) +WX_DECLARE_OBJARRAY(Bar, ArrayBars); +#include "wx/arrimpl.cpp" +WX_DEFINE_OBJARRAY(ArrayBars); + +static void PrintArray(const char* name, const wxArrayString& array) { printf("Dump of the array '%s'\n", name); size_t nCount = array.GetCount(); for ( size_t n = 0; n < nCount; n++ ) { - printf("\t%s[%u] = %d\n", name, n, array[n]); + printf("\t%s[%u] = '%s'\n", name, n, array[n].c_str()); } } @@ -4853,45 +4901,63 @@ int wxCMPFUNC_CONV StringLenCompare(const wxString& first, return first.length() - second.length(); } -int wxCMPFUNC_CONV IntCompare(int *first, - int *second) -{ - return *first - *second; -} - -int wxCMPFUNC_CONV IntRevCompare(int *first, - int *second) -{ - return *second - *first; -} - -static void TestArrayOfInts() -{ - puts("*** Testing wxArrayInt ***\n"); - - wxArrayInt a; - a.Add(1); - a.Add(17); - a.Add(5); - a.Add(3); - - puts("Initially:"); - PrintArray("a", a); - - puts("After sort:"); - a.Sort(IntCompare); - PrintArray("a", a); - - puts("After reverse sort:"); - a.Sort(IntRevCompare); - PrintArray("a", a); +#define TestArrayOf(name) \ + \ +static void PrintArray(const char* name, const wxSortedArray##name & array) \ +{ \ + printf("Dump of the array '%s'\n", name); \ + \ + size_t nCount = array.GetCount(); \ + for ( size_t n = 0; n < nCount; n++ ) \ + { \ + printf("\t%s[%u] = %d\n", name, n, array[n]); \ + } \ +} \ + \ +static void PrintArray(const char* name, const wxArray##name & array) \ +{ \ + printf("Dump of the array '%s'\n", name); \ + \ + size_t nCount = array.GetCount(); \ + for ( size_t n = 0; n < nCount; n++ ) \ + { \ + printf("\t%s[%u] = %d\n", name, n, array[n]); \ + } \ +} \ + \ +static void TestArrayOf ## name ## s() \ +{ \ + printf("*** Testing wxArray%s ***\n", #name); \ + \ + wxArray##name a; \ + a.Add(1); \ + a.Add(17); \ + a.Add(5); \ + a.Add(3); \ + \ + puts("Initially:"); \ + PrintArray("a", a); \ + \ + puts("After sort:"); \ + a.Sort(name ## Compare); \ + PrintArray("a", a); \ + \ + puts("After reverse sort:"); \ + a.Sort(name ## RevCompare); \ + PrintArray("a", a); \ + \ + wxSortedArray##name b; \ + b.Add(1); \ + b.Add(17); \ + b.Add(5); \ + b.Add(3); \ + \ + puts("Sorted array initially:"); \ + PrintArray("b", b); \ } -#include "wx/dynarray.h" - -WX_DECLARE_OBJARRAY(Bar, ArrayBars); -#include "wx/arrimpl.cpp" -WX_DEFINE_OBJARRAY(ArrayBars); +TestArrayOf(Short); +TestArrayOf(Int); static void TestArrayOfObjects() { @@ -5466,11 +5532,10 @@ int main(int argc, char **argv) PrintArray("a1", a1); TestArrayOfObjects(); + TestArrayOfShorts(); } - else - { - TestArrayOfInts(); - } + + TestArrayOfInts(); #endif // TEST_ARRAYS #ifdef TEST_DIR @@ -5581,23 +5646,6 @@ int main(int argc, char **argv) TestFtpWuFtpd(); #endif // TEST_FTP -#ifdef TEST_THREADS - int nCPUs = wxThread::GetCPUCount(); - printf("This system has %d CPUs\n", nCPUs); - if ( nCPUs != -1 ) - wxThread::SetConcurrency(nCPUs); - - if ( 0 ) - { - TestDetachedThreads(); - TestJoinableThreads(); - TestThreadSuspend(); - TestThreadDelete(); - } - - TestThreadConditions(); -#endif // TEST_THREADS - #ifdef TEST_LONGLONG // seed pseudo random generator srand((unsigned)time(NULL)); @@ -5629,14 +5677,14 @@ int main(int argc, char **argv) #ifdef TEST_MIME wxLog::AddTraceMask(_T("mime")); - if ( 1 ) + if ( TEST_ALL ) { TestMimeEnum(); TestMimeOverride(); TestMimeFilename(); } - else - TestMimeAssociate(); + + TestMimeAssociate(); #endif // TEST_MIME #ifdef TEST_INFO_FUNCTIONS @@ -5652,6 +5700,10 @@ int main(int argc, char **argv) TestPathList(); #endif // TEST_PATHLIST +#ifdef TEST_ODBC + TestDbOpen(); +#endif // TEST_ODBC + #ifdef TEST_REGCONF TestRegConfWrite(); #endif // TEST_REGCONF @@ -5685,6 +5737,23 @@ int main(int argc, char **argv) TestMemoryStream(); #endif // TEST_STREAMS +#ifdef TEST_THREADS + int nCPUs = wxThread::GetCPUCount(); + printf("This system has %d CPUs\n", nCPUs); + if ( nCPUs != -1 ) + wxThread::SetConcurrency(nCPUs); + + if ( TEST_ALL ) + { + TestDetachedThreads(); + TestJoinableThreads(); + TestThreadSuspend(); + TestThreadDelete(); + } + + TestThreadConditions(); +#endif // TEST_THREADS + #ifdef TEST_TIMER TestStopWatch(); #endif // TEST_TIMER