X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8d5eff606ae62a36ea2ccecc017a810081cdc22d..28f5082b3235a349ffc3b99eeacca5049ccd42dd:/samples/console/console.cpp diff --git a/samples/console/console.cpp b/samples/console/console.cpp index 33bafc912b..f2c3a63aa3 100644 --- a/samples/console/console.cpp +++ b/samples/console/console.cpp @@ -90,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 @@ -1117,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; @@ -1237,7 +1240,7 @@ static void TestHashMap() printf("*** Finished testing wxHashMap ***\n"); } -#endif TEST_HASHMAP +#endif // TEST_HASHMAP // ---------------------------------------------------------------------------- // wxList @@ -4790,7 +4793,7 @@ static void TestThreadConditions() condition.GetId(), gs_cond.GetId()); // create and launch threads - MyWaitingThread *threads[5]; + MyWaitingThread *threads[10]; size_t n; for ( n = 0; n < WXSIZEOF(threads); n++ ) @@ -4823,13 +4826,15 @@ static void TestThreadConditions() wxThread::Sleep(500); -#if 0 +#if 1 // now wake one of them up printf("Main thread: about to signal the condition.\n"); fflush(stdout); condition.Signal(); #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); @@ -4847,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()); } } @@ -4875,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; +#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); \ } -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); -} - -#include "wx/dynarray.h" - -WX_DECLARE_OBJARRAY(Bar, ArrayBars); -#include "wx/arrimpl.cpp" -WX_DEFINE_OBJARRAY(ArrayBars); +TestArrayOf(Short); +TestArrayOf(Int); static void TestArrayOfObjects() { @@ -5488,11 +5532,10 @@ int main(int argc, char **argv) PrintArray("a1", a1); TestArrayOfObjects(); + TestArrayOfShorts(); } - else - { - TestArrayOfInts(); - } + + TestArrayOfInts(); #endif // TEST_ARRAYS #ifdef TEST_DIR