+ puts("");
+}
+
+#endif // TEST_THREADS
+
+// ----------------------------------------------------------------------------
+// arrays
+// ----------------------------------------------------------------------------
+
+#ifdef TEST_ARRAYS
+
+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] = '%s'\n", name, n, array[n].c_str());
+ }
+}
+
+#endif // TEST_ARRAYS
+
+// ----------------------------------------------------------------------------
+// strings
+// ----------------------------------------------------------------------------
+
+#ifdef TEST_STRINGS
+
+#include "wx/timer.h"
+
+void TestString()
+{
+ wxStopWatch sw;
+
+ wxString a, b, c;
+
+ a.reserve (128);
+ b.reserve (128);
+ c.reserve (128);
+
+ for (int i = 0; i < 1000000; ++i)
+ {
+ a = "Hello";
+ b = " world";
+ c = "! How'ya doin'?";
+ a += b;
+ a += c;
+ c = "Hello world! What's up?";
+ if (c != a)
+ c = "Doh!";
+ }
+
+ printf ("TestString elapsed time: %ld\n", sw.Time());
+}
+
+void TestPChar()
+{
+ wxStopWatch sw;
+
+ char a [128];
+ char b [128];
+ char c [128];
+
+ for (int i = 0; i < 1000000; ++i)
+ {
+ strcpy (a, "Hello");
+ strcpy (b, " world");
+ strcpy (c, "! How'ya doin'?");
+ strcat (a, b);
+ strcat (a, c);
+ strcpy (c, "Hello world! What's up?");
+ if (strcmp (c, a) == 0)
+ strcpy (c, "Doh!");
+ }
+
+ printf ("TestPChar elapsed time: %ld\n", sw.Time());
+}
+
+#endif // TEST_STRINGS
+
+// ----------------------------------------------------------------------------
+// entry point
+// ----------------------------------------------------------------------------
+
+int main(int argc, char **argv)
+{
+ if ( !wxInitialize() )
+ {
+ fprintf(stderr, "Failed to initialize the wxWindows library, aborting.");
+ }
+
+#ifdef TEST_STRINGS
+ TestPChar();
+ TestString();
+#endif // TEST_STRINGS
+
+#ifdef TEST_ARRAYS
+ wxArrayString a1;
+ a1.Add("tiger");
+ a1.Add("cat");
+ a1.Add("lion");
+ a1.Add("dog");
+ a1.Add("human");
+ a1.Add("ape");
+
+ puts("*** Initially:");
+
+ PrintArray("a1", a1);
+
+ wxArrayString a2(a1);
+ PrintArray("a2", a2);
+
+ wxSortedArrayString a3(a1);
+ PrintArray("a3", a3);
+
+ puts("*** After deleting a string from a1");
+ a1.Remove(2);
+
+ 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);
+#endif // TEST_ARRAYS
+
+#ifdef TEST_LOG
+ wxString s;
+ for ( size_t n = 0; n < 8000; n++ )