X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d6718dd17be552c69c7e4dbca183f6078998c042..58afa32bf44fa638712bf56d46776ff7424c5282:/tests/strings/strings.cpp diff --git a/tests/strings/strings.cpp b/tests/strings/strings.cpp index 317cf08a75..fac4253275 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) }; @@ -353,6 +355,26 @@ void StringTestCase::Compare() CPPUNIT_ASSERT( s1 != neq3 ); CPPUNIT_ASSERT( s1 != neq4 ); + CPPUNIT_ASSERT( s1 == wxT("AHH") ); + CPPUNIT_ASSERT( s1 != wxT("no") ); + CPPUNIT_ASSERT( s1 < wxT("AZ") ); + CPPUNIT_ASSERT( s1 <= wxT("AZ") ); + CPPUNIT_ASSERT( s1 <= wxT("AHH") ); + CPPUNIT_ASSERT( s1 > wxT("AA") ); + CPPUNIT_ASSERT( s1 >= wxT("AA") ); + CPPUNIT_ASSERT( s1 >= wxT("AHH") ); + + // test comparison with C strings in Unicode build (must work in ANSI as + // well, of course): + CPPUNIT_ASSERT( s1 == "AHH" ); + CPPUNIT_ASSERT( s1 != "no" ); + CPPUNIT_ASSERT( s1 < "AZ" ); + CPPUNIT_ASSERT( s1 <= "AZ" ); + CPPUNIT_ASSERT( s1 <= "AHH" ); + CPPUNIT_ASSERT( s1 > "AA" ); + CPPUNIT_ASSERT( s1 >= "AA" ); + CPPUNIT_ASSERT( s1 >= "AHH" ); + // wxString _s1 = wxT("A\0HH"); // wxString _eq = wxT("A\0HH"); // wxString _neq1 = wxT("H\0AH"); @@ -461,18 +483,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 +533,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 +549,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 +567,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 +583,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 +624,30 @@ 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((size_t)3, s.length()); + + + { + wxStringBufferLength buf(s, 10); + wxStrcpy(buf, _T("barrbaz")); + buf.SetLength(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((size_t)4, s.length()); + + CPPUNIT_ASSERT_EQUAL( 0, wxStrcmp(_T("barr"), s) ); +} +