]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxStringTokenizer::GetPosition() test
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 16 Oct 2004 00:14:07 +0000 (00:14 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 16 Oct 2004 00:14:07 +0000 (00:14 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29904 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

tests/strings/strings.cpp

index d236d478e55d237697ac8912a03e4e9c711a1156..9053cf47b1d63ca25384379d692f63a8a8067b00 100644 (file)
@@ -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 ) \