X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d6718dd17be552c69c7e4dbca183f6078998c042..4b32f8c79e13296b23a5ca95114e8db2c313f053:/tests/strings/strings.cpp diff --git a/tests/strings/strings.cpp b/tests/strings/strings.cpp index 317cf08a75..85e91dad86 100644 --- a/tests/strings/strings.cpp +++ b/tests/strings/strings.cpp @@ -52,6 +52,7 @@ private: CPPUNIT_TEST( ToULongLong ); #endif // wxLongLong_t CPPUNIT_TEST( ToDouble ); + CPPUNIT_TEST( WriteBuf ); CPPUNIT_TEST_SUITE_END(); void String(); @@ -74,6 +75,7 @@ private: void ToULongLong(); #endif // wxLongLong_t void ToDouble(); + void WriteBuf(); DECLARE_NO_COPY_CLASS(StringTestCase) }; @@ -461,18 +463,20 @@ enum static const struct ToLongData { const wxChar *str; - union - { #ifdef wxLongLong_t - wxLongLong_t llvalue; - wxULongLong_t ullvalue; + wxLongLong_t value; +#else + long value; #endif // wxLongLong_t - long lvalue; - unsigned long ulvalue; - }; - int flags; + long LValue() const { return value; } + unsigned long ULValue() const { return value; } +#ifdef wxLongLong_t + wxLongLong_t LLValue() const { return value; } + wxULongLong_t ULLValue() const { return (wxULongLong_t)value; } +#endif // wxLongLong_t + bool IsOk() const { return !(flags & Number_Invalid); } } longData[] = { @@ -509,7 +513,7 @@ void StringTestCase::ToLong() CPPUNIT_ASSERT_EQUAL( ld.IsOk(), wxString(ld.str).ToLong(&l) ); if ( ld.IsOk() ) - CPPUNIT_ASSERT_EQUAL( ld.lvalue, l ); + CPPUNIT_ASSERT_EQUAL( ld.LValue(), l ); } } @@ -525,7 +529,7 @@ void StringTestCase::ToULong() CPPUNIT_ASSERT_EQUAL( ld.IsOk(), wxString(ld.str).ToULong(&ul) ); if ( ld.IsOk() ) - CPPUNIT_ASSERT_EQUAL( ld.ulvalue, ul ); + CPPUNIT_ASSERT_EQUAL( ld.ULValue(), ul ); } } @@ -543,7 +547,7 @@ void StringTestCase::ToLongLong() CPPUNIT_ASSERT_EQUAL( ld.IsOk(), wxString(ld.str).ToLongLong(&l) ); if ( ld.IsOk() ) - CPPUNIT_ASSERT_EQUAL( ld.llvalue, l ); + CPPUNIT_ASSERT_EQUAL( ld.LLValue(), l ); } } @@ -559,7 +563,7 @@ void StringTestCase::ToULongLong() CPPUNIT_ASSERT_EQUAL( ld.IsOk(), wxString(ld.str).ToULongLong(&ul) ); if ( ld.IsOk() ) - CPPUNIT_ASSERT_EQUAL( ld.ullvalue, ul ); + CPPUNIT_ASSERT_EQUAL( ld.ULLValue(), ul ); } } @@ -600,3 +604,29 @@ void StringTestCase::ToDouble() CPPUNIT_ASSERT_EQUAL( ld.value, d ); } } + +void StringTestCase::WriteBuf() +{ + wxString s; + wxStrcpy(wxStringBuffer(s, 10), _T("foo")); + + CPPUNIT_ASSERT_EQUAL(_T('f'), s[0u]); + CPPUNIT_ASSERT_EQUAL(_T('o'), s[1]); + CPPUNIT_ASSERT_EQUAL(_T('o'), s[2]); + CPPUNIT_ASSERT_EQUAL(3u, s.length()); + + { + wxChar *p = s.GetWriteBuf(10); + wxStrcpy(p, _T("barrbaz")); + s.UngetWriteBuf(4); + + CPPUNIT_ASSERT_EQUAL(_T('b'), s[0u]); + CPPUNIT_ASSERT_EQUAL(_T('a'), s[1]); + CPPUNIT_ASSERT_EQUAL(_T('r'), s[2]); + CPPUNIT_ASSERT_EQUAL(_T('r'), s[3]); + CPPUNIT_ASSERT_EQUAL(4u, s.length()); + + CPPUNIT_ASSERT_EQUAL( 0, wxStrcmp(_T("barr"), s) ); + } +} +