1. bug in wxString::find_first_of() fixed

2. new wxStringTokenizer class and the docs for it


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5766 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2000-01-31 20:46:49 +00:00
parent 54744d3ab7
commit bbf8fc5391
5 changed files with 237 additions and 101 deletions

View File

@@ -29,16 +29,16 @@
// what to test?
#define TEST_ARRAYS
#define TEST_CMDLINE
#define TEST_DIR
#define TEST_EXECUTE
#define TEST_LOG
#define TEST_LONGLONG
#define TEST_MIME
//#define TEST_ARRAYS
//#define TEST_CMDLINE
//#define TEST_DIR
//#define TEST_EXECUTE
//#define TEST_LOG
//#define TEST_LONGLONG
//#define TEST_MIME
#define TEST_STRINGS
#define TEST_THREADS
#define TEST_TIME
//#define TEST_THREADS
//#define TEST_TIME
// ============================================================================
// implementation
@@ -1699,6 +1699,7 @@ void PrintArray(const char* name, const wxArrayString& array)
#ifdef TEST_STRINGS
#include "wx/timer.h"
#include "wx/tokenzr.h"
static void TestString()
{
@@ -1826,6 +1827,77 @@ static void TestStringFind()
puts("");
}
// replace TABs with \t and CRs with \n
static wxString MakePrintable(const wxChar *s)
{
wxString str(s);
(void)str.Replace(_T("\t"), _T("\\t"));
(void)str.Replace(_T("\n"), _T("\\n"));
(void)str.Replace(_T("\r"), _T("\\r"));
return str;
}
static void TestStringTokenizer()
{
puts("*** Testing wxStringTokenizer ***");
static const struct StringTokenizerTest
{
const wxChar *str; // string to tokenize
const wxChar *delims; // delimiters to use
size_t count; // count of token
bool with; // return tokens with delimiters?
} tokenizerTestData[] =
{
{ _T(""), _T(" "), 0, FALSE },
{ _T("Hello, world"), _T(" "), 2, FALSE },
{ _T("Hello, world"), _T(","), 2, FALSE },
{ _T("Hello, world!"), _T(",!"), 3, TRUE },
{ _T("username:password:uid:gid:gecos:home:shell"), _T(":"), 7, FALSE },
{ _T("1 \t3\t4 6 "), wxDEFAULT_DELIMITERS, 9, TRUE },
{ _T("01/02/99"), _T("/-"), 3, FALSE },
};
for ( size_t n = 0; n < WXSIZEOF(tokenizerTestData); n++ )
{
const StringTokenizerTest& tt = tokenizerTestData[n];
wxStringTokenizer tkz(tt.str, tt.delims, tt.with);
size_t count = tkz.CountTokens();
printf(_T("String '%s' has %u tokens delimited by '%s' "),
tt.str,
count,
MakePrintable(tt.delims).c_str());
if ( count == tt.count )
{
puts(_T("(ok)"));
}
else
{
printf(_T("(ERROR: should be %u)\n"), tt.count);
continue;
}
// now show the tokens themselves
size_t count2 = 0;
while ( tkz.HasMoreTokens() )
{
printf(_T("\ttoken %u: '%s'\n"),
++count2,
MakePrintable(tkz.GetNextToken()).c_str());
}
if ( count2 != count )
{
puts(_T("ERROR: token count mismatch"));
}
}
puts("");
}
#endif // TEST_STRINGS
// ----------------------------------------------------------------------------
@@ -1889,8 +1961,9 @@ int main(int argc, char **argv)
{
TestStringSub();
TestStringFormat();
TestStringFind();
}
TestStringFind();
TestStringTokenizer();
#endif // TEST_STRINGS
#ifdef TEST_ARRAYS