From: Vadim Zeitlin Date: Sat, 16 Oct 2004 00:14:07 +0000 (+0000) Subject: added wxStringTokenizer::GetPosition() test X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/76c6fcbc315d53676d220bac80b5198849020804 added wxStringTokenizer::GetPosition() test git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29904 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/tests/strings/strings.cpp b/tests/strings/strings.cpp index d236d478e5..9053cf47b1 100644 --- a/tests/strings/strings.cpp +++ b/tests/strings/strings.cpp @@ -47,6 +47,7 @@ private: CPPUNIT_TEST( Extraction ); CPPUNIT_TEST( Find ); CPPUNIT_TEST( Tokenizer ); + CPPUNIT_TEST( TokenizerGetPosition ); CPPUNIT_TEST( Replace ); CPPUNIT_TEST( Match ); CPPUNIT_TEST( CaseChanges ); @@ -66,6 +67,7 @@ private: void Find(); void SingleTokenizerTest( wxChar *str, wxChar *delims, size_t count , wxStringTokenizerMode mode ); void Tokenizer(); + void TokenizerGetPosition(); void Replace(); void Match(); void CaseChanges(); @@ -302,6 +304,44 @@ void StringTestCase::Tokenizer() SingleTokenizerTest( _T("01-02/99"), _T("/-"), 3, wxTOKEN_RET_DELIMS ); } +// call this with the string to tokenize, delimeters to use and the expected +// positions (i.e. results of GetPosition()) after each GetNextToken() call, +// terminate positions with 0 +static void +DoTokenizerGetPosition(const wxChar *s, const wxChar *delims, int pos, ...) +{ + wxStringTokenizer tkz(s, delims); + + CPPUNIT_ASSERT( tkz.GetPosition() == 0 ); + + va_list ap; + va_start(ap, pos); + + for ( ;; ) + { + if ( !pos ) + { + CPPUNIT_ASSERT( !tkz.HasMoreTokens() ); + break; + } + + tkz.GetNextToken(); + + CPPUNIT_ASSERT( tkz.GetPosition() == (size_t)pos ); + + pos = va_arg(ap, int); + } + + va_end(ap); +} + +void StringTestCase::TokenizerGetPosition() +{ + DoTokenizerGetPosition(_T("foo"), _T("_"), 3, 0); + DoTokenizerGetPosition(_T("foo_bar"), _T("_"), 3, 7, 0); + DoTokenizerGetPosition(_T("foo_bar_"), _T("_"), 3, 7,8, 0); +} + void StringTestCase::Replace() { #define TEST_REPLACE( original , pos , len , replacement , result ) \